日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

借助CSS has實現打開彈窗時自動鎖定滾動

來源: 責編: 時間:2024-04-15 18:14:01 195觀看
導讀分享一個 CSS 小技巧在平時開發中,經常會遇到這樣一種問題:當打開一個彈窗時,后面的頁面是可以滾動的,演示如下圖片那么,該如何鎖定頁面的滾動呢?一、傳統的實現方式傳統的方式其實也不復雜,就是在打開彈窗時阻止滾動就行了,

cZp28資訊網——每日最新資訊28at.com

分享一個 CSS 小技巧

在平時開發中,經常會遇到這樣一種問題:當打開一個彈窗時,后面的頁面是可以滾動的,演示如下cZp28資訊網——每日最新資訊28at.com

圖片圖片cZp28資訊網——每日最新資訊28at.com

那么,該如何鎖定頁面的滾動呢?cZp28資訊網——每日最新資訊28at.com

一、傳統的實現方式

傳統的方式其實也不復雜,就是在打開彈窗時阻止滾動就行了,通常是改變overflow屬性cZp28資訊網——每日最新資訊28at.com

const openModal = () => {  document.body.style.overflow = 'hidden'}const closeModal = () => {  document.body.style.overflow = 'auto'}

如果是在現代框架里,比如vue,可以用監聽彈窗狀態來實現cZp28資訊網——每日最新資訊28at.com

watch(  () => show.value,  (val) => {    if (val) {      document.body.style.overflow = 'hidden'    } else {      document.body.style.overflow = 'auto'    }  },)

這樣就能鎖定滾動了cZp28資訊網——每日最新資訊28at.com

圖片圖片cZp28資訊網——每日最新資訊28at.com

二、傳統方式的局限

雖然上面的實現看似完美,其實還有潛在問題的。比如有多個彈窗,彈窗覆蓋的情況下,這個時候鎖定就會出問題了。cZp28資訊網——每日最新資訊28at.com

圖片圖片cZp28資訊網——每日最新資訊28at.com

因為在關閉第二個彈窗的時候,頁面已經解除鎖定了,所以在第一個彈窗還在的時候,頁面已經可以滾動了cZp28資訊網——每日最新資訊28at.com

如果想要優化這個問題,還需要做進一步的判斷cZp28資訊網——每日最新資訊28at.com

三、借助 CSS has 實現

現在有了CSS :has偽類,一切就好辦了,無需過多的判斷,直接一個選擇器搞定cZp28資訊網——每日最新資訊28at.com

body:has(dialog[open]){  overflow: hidden}

這行選擇器表示,只要有屬性為open的彈窗,body就自動鎖定,無論有多少層彈窗cZp28資訊網——每日最新資訊28at.com

圖片圖片cZp28資訊網——每日最新資訊28at.com

是不是非常簡單?cZp28資訊網——每日最新資訊28at.com

完整代碼可以查看:CSS has lock scroll (juejin.cn)[1]cZp28資訊網——每日最新資訊28at.com

四、has已經全兼容了

提一下兼容性,目前現代瀏覽器都支持了,如下cZp28資訊網——每日最新資訊28at.com

圖片圖片cZp28資訊網——每日最新資訊28at.com

[1]CSS has lock scroll (juejin.cn): https://code.juejin.cn/pen/7357637625827573800cZp28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-83625-0.html借助CSS has實現打開彈窗時自動鎖定滾動

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 輕松打造Windows服務:將.NET Core項目轉化為無縫運行的后臺服務

下一篇: Go 如何緩解來自軟件依賴的惡意攻擊?

標簽:
  • 熱門焦點
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內,目前主要售賣美食相關的
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
Top 主站蜘蛛池模板: 西青区| 祥云县| 安达市| 张家口市| 沂南县| 石台县| 内乡县| 和硕县| 那坡县| 喀喇| 宜阳县| 东方市| 河津市| 老河口市| 新河县| 永泰县| 洪江市| 隆林| 依安县| 来安县| 延边| 深水埗区| 体育| 石嘴山市| 乌兰察布市| 老河口市| 枞阳县| 米泉市| 安义县| 舒兰市| 桃园市| 黄平县| 商水县| 长子县| 仁布县| 怀化市| 广南县| 鄂托克前旗| 牙克石市| 六枝特区| 磐石市|