Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twitter Bootstrap modal on mobile devices

Bootstrap modals don't work correctly on Android and iOS. The issue tracker acknowledges the problem but does not offer a working solution:

Modals in 2.0 are broken on mobile.

Modal window in 2.0 not positioning properly

The screen darkens but the modal itself is not visible in the viewport. It's possible to find it at the top of the page. The problem occurs when you've scrolled down on the page.

Here is a relevant portion of bootstrap-responsive.css:

.modal {     position:fixed;     top:50%;     left:50%;     z-index:1050;     max-height:500px;     overflow:auto;     width:560px;     background-color:#fff;     border:1px solid #999;     -webkit-border-radius:6px;     -moz-border-radius:6px;     border-radius:6px;     -webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);     -moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);     box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);     -webkit-background-clip:padding-box;     -moz-background-clip:padding-box;     background-clip:padding-box;     margin:-250px 0 0 -280px; } 

Is there a fix I can apply?

like image 944
ty. Avatar asked May 03 '12 18:05

ty.


People also ask

Do Bootstrap modals work on mobile?

Bootstrap modals don't work correctly on Android and iOS. The issue tracker acknowledges the problem but does not offer a working solution: Modals in 2.0 are broken on mobile. The screen darkens but the modal itself is not visible in the viewport.

Is Bootstrap modal responsive?

Bootstrap 5 Modal component. Responsive popup window with Bootstrap 5. Examples of with image, modal position i.e. center, z-index usage, modal fade animation, backdrop usage, modal size & more. Modal is a responsive popup used to display extra content.

How do I use popups in Bootstrap?

To trigger the modal window, you need to use a button or a link. Then include the two data-* attributes: data-toggle="modal" opens the modal window. data-target="#myModal" points to the id of the modal.

How do I open modal pop up image?

Images can be fitted in modal popup using Bootstrap by including <img> tag in the “modal-body” div. The “modal-body” div determines the main content of modal popup. By using the <img> tag, an image can be inserted into it.


2 Answers

EDIT: An unofficial Bootstrap Modal modification has been built to address responsive/mobile issues. This is perhaps the simplest and easiest way to remedy the problem.

There has since been a fix found in one of the issues you discussed earlier

in bootstrap-responsive.css

.modal {      position: fixed;      top: 3%;      right: 3%;      left: 3%;      width: auto;      margin: 0;  } .modal-body {      height: 60%;  } 

and in bootstrap.css

.modal-body {      max-height: 350px;      padding: 15px;      overflow-y: auto;      -webkit-overflow-scrolling: touch;   } 
like image 94
acconrad Avatar answered Sep 20 '22 15:09

acconrad


Gil's answer holds promise (the library he linked to) --- but for the time being, it still doesn't work when scrolled down on the mobile device.

I solved the issue for myself using just a snippet of CSS at the end of my CSS files:

@media (max-width: 767px) {   #content .modal.fade.in {     top: 5%;   } } 

The #content selector is simply an id that wraps my html so I can override Bootstrap's specificity (set to your own id wrapping your modal html).

The downside: It's not centered vertically on the mobile devices.

The upside: It's visible, and on smaller devices, a reasonably sized modal will take up much of the screen, so the "non-centering" won't be as apparent.

Why it works:

When you're at low screen sizes with Bootstrap's responsive CSS, for devices with smaller screens, it sets .modal.fade.in's 'top' to 'auto'. For some reason the mobile webkit browsers seem to have a hard time with figuring out the vertical placement with the "auto" assignment. So just switch it back to a fixed value and it works great.

Since the modal is already set to postition: absolute, the value is relative to the viewport's height, not the document height, so it works no matter how long the page is or where you're scrolled to.

like image 27
jlovison Avatar answered Sep 16 '22 15:09

jlovison