Bootstrap modal que aparece bajo fondo


He usado el código para mi modal directamente desde el ejemplo de Bootstrap, y solo he incluido el bootstrap.js (y no bootstrap-modal.js). Sin embargo, mi modal aparece debajo del gris fundido (telón de fondo) y no es editable.

Así es como se ve:

modal escondiéndose detrás del telón de fondo

Ver este violínpara una manera de reproducir este problema. La estructura básica de ese código es así:

<body>
    <p>Lorem ipsum dolor sit amet.</p>    

    <div class="my-module">
        This container contains the modal code.
        <div class="modal fade">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-body">Modal</div>
                </div>
            </div>
        </div>
    </div>
</body>
body {
    padding-top: 50px;
}

.my-module {
    position: fixed;
    top: 0;
    left: 0;
}

Cualquier idea de por qué es esto o qué puedo hacer para ¿arreglar esto?

Author: Muhd, 2012-05-17

30 answers

Si el contenedor modal tiene una posición fija o relativa o está dentro de un elemento con posición fija o relativa este comportamiento ocurrirá.

Asegúrese de que el contenedor modal y todos sus elementos primarios estén posicionados de forma predeterminada para solucionar el problema.

Aquí hay un par de maneras de hacer esto:

  1. La forma más fácil es simplemente mover el div modal para que esté fuera de cualquier elemento con posicionamiento especial. Un buen lugar podría ser justo antes de la etiqueta del cuerpo de cierre </body>.
  2. Alternativamente, puede eliminar position: propiedades CSS del modal y sus ancestros hasta que el problema desaparezca. Sin embargo, esto podría cambiar el aspecto y las funciones de la página.
 525
Author: Muhd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-18 21:12:47

El problema tiene que ver con el posicionamiento de los contenedores padre. Puede "mover" fácilmente su modal desde estos contenedores antes de mostrarlo. Aquí está cómo hacerlo si usted estaba showing su modal usando js:

$('#myModal').appendTo("body").modal('show');

O, si inicia modal usando botones, suelte el .modal('show'); y simplemente haga:

$('#myModal').appendTo("body") 

Esto mantendrá toda la funcionalidad normal, permitiéndole mostrar el modal usando un botón.

 316
Author: Adam Albright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-07 17:11:46

Probé todas las opciones suministradas anteriormente, pero no logré que funcionara con ellas.

Lo que funcionó: establecer el índice z de la .modal-telón de fondo a -1.

.modal-backdrop {
  z-index: -1;
}
 143
Author: Jan van der Burgt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-14 01:07:16

También, asegúrese de que la versión de BootStrap css y js son los mismos. Diferentes versiones también pueden hacer que modal aparezca en segundo plano:

Por ejemplo:

Malo:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

Bueno:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
 140
Author: Sid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-28 07:43:34

También me he encontrado con este problema y ninguna de las soluciones funcionó para mí hasta que me di cuenta de que en realidad no necesito un telón de fondo. Puede eliminar fácilmente el telón de fondo con el siguiente código.

<div class="modal fade" id="createModal" data-backdrop="false">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4>Create Project</h4>
            </div>
            <div class="modal-body">Not yet made</div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

Nota : el atributo data-backdrop debe establecerse en false (otras opciones: static o true).

 85
Author: PieterVK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-24 11:16:07

Conseguí que funcionara dando un alto valor de z-index a la ventana modal DESPUÉS DE abrirla. Por ejemplo:

$("#myModal").modal("show");
$("#myModal").css("z-index", "1500");
 54
Author: Andrew Dyster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-12 07:24:39

La solución proporcionada por @Muhd es la mejor manera de hacerlo. Pero si está atascado en una situación en la que cambiar la estructura de la página no es una opción, use este truco:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="false" style="background-color: rgba(0, 0, 0, 0.5);">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal"
                aria-label="Close">
                <span aria-hidden="true">&times;</span>
            </button>
            <h4 class="modal-title" id="myModalLabel">Modal title</h4>
        </div>
        <div class="modal-body">...</div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
        </div>
    </div>
</div>

El truco aquí es data-backdrop="false" style="background-color: rgba(0, 0, 0, 0.5);" eliminando el telón de fondo predeterminado y creando uno ficticio configurando el color de fondo del diálogo en sí con algún alfa.

