最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用CSS實現一個滾動陰影效果

  發(fā)布時間:2023-12-12 10:52:07   作者:超級無敵大怪獸   我要評論
為了良好的用戶體驗,需要在容器頂部可滾動的情況下增加一個陰影條,提示用戶可向上滾動,本文主要為大家詳細介紹了如何使用CSS實現簡單的滾動陰影效果,有需要的小伙伴可以了解下

背景

為了良好的用戶體驗,需要在容器頂部可滾動的情況下增加一個陰影條,提示用戶可向上滾動;如果容器頂部不可滾動,則不顯示陰影條,效果如下圖所示:

實現

首先我們定義好dom和相應的樣式:

<!-- 容器 -->
<div class="container">
  	<!-- 陰影 -->
    <div class="shadow"></div>
  	<!-- 占位用,使容器能夠滾動 -->
    1<br/>
    2<br/>
    3<br/>
    4<br/>
    5<br/>
    6<br/>
    7<br/>
    8<br/>
    9<br/>
    10<br/>
    11<br/>
    12<br/>
    13<br/>
    14<br/>
    15<br/>
    16<br/>
</div>
// 給容器設置最大高度,使其產生滾動
.container {
    max-height: 200px;
    overflow-y: auto;
    border: 1px solid black;
    position: relative;
}
// 利用sticky定位實現吸頂效果
.shadow {
    position: sticky;
    visibility: hidden;
    top: 0;
    left: 0;
    right: 0;
    box-shadow: 0 10px 0 10px rgba(0, 0, 0, 0.2);
  	// 如果不希望陰影擋住下方內容的點擊事件的話
    pointer-events: none;
}

核心的實現便是如何判斷容器頂部是否還有滾動空間,我們用到scrollTop屬性,如果scrollTop大于0,說明可以向上滾動:

import { debounce } from 'https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/lodash.min.js';
// 容器
const container = document.querySelector('.container');
// 陰影
const shadow = document.querySelector('.shadow');
// 用到了lodash的防抖函數,
// 通過scrollTop是否大于0來判斷容器頂部是否還有滾動空間,
// 從而控制shadow是否顯示。
const handler = debounce((e) => {
    if (e.target.scrollTop > 0) {
        shadow.style.visibility = 'visible';
    } else {
        shadow.style.visibility = 'hidden'
    }
}, 50, { leading: true });
// 監(jiān)聽滾動事件
container.addEventListener('scroll', handler);

然后就實現了開頭的滾動陰影效果。

舉一反三

會了頂部陰影,那怎么實現底部、左側、右側陰影呢?聰明的你肯定脫口而出用scrollBottom、scrollLeft、scrollRight比較一下就行了。行嗎?不太行哦,元素沒有scrollBottom、

scrollRight屬性,因此底部和右側陰影不能用這個方法實現。那么應該怎么搞呢,也簡單,用到元素的scrollWidth和scrollHeight就可以實現scrollBottom和scrollRight的效果:

const scrollRight = scrollWidth - scrollLeft;
const scrollBottom = scrollHeight - scrollTop;
// 然后再使用前文的邏輯處理即可
......
// 但是這里還有個坑,
// 上述的scrollBottom和scrollRight是通過浮點數相減來的,
// 會有精度問題,因此比較時不是直接與0比較,而是用Number.EPSILON
// 舉個栗子
scrollRight > Number.EPSILON

其實不止?jié)L動陰影,還有一些效果也是可以用這個思路做的,比如下圖中的指示器效果:

總結

寫篇小水文,混混經驗。我發(fā)現長篇的干貨數據不太好,反而是這樣幾分鐘看完的小水文數據還挺好看的。雖然水,但是也有不少知識點:

  • sticky定位實現吸頂效果
  • pointer-events實現鼠標事件穿透
  • 判斷元素某個方向是否可滾動
  • 防抖函數以及立即執(zhí)行
  • 浮點數精度用EPSILON處理

到此這篇關于使用CSS實現一個滾動陰影效果的文章就介紹到這了,更多相關CSS滾動陰影內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

相關文章

  • 使用純 CSS 實現滾動陰影效果

    這篇文章主要介紹了使用純 CSS 實現滾動陰影效果,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-04
  • css實現元素四周陰影的示例代碼

    CSS的陰影效果為網頁設計增添了許多細節(jié)和質感,本文就來介紹一下css實現元素四周陰影的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-12-04
  • 使用CSS實現Logo陰影特效

    這篇文章主要個大家介紹了如何使用CSS實現Logo陰影特效,文章通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,感興趣的同學可是自己動手嘗試一下
    2023-11-20
  • CSS 實現多彩、智能的陰影效果

    這篇文章主要介紹了CSS 實現多彩、智能的陰影效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-12
  • css文字陰影漸漸模糊效果的實現

    這篇文章主要介紹了css文字陰影漸漸模糊效果的實現,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-07
  • CSS 陰影動畫優(yōu)化技巧

    這篇文章主要介紹了CSS 陰影動畫優(yōu)化技巧,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-31
  • 用CSS畫一個帶陰影的三角形的示例代碼

    這篇文章主要介紹了用CSS畫一個帶陰影的三角形的示例代碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨
    2019-07-31
  • css實現動態(tài)陰影、蝕刻文本、漸變文本效果

    這篇文章主要介紹了css實現動態(tài)陰影、蝕刻文本、漸變文本效果,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-22
  • CSS 翹邊陰影的實現代碼

    這篇文章主要介紹了CSS 翹邊陰影的實現代碼的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-15

最新評論

平安县| 通城县| 积石山| 四子王旗| 赣州市| 黄浦区| 杨浦区| 南雄市| 林甸县| 北海市| 平利县| 湘乡市| 保山市| 政和县| 大洼县| 忻城县| 旅游| 虞城县| 高州市| 富平县| 收藏| 简阳市| 泰来县| 高邑县| 永靖县| 织金县| 东乌珠穆沁旗| 湖北省| 巴林右旗| 通化市| 余姚市| 新河县| 雅安市| 会东县| 会东县| 广丰县| 阳东县| 台山市| 南涧| 瑞丽市| 吉隆县|