遮罩層彈出后红竭,禁止被遮罩部分滾動(dòng)

  • 需求:在彈出蒙層之后尤勋,底部頁面不會(huì)滾動(dòng),關(guān)閉蒙層恢復(fù)滾動(dòng)時(shí)茵宪,還在原先的位置

  • 網(wǎng)上查找的方法:

    • 方案:在禁止時(shí)最冰,document不滾動(dòng),body固定定位+寬度100%稀火,恢復(fù)時(shí)暖哨,document滾動(dòng),body靜態(tài)定位
    • 缺點(diǎn):允許滾動(dòng)時(shí)憾股,頁面會(huì)自動(dòng)回到頂部
  • 解決方案: 在禁止?jié)L動(dòng)時(shí)鹿蜀,記錄當(dāng)前位置,固定定位時(shí)也定在當(dāng)前位置服球,恢復(fù)時(shí)茴恰,定在當(dāng)前位置

  • jQuery寫法:

var topPos; //記錄彈出蒙層前,頁面的位置
//禁止?jié)L動(dòng)條滾動(dòng)
function stopScroll() {
    topPos = $(document).scrollTop(); //記錄頁面的位置
    console.log(topPos);
    $('document').css('overflow','hidden'); //隱藏滾動(dòng)條
    $('body').css({
          'position': 'fixed', //固定定位
          'top': -topPos + 'px', //讓底層頁面定位固定在蒙層彈出之前的位置
          'width': '100%' 
    });
}
//允許滾動(dòng)條滾動(dòng)
function openScroll() {
    $('document').css('overflow','scroll'); //顯示滾動(dòng)條
    $('body').css('position', 'static'); //靜態(tài)定位
    $('html,body').scrollTop(topPos); //關(guān)閉蒙層斩熊,讓頁面蒙層彈出之前的位置
    console.log($('html,body').scrollTop());
}
  • demo
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>彈出遮罩層后往枣,如何禁止底層頁面的滾動(dòng)</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .container {
            max-width: 750px;
            height: 2000px;
            margin: 0 auto;
            background-color: teal;
            font-size: 32px;
            font-weight: bold;
            color: #000;
            text-align: center;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }

        .showBtn {
            position: fixed;
            top: 50%;
            left: 0;
            transform: translateY(-50%);
            width: 100px;
            height: 50px;
            font-size: 20px;
            font-weight: bold;
            line-height: 50px;
            color: #fff;
            background-color: cornflowerblue;
            text-align: center;
            border-radius: 25px;
            margin: 30px auto 0;
            cursor: pointer;
        }

        .hideBtn {
            width: 100px;
            height: 50px;
            font-size: 20px;
            font-weight: bold;
            line-height: 50px;
            color: #fff;
            background-color: cornflowerblue;
            text-align: center;
            border-radius: 25px;
            margin: 30px auto 0;
            cursor: pointer;
        }

        .mask {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, .6);
            z-index: 999;
            font-size: 20px;
            color: #fff;
            font-weight: bold;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            display: none;
        }
        .bottomp{
            font-size: 32px;
            font-weight: bold;
            color: #000;
            text-align: center;
        }
    </style>
    <script src="./jquery.js"></script>
</head>

<body>
    <div class="container">
        <p>底部頁面</p>
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
        <p>5</p>
        <p>6</p>
        <p>7</p>
        <p>8</p>
        <p>9</p>
        <p>10</p>
        <p>11</p>
        <p>12</p>
        <p>13</p>
        <p>14</p>
        <p>15</p>
        <p>16</p>
        <p>17</p>
        <p>18</p>
        <p>19</p>
        <p>20</p>
        <p>21</p>
        <p class="bottomp">底部</p>
        <div class="showBtn">顯示蒙層</div>
    </div>
    <div class="mask">
        <p>蒙層</p>
        <div class="hideBtn">關(guān)閉蒙層</div>
    </div>
</body>
<script>
    $('.showBtn').click(function () {
        $('.mask').css('display', 'flex');
        stopRoll()
    })
    $('.hideBtn').click(function () {
        $('.mask').hide()
        openRoll()
    })

    var topPos;

    function openRoll() {
        $('document').css('overflow','scroll')
        $('body').css('position', 'static');
        $('html,body').scrollTop(topPos)
        console.log($('html,body').scrollTop());
        
    }

    function stopRoll() {
        topPos = $(document).scrollTop()
        console.log(topPos);
        $('document').css('overflow','hidden')
        $('body').css({
            'position': 'fixed',
            'top': -topPos + 'px',
            'width': '100%'
        });
    }
</script>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霸株,隨后出現(xiàn)的幾起案子雕沉,更是在濱河造成了極大的恐慌,老刑警劉巖去件,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坡椒,死亡現(xiàn)場(chǎng)離奇詭異扰路,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)倔叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門汗唱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丈攒,你說我怎么就攤上這事哩罪。” “怎么了巡验?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵际插,是天一觀的道長。 經(jīng)常有香客問我深碱,道長腹鹉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任敷硅,我火速辦了婚禮功咒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绞蹦。我一直安慰自己力奋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布幽七。 她就那樣靜靜地躺著景殷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澡屡。 梳的紋絲不亂的頭發(fā)上猿挚,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音驶鹉,去河邊找鬼绩蜻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛室埋,可吹牛的內(nèi)容都是我干的办绝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姚淆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼孕蝉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腌逢,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤降淮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搏讶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骤肛,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纳本,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腋颠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吓笙,死狀恐怖淑玫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情面睛,我是刑警寧澤絮蒿,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站叁鉴,受9級(jí)特大地震影響土涝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幌墓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一但壮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧常侣,春花似錦蜡饵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舞肆,卻和暖如春焦辅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椿胯。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工筷登, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人压状。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓仆抵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親种冬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镣丑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354