Actualización 1: Como señaló @Gustyn, hacer clic en el fondo no cierra el diálogo como se espera. Así que lograr que usted tiene que añadir un poco de código de Java script. Aquí hay un ejemplo de cómo se puede lograr esto.

$('.modal').click(function(event){
    $(event.target).modal('hide');
});
 25
Author: Krishnendu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-09 06:00:35

A pero tarde en esto, pero aquí hay una solución genérica -

    var checkeventcount = 1,prevTarget;
    $('.modal').on('show.bs.modal', function (e) {
        if(typeof prevTarget == 'undefined' || (checkeventcount==1 && e.target!=prevTarget))
        {  
          prevTarget = e.target;
          checkeventcount++;
          e.preventDefault();
          $(e.target).appendTo('body').modal('show');
        }
        else if(e.target==prevTarget && checkeventcount==2)
        {
          checkeventcount--;
        }
     });

Visite este enlace - Bootstrap 3 - desaparición modal debajo del telón de fondo cuando se utiliza una barra lateral fija para obtener más detalles.

 13
Author: Rohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:48

Otra forma de abordar esto es eliminar el z-index de .modal-backdrop en bootstrap.css. Esto hará que el telón de fondo para estar en el mismo nivel que el resto de su cuerpo (todavía se desvanecen) y su modal para estar en la parte superior.

.modal-backdrop se ve así

.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: #000000;
}
 9
Author: Samuel Bergeron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-26 01:41:21

Simplemente agregue dos líneas de CSS:

.modal-backdrop{z-index: 1050;}
.modal{z-index: 1060;}

El.modal-backdrop debe tener un valor de 1050 para configurarlo sobre la barra de navegación.

 9
Author: Wahyu Primadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-28 21:51:34

Simplemente he establecido:

#myModal {
    z-index: 1500;
}

Y funciona....

Para la pregunta original:

.my-module {
    z-index: 1500;
}
 7
Author: AmintaCode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-12 16:02:29

Este problema a menudo se puede experimentar cuando se usan cosas como degradados en CSS para cosas como fondos o incluso encabezados de acordeón.

Desafortunadamente, modificar o anular core Bootstrap CSS es indeseable, y puede llevar a efectos secundarios no deseados. El enfoque menos intrusivo es agregar data-backdrop="false", pero puede notar que el efecto de desvanecimiento ya no funciona como se esperaba.

Después de seguir las versiones recientes de Bootstrap, la versión 3.3.5 parece resolver este problema sin lado no deseado effects.

Descargar: https://github.com/twbs/bootstrap/releases/download/v3.3.5/bootstrap-3.3.5-dist.zip

Asegúrese de incluir los archivos CSS y JavaScript de la versión 3.3.5.

 6
Author: Richard Nalezynski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-10 04:10:39

Hola tuve el mismo problema, entonces me doy cuenta de que cuando usas bootsrap 3.1 A diferencia de las versiones anteriores de bootsrap (2.3.2) la estructura html del modal ha cambiado!

Debe envolver el cuerpo del encabezado modal y el pie de página con modal-dialog y modal-content

<div class="modal hide fade">

  <div class="modal-dialog">
    <div class="modal-content">

    **here goes the modal header body and footer**

    </div>
  </div>

 </div>
 5
Author: talsibony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-12 08:27:47

Tuve este problema y la forma más fácil de solucionarlo fue agregar z-index mayor que 1040 en el div modal-dialog:

<div class="modal-dialog" style="z-index: 1100;">

Creo que bootstrap crea un div modal-backdrop fade en el que en mi caso tiene el z-index 1040, así que si pones el modal-dialog encima de esto, ya no debería estar gris.

 5
Author: Chris OnDaRocks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-08 16:58:08

Usa esto en tu modal:

data-backdrop="false" 
 4
Author: Jonathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-14 15:27:52

Ninguna de las soluciones sugeridas anteriormente funcionó para mí, pero esta técnica resolvió el problema:

$('#myModal').on('shown.bs.modal', function() {
   //To relate the z-index make sure backdrop and modal are siblings
   $(this).before($('.modal-backdrop'));
   //Now set z-index of modal greater than backdrop
   $(this).css("z-index", parseInt($('.modal-backdrop').css('z-index')) + 1);
}); 
 4
