Cómo hacer que la rutina de arranque de Twitter sea de pantalla completa


160
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-body">
    <%= image_tag "Background.jpg" %>
  </div>
</div>

¿Cómo hago una ventana emergente modal de bootstrap de Twitter para el código anterior? Intenté jugar con CSS pero no pude hacerlo de la manera que quería. ¿Alguien puede ayudarme con eso?

Respuestas:


280

Lo logré en Bootstrap 3 con el siguiente código:

.modal-dialog {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.modal-content {
  height: auto;
  min-height: 100%;
  border-radius: 0;
}

En general, cuando tenga preguntas sobre problemas de espacio / relleno, intente hacer clic derecho (o cmd + hacer clic en mac) en el elemento y seleccione "inspeccionar elemento" en Chrome o "inspeccionar elemento con firebug" en Firefox. Intente seleccionar diferentes elementos HTML en el panel "elementos" y edite el CSS a la derecha en tiempo real hasta que obtenga el relleno / espaciado que desea.

Aquí hay una demostración en vivo

Aquí hay un enlace al violín


12
También agregaría margin: 0a .modal-dialog.
harrison4

10
Por cierto: .modal-contentla altura se rompe cuando el contenido se desborda en la parte inferior y se desplaza hacia abajo. Debería sermin-height: 100%; height: auto;
Yanick Rochon

3
Si está diseñando para una aplicación móvil, puede colocar el CSS de Chris dentro de una consulta de medios para tener un ancho modal normal para pantallas más anchas @media (max-width: 768px) {...}
Nicolas Connault

también puede agregar .modal {padding: ... px} si necesita "casi" modal de pantalla completa
andrii

8
.modal-dialogtambién es necesario max-width: 100%;para el arranque 4
Anand Rockzz

25

La solución elegida no conserva el estilo de la esquina redonda. Para preservar las esquinas redondeadas, debe reducir un poco el ancho y la altura y eliminar el radio del borde 0. Además, no muestra la barra de desplazamiento vertical ...

.modal-dialog {
  width: 98%;
  height: 92%;
  padding: 0;
}

.modal-content {
  height: 99%;
}

1
una respuesta más correcta que conserva la sensación de modelo con esquinas redondeadas, la respuesta aceptada presenta una capa superpuesta en lugar de modal
Clain Dsilva

Si el modal está ocupando la pantalla completa, se vería horrible (en mi humilde opinión) si tiene esquinas redondeadas a su alrededor.
Demenciales el

16

Para bootstrap 4 tengo que agregar una consulta de medios con max-width: none

@media (min-width: 576px) {
  .modal-dialog { max-width: none; }
}

.modal-dialog {
  width: 98%;
  height: 92%;
  padding: 0;
}

.modal-content {
  height: 99%;
}

16

Se me ocurrió una solución "receptiva" para modales de pantalla completa:

Modos de pantalla completa que se pueden habilitar solo en ciertos puntos de interrupción . De esta forma, el modal mostrará "normal" en pantallas más anchas (de escritorio) y pantalla completa en pantallas más pequeñas (tableta o móvil) , lo que le da la sensación de una aplicación nativa.

Implementado para Bootstrap 3 y Bootstrap 4 .

Bootstrap v4

El siguiente código genérico debería funcionar:

.modal {
  padding: 0 !important; // override inline padding-right added from js
}
.modal .modal-dialog {
  width: 100%;
  max-width: none;
  height: 100%;
  margin: 0;
}
.modal .modal-content {
  height: 100%;
  border: 0;
  border-radius: 0;
}
.modal .modal-body {
  overflow-y: auto;
}

Al incluir el código scss a continuación, genera las siguientes clases que deben agregarse al .modalelemento:

+---------------+---------+---------+---------+---------+---------+
|               |   xs    |   sm    |   md    |   lg    |   xl    | 
|               | <576px  | 576px  | 768px  | 992px  | 1200px |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen    |  100%   | default | default | default | default | 
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-sm |  100%   |  100%   | default | default | default | 
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-md |  100%   |  100%   |  100%   | default | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-lg |  100%   |  100%   |  100%   |  100%   | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-xl |  100%   |  100%   |  100%   |  100%   |  100%   |
+---------------+---------+---------+---------+---------+---------+

El código scss es:

@mixin modal-fullscreen() {
  padding: 0 !important; // override inline padding-right added from js

  .modal-dialog {
    width: 100%;
    max-width: none;
    height: 100%;
    margin: 0;
  }

  .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }

  .modal-body {
    overflow-y: auto;
  }

}

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-down($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .modal-fullscreen#{$infix} {
      @include modal-fullscreen();
    }
  }
}

Demostración en Codepen: https://codepen.io/andreivictor/full/MWYNPBV/


Bootstrap v3

Según las respuestas anteriores a este tema (@Chris J, @kkarli), el siguiente código genérico debería funcionar:

.modal {
  padding: 0 !important; // override inline padding-right added from js
}

.modal .modal-dialog {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.modal .modal-content {
  height: auto;
  min-height: 100%;
  border: 0 none;
  border-radius: 0;
  box-shadow: none;
}

Si desea usar modales receptivos a pantalla completa, use las siguientes clases que deben agregarse al .modalelemento:

  • .modal-fullscreen-md-down- el modal es pantalla completa para pantallas más pequeñas que 1200px.
  • .modal-fullscreen-sm-down- el modal es pantalla completa para pantallas más pequeñas que 922px.
  • .modal-fullscreen-xs-down- el modal es pantalla completa para pantallas más pequeñas que 768px.

Echa un vistazo al siguiente código:

/* Extra small devices (less than 768px) */
@media (max-width: 767px) {
  .modal-fullscreen-xs-down {
    padding: 0 !important;
  }
  .modal-fullscreen-xs-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-xs-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  } 
}

