twitter-bootstrap – Bootstrap 3 modal在開啟時建立滾動條
上的示例程式碼,當開啟模態時,會出現一個滾動條,這也會將頁面上的內容向左移動.
碼:
<!-- Button trigger modal --> <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> Launch demo modal </button> <!-- Modal --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</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><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal -->
JSFIDDLE:http://jsfiddle.net/WqRBP/
我正在看的很多網站使用Bootstrap,他們沒有這個問題,那麼有什麼方便的解決這個問題嗎?
編輯:滾動條出現在Chrome和IE中,我還沒有在其他瀏覽器中測試過.
以下是我在JSFIDDLE中看到的內容:
發生問題的原因是當啟動模態時,Twitter Bootstrap總是將頁面15px向左移動.您可以通過將頁面移回右側來解決此問題 – 邊距右邊:-15px.這可以通過使用Bootstrap的模態提供的事件show.bs.modal和hidden.bs.modal來完成.
$('#myModal').bind('hidden.bs.modal', function () { $("html").css("margin-right", "0px"); }); $('#myModal').bind('show.bs.modal', function () { $("html").css("margin-right", "-15px"); });
供參考:
show.bs.modal:當呼叫show instance方法時,此事件會立即觸發.如果由點選導致,點選的元素可用作事件的relatedTarget屬性.
hidden.bs.modal:當模態從使用者隱藏完成時,會觸發此事件(將等待CSS轉換完成).
http://stackoverflow.com/questions/20829332/bootstrap-3-modal-creates-scrollbar-when-opened