Author: Javed Iqbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-05 11:40:36

Establece el índice z.modal a un valor más alto

Por ejemplo, .sidebarwrapper tiene z-index de 1100, por lo que establece el z-index de .modal a 1101

.modal {
    z-index: 1101;
}
 4
Author: A Mohudum Kamil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-03 06:42:38

Tengo una solución más ligera y mejor..

Se podría resolver fácilmente a través de algunos estilos CSS adicionales..

  1. Ocultar la clase .modal-backdrop (generada automáticamente desde Bootstrap.js)

    .modal-backdrop
    {
    display:none;
    visibility:hidden; 
    position:relative
    }
    
  2. Establezca el fondo de .modal en una imagen de fondo negro translúcido.

    .modal
    {
    background:url("http://bin.smwcentral.net/u/11361/BlackTransparentBackground.png")
    // translucent image from google images 
    z-index:1100; 
    }
    

Esto funcionará mejor si tiene un requisito que necesita que el modal esté dentro de un elemento y no cerca de la etiqueta </body>..

 4
Author: JM Tee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-19 14:07:28

En mi caso resolverlo, añadir esto en mi hoja de estilo:

.modal-backdrop{
  z-index:0;
}

Con Google debugger, puede examinar El TELÓN DE FONDO Del elemento Y modificar los atributos. Goog luck.

 4
Author: Ckevyn Ovalle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-11 21:53:15

En la barra de navegación navbar-fixed-top necesita z-index = 1041 y también si u usa bootstarp-combined.min.css el también cambia .navbar-fixed-top, .navbar-fixed-bottom z-index to 1041

 3
Author: Mohsin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-08 10:57:29

Cambie la posición absoluta a relativa.

.modal-backdrop {
    position: relative;
    /* ... */
}
 3
Author: Aristeu Roriz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-19 02:48:48

También puede eliminar el z-index de .modal-telón de fondo. El css resultante se vería así.

.modal-backdrop {
}
  .modal-backdrop.in {
    opacity: .35;
    filter: alpha(opacity=35); }
 3
Author: Matthew Gallegos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 20:38:23

Lo que encuentro es que:

En bootstrap 3.3.0 no está bien,pero cuando está en bootstrap 3.3.5 está bien.veamos el código. 3.3.0:

this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
    .prependTo(this.$element)

3.3.5

  this.$backdrop = $(document.createElement('div'))
        .addClass('modal-backdrop ' + animate)
        .appendTo(this.$body)
 3
Author: ttong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-23 10:00:51
$('.modal').insertAfter($('body'));
 3
Author: user109764,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-17 01:12:24

Esto cubriría todos los modales sin estropear ninguna de las animaciones o el comportamiento esperado..

$(document).on('show.bs.modal', '.modal', function () {
  $(this).appendTo('body');
});
 3
Author: Cam Tullos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-05 04:22:05

En mi caso, tenía un envoltorio con lo siguiente:

.wrapper { margin: 0 auto; position:relative; z-index:1;overflow:hidden;}

Solo eliminó el z-index:1 y no tiene idea de por qué solucionó el problema. también con seguridad la eliminación de la posición relativa hizo, pero lo necesitaba.

 2
Author: hsobhy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-21 07:04:01

En mi caso, la causa fue boostrap.min.css:) una vez que lo excluí de mi archivo html como referencia, el diálogo se mostró en forn del tono modal:)

 2
Author: xLanUserx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-23 14:21:37

Eliminé el telón de fondo modal.

.modal-backdrop {
    display:none;
}

Esta no es la mejor solución, pero funciona para mí.

 2
Author: CodeBriefly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-07 17:04:39

Me arreglé esto agregando estilo a continuación a la etiqueta DIV

style="background-color: rgba(0, 0, 0, 0.5);"

Y añadir css personalizado

.modal-backdrop {position: relative;}
 2
Author: RaymondLe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-05 03:48:53

Intente sobrescribir la clase .modal-abrir el valor de desbordamiento de oculto a visible.

.modal-open {
    overflow: visible;
}
 1
Author: wefra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 23:19:53