日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bootstrap模态框 遮挡_Bootstrap Modal遮罩弹出层

發布時間:2025/3/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bootstrap模态框 遮挡_Bootstrap Modal遮罩弹出层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前發表過一篇文章叫Bootstrap Modal彈窗代碼,其實那個只是一個彈出層代碼而已,并不是仿造Bootstrap的,Bootstrap Modal是給外層添加固定fixed,然后內容使用自適應靠上居中方式。今天分享的這篇文章正是這種方式。

HTML結構

考慮到內容區域需要居中對齊,所以至少要有一個div來定位和顯示背景,再用一個div居中內容,內容區域想分成header、body和footer。

×

標題

內容

添加樣式

透明背景用background和opacity來實現,也可以選擇rgba,只是IE8及以下瀏覽器不支持。為了讓一個position為fixed的div鋪滿整個窗口,可以將其top、right、left、bottom屬性全部設為0。

當內容區域過長時,模擬瀏覽器縱向滾動條,方法是將body(或HTML)的overflow屬性設為hidden,禁止瀏覽器真正的滾動條出現,然后給彈窗最外層的div設置overflow-y:auto,用這個div的滾動條模擬瀏覽器滾動條。

彈窗打開關閉時滾動效果用css3 transition來實現。

.dialog-open{

overflow-y:hidden !important;

}

.rs-overlay{

background:#000;

opacity:.5;

filter: alpha(opacity=50);

position: fixed;

z-index: 1000;

top:0;

bottom:0;

left:0;

right:0;

display: none;

}

.rs-dialog{

display: none;

opacity: 0;

overflow: hidden;

position: fixed;

top:0;

bottom:0;

left:0;

right:0;

z-index: 1040;

-webkit-overflow-scrolling: touch;

outline: 0;

/*background: rgba(0,0,0,.5);*/

-webkit-transition: opacity .15s linear;

-o-transition: opacity .15s linear;

transition: opacity .15s linear;

}

.dialog-open .rs-dialog{

overflow-x:hidden;

overflow-y:auto;

}

.rs-dialog.in{

opacity: 1;

}

.rs-dialog .rs-dialog-box {

-webkit-transform: translate(0, -25%);

-ms-transform: translate(0, -25%);

-o-transform: translate(0, -25%);

transform: translate(0, -25%);

-webkit-transition: -webkit-transform 0.3s ease-out;

-o-transition: -o-transform 0.3s ease-out;

transition: transform 0.3s ease-out;

}

.rs-dialog.in .rs-dialog-box {

-webkit-transform: translate(0, 0);

-ms-transform: translate(0, 0);

-o-transform: translate(0, 0);

transform: translate(0, 0);

}

.rs-dialog .rs-dialog-box{

position: relative;

margin:30px auto;

width: 600px;

background-color: #ffffff;

border-radius:10px;

border: 1px solid #999999;

border: 1px solid rgba(0, 0, 0, 0.2);

-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);

box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);

}

.logged-in .rs-dialog .rs-dialog-box{

margin-top:60px;

}

.rs-dialog-box a.close{

position: absolute;

top: -12px;

right: -12px;

width: 25px;

height: 25px;

padding: 0;

line-height: 25px;

font-size:20px;

font-family:Arial,sans-serif;

font-weight:bold;

text-decoration:none;

text-align:center;

text-shadow: 0 1px 0 #ffffff;

color: #fff;

background-color:#8b8b8b;

border:2px solid #fff;

border-radius: 25px;

box-shadow:0 0 3px 1px #999;

outline: none;

}

.rs-dialog-box a.close:hover{

background-color:#444;

}

.rs-dialog-header{

padding: 20px;

border-bottom: 1px solid #e5e5e5;

}

.rs-dialog-header h3{

font-size: 18px;

}

.rs-dialog-body{

padding: 20px;

line-height: 1.4

}

.rs-dialog-body p{

margin-bottom:10px;

}

.rs-dialog-footer{

padding: 20px;

border-top:1px solid #e5e5e5;

overflow: hidden;

}

@media (max-width: 767px) {

.rs-dialog .rs-dialog-box {

width: auto;

margin: 30px 20px;

}

}

添加控制腳本

大部分用css實現,所以腳本通過簡單的addClass和removeClass就可以控制開關。

還可以增加點擊彈窗外部關閉窗口的功能。

jQuery(document).ready(function($){

$('body').append('

$("a[rel='rs-dialog']").each(function(){

var trigger = $(this);

var rs_dialog = $('#' + trigger.data('target'));

var rs_box = rs_dialog.find('.rs-dialog-box');

var rs_close = rs_dialog.find('.close');

var rs_overlay = $('.rs-overlay');

if( !rs_dialog.length ) return true;

// Open dialog

trigger.click(function(){

//Get the scrollbar width and avoid content being pushed

var w1 = $(window).width();

$('html').addClass('dialog-open');

var w2 = $(window).width();

c = w2-w1 + parseFloat($('body').css('padding-right'));

if( c > 0 ) $('body').css('padding-right', c + 'px' );

rs_overlay.fadeIn('fast');

rs_dialog.show( 'fast', function(){

rs_dialog.addClass('in');

});

return false;

});

// Close dialog when clicking on the close button

rs_close.click(function(e){

rs_dialog.removeClass('in').delay(150).queue(function(){

rs_dialog.hide().dequeue();

rs_overlay.fadeOut('slow');

$('html').removeClass('dialog-open');

$('body').css('padding-right', '');

});

return false;

});

// Close dialog when clicking outside the dialog

rs_dialog.click(function(e){

rs_close.trigger('click');

});

rs_box.click(function(e){

e.stopPropagation();

});

});

});

防止網頁內容偏移

打開彈窗時給body增加overflow:hidden屬性,導致滾動條消失,這時會使網頁的內容往右移動一下,待彈窗打開滾動條再出現時,又會復原,視覺效果不友好。如果在有滾動條的情況下知道其寬度,給body增加padding-right屬性就可以抵消這個便宜效果。

這個方法在于江水博客關于彈窗的文章里找到了,在open dialog的click時間中引用了文章提到的最后一種方法。

觸發彈窗

最后,根據上面的腳本,觸發彈窗的鏈接如下

Launch Demo Modal

rel="rs-dialog"表示這是彈窗觸發鏈接

data-target="myModal"表示要打開HTML ID為myModal的彈窗。

演示和下載

[dmengl2v]演示地址 下載來源[/dmengl2v]

總結

以上是生活随笔為你收集整理的bootstrap模态框 遮挡_Bootstrap Modal遮罩弹出层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。