/* Small devices (less than 992px) */
@media (max-width: 991px) {
  .modal-fullscreen-sm-down {
    padding: 0 !important;
  }
  .modal-fullscreen-sm-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-sm-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }
}

/* Medium devices (less than 1200px) */
@media (max-width: 1199px) {
  .modal-fullscreen-md-down {
    padding: 0 !important;
  }
  .modal-fullscreen-md-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-md-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }
}

La demostración está disponible en Codepen: https://codepen.io/andreivictor/full/KXNdoO .


Aquellos que usan Sass como preprocesador pueden aprovechar la siguiente combinación:

@mixin modal-fullscreen() {
  padding: 0 !important; // override inline padding-right added from js

  .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }

  .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }

}

11

La siguiente clase hará un modal de pantalla completa en Bootstrap:

.full-screen {
    width: 100%;
    height: 100%;
    margin: 0;
    top: 0;
    left: 0;
}

No estoy seguro de cómo está estructurado el contenido interno de su modal, esto puede tener un efecto en la altura general dependiendo del CSS asociado con él.


¿Qué es .fullscreen? Incluí el CSS en #myModal, funcionó para el ancho pero no para la altura.
Hrishikesh Sardar

.fullscreenes una clase que creé para resolver el problema, no está incluida en Bootstrap. ¿Puedes publicar una muestra de tu código en JSFiddle o CodePen ? No puedo ayudarte sin ver tu código.
micjamking

para agregar altura, debe agregar altura en model-body no en #myModal.
QasimRamzan

9

para bootstrap 4

agregar clases:

.full_modal-dialog {
  width: 98% !important;
  height: 92% !important;
  min-width: 98% !important;
  min-height: 92% !important;
  max-width: 98% !important;
  max-height: 92% !important;
  padding: 0 !important;
}

.full_modal-content {
  height: 99% !important;
  min-height: 99% !important;
  max-height: 99% !important;
}

y en HTML:

<div role="document" class="modal-dialog full_modal-dialog">
    <div class="modal-content full_modal-content">

7

El fragmento de @Chris J tuvo algunos problemas con los márgenes y el desbordamiento. Los cambios propuestos por @YanickRochon y @Joana, basados ​​en el fiddel de @Chris J se pueden encontrar en el siguiente jsfiddle .

Ese es el código CSS que funcionó para mí:

.modal-dialog {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}
.modal-content {
    height: 100%;
    min-height: 100%;
    height: auto;
    border-radius: 0;
}

2

Debe configurar sus etiquetas DIV como se muestra a continuación.

Encuentre más detalles> http://thedeveloperblog.com/bootstrap-modal-with-full-size-and-scrolling

</style>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
   More Details
</button>
</br>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-content">
        <div class="container">;
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h3 class="modal-title" id="myModalLabel">Modal Title</h3>
          </div>
              <div class="modal-body" >
                Your modal text 
              </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          </div>
        </div>
    </div>                                      
</div>

-1

Mi variación de la solución: (scss)

  .modal {
        .modal-dialog.modal-fs {
            width: 100%;
            margin: 0;
            box-shadow: none;
            height: 100%;
            .modal-content {
                border: none;
                border-radius: 0;
                box-shadow: none;
                box-shadow: none;
                height: 100%;
            }
        }
    }

(css)

.modal .modal-dialog.modal-fs {
  width: 100%;
  margin: 0;
  box-shadow: none;
  height: 100%;
}
.modal .modal-dialog.modal-fs .modal-content {
  border: none;
  border-radius: 0;
  box-shadow: none;
  box-shadow: none;
  height: 100%;
}

-1
.modal.in .modal-dialog {
 width:100% !important; 
 min-height: 100%;
 margin: 0 0 0 0 !important;
 bottom: 0px !important;
 top: 0px;
}


.modal-content {
    border:0px solid rgba(0,0,0,.2) !important;
    border-radius: 0px !important;
    -webkit-box-shadow: 0 0px 0px rgba(0,0,0,.5) !important;
    box-shadow: 0 3px 9px rgba(0,0,0,.5) !important;
    height: auto;
    min-height: 100%;
}

.modal-dialog {
 position: fixed !important;
 margin:0px !important;
}

.bootstrap-dialog .modal-header {
    border-top-left-radius: 0px !important; 
    border-top-right-radius: 0px !important;
}


@media (min-width: 768px)
.modal-dialog {
    width: 100% !important;
    margin: 0 !important;
}

2
Trate de explicar más claramente por qué esta es una respuesta a la pregunta.
Jeroen Heier

-1

Utilizar este:

.modal-full {
    min-width: 100%;
    margin: 0;
}

.modal-full .modal-content {
    min-height: 100vh;
}

y entonces:

<div id="myModal" class="modal" role="dialog">
    <div class="modal-dialog modal-full">
        <!-- Modal content-->
        <div class="modal-content ">
            <div class="modal-header ">                    
                <button type="button" class="close" data-dismiss="modal">&times; 
                </button>
                <h4 class="modal-title">hi</h4>
            </div>
            <div class="modal-body">
                <p>Some text in the modal.</p>
            </div>
        </div>

    </div>
</div>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.