搜尋
首頁web前端css教學CSS實現滾動陰影效果的小技巧(分享)

本篇文章為大家介紹一下使用純CSS實現滾動陰影效果的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

CSS實現滾動陰影效果的小技巧(分享)

【推薦教學:CSS影片教學

開門見山,有這樣一個非常常見的情況,對於一些可捲動的元素而言。通常在滾動的時候會為垂直於滾動的一側添加一個陰影,用於表明當前有元素被滾動給該滾出了可視區域,類似這樣:

可以看到,在捲動的過程中,會出現一條陰影:

#對於兩邊的列在在滾動的過程中,靜止不動,吸附在邊界的問題,通常CSS 使用 position: sticky 即可解決。

但是對於滾動過程中才出現的陰影(滾動容器內的內容沒有貼邊,則陰影出現,貼邊,則陰影消失),之前的做法一直都是需要借助JS 完成的。

那麼,有沒有純 CSS 能夠實現的方案呢?嘿嘿嘿,有。有一種非常討巧的障眼法,下面就讓我們來一步一步揭開它的面紗。

神奇的 background-attachment

要使用純CSS 實作上述捲動陰影,最核心的要使用到的元素就是 background-attachment

在較早的一篇文章裡-- CSS 實現視差效果,詳細了介紹了 background-attachment,借助了 background-attachment: fixed 可以簡單的實作網站的滾動視差或是類似圖片點擊的水紋效果,類似這樣:

##當然,今天我們的主角不是 background-attachment: fixed,而是 background-attachment: srcoll

background-attachment: srcoll

首先,介紹 background- attachment,如果指定了 background-image ,那麼 background-attachment 決定背景是在視窗中固定的還是隨著包含它的區塊滾動的。

簡單而言,就是決定了在可捲動的容器中,背景圖案是如何進行運動的。透過兩個簡單的 Demo,弄清楚 background-attachment: srcoll 和 background-attachment: local

background-attachment: local,這個就是和我們日常使用中的用法是一致的,可滾動容器的背景圖案隨著容器進行滾動:

background-attachment: scroll,這個是今天的主角,它顯示背景相對於元素本身固定, 而不是隨著它的內容滾動:

如果你還沒弄清楚他們的區別,可以戳下面的DEMO 自己感受一下:

Demo網址:https://codepen.io/Chokcoco/pen/xJJorg#

srcoll 與 local 同時使用,實作障眼法

到這裡,可能很多同學還是懵的,我們到底要做什麼呢?這個和本文的滾動陰影有什麼關聯呢?

別急,滾動陰影的困難在於,初始沒有滾動的時候是沒有陰影展現的,只有當開始滾動,陰影才會出現。

所以這裡,我們藉助 background-attachment: srcoll 和 background-attachment: local 兩個屬性,在滾動初始的時候,利用兩層背景疊在一起隱藏陰影背景,真正滾動的時候,將疊加的部分移走,只漏出陰影部分即可。

嗯?什麼意思。我們用給滾動容器,加上兩個漸變效果,分別運用上 background-attachment: srcoll 和 background-attachment: local,再疊加起來,像是這樣:

<!-- 可滚动容器 -->
<ul>
    <li>...</li>
    ...
    <li>...</li>
</ul>
// 情形一:
.g-one {
    background: linear-gradient(#fff, #f00);
    background-size: 100% 10px;
    background-repeat: no-repeat;
    background-attachment: local;
}

// 情形二:
.g-two {
    background: radial-gradient(at 50% 0, #000, #0f0 70%);
    background-size: 100% 10px;
    background-repeat: no-repeat;
    background-attachment: scroll;
}

// 情形三:
.g-combine {
    background: 
        linear-gradient(#fff, #f00),
        radial-gradient(at 50% 0%, #000, #0f0 70%);
    background-size: 100% 10px, 100% 10px;
    background-repeat: no-repeat;
    background-attachment: local, scroll;
}

實際效果就是這樣,一個背景是隨容器滾動,一個背景是隨容器固定。隨容器滾動的背景充當初始的遮罩層:

#OK,可以看大,當滾動的時候,最後一幅疊加的情況,其實就是我們需要的滾動的時候展示不同的顏色(陰影)的效果。我們調整兩個漸層的顏色,遮罩層(background-attachment: local)為白色,再把固定不動的陰影層(background-attachment: scroll),利用徑向漸層模擬為我們想要的陰影顏色。

CSS 程式碼大概是這樣:

.g-final {
    background: 
        linear-gradient(#fff, transparent 100%),
        linear-gradient(rgba(0, 0, 0, .5), transparent 100%);
    background-size: 100% 30px, 100% 10px;
    background-repeat: no-repeat;
    background-attachment: local, scroll;
}

利用 linear-gradient(rgba(0, 0, 0, .5) , transparent 100%) 線性漸層模擬了一層灰色陰影:

OK,大功告成。以上所有DEMO,可以戳這裡看看:

Demo位址:https://codepen.io/Chokcoco/pen/QWKmjKd

#如文章開頭所示,這技巧也是可以直接運用在 table 裡面:

##Demo位址:https://codepen.io/Chokcoco/pen/abmqMJQ

一些問題

層疊順序

當然,在上述的過程中,其實一直有個問題,就是由於是使用背景 background 模擬的陰影,其實最終的效果,內容是在陰影(背景之上的),但是實際效果其實沒有很大的差別,如果能忍受這一點,這個方案是完全可用的。

相容性

#嗯,當然還有一個問題是 background-attachment的兼容問題。讓我們來看看 CAN I USE:

#Can i use 下面的註解表明,大部分相容問題其實是出在 background- attachment: fixed,對於本文的效果影響不大。

最後

本文技巧非原創,第一次看到來自這篇文章:探索CSS屬性* -gradient的實用價值 ,對其能否在實際中運用再做了一些探究。

好了,本文到此結束。

更多程式相關知識,請造訪:程式設計教學! !

以上是CSS實現滾動陰影效果的小技巧(分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
'訂閱播客”鏈接應在哪裡?'訂閱播客”鏈接應在哪裡?Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

瀏覽器引擎多樣性瀏覽器引擎多樣性Apr 16, 2025 pm 12:02 PM

當他們在2013年去Chrome時,我們失去了歌劇。與Edge今年早些時候也進行了同樣的交易。邁克·泰勒(Mike Taylor)稱這些變化為“減少

網絡共享的UX注意事項網絡共享的UX注意事項Apr 16, 2025 am 11:59 AM

從垃圾點擊誘餌網站到大多數出版物的最多,共享按鈕長期以來一直無處不在。然而,這些

每周平台新聞:Apple部署網絡組件,漸進的HTML渲染,自託管關鍵資源每周平台新聞:Apple部署網絡組件,漸進的HTML渲染,自託管關鍵資源Apr 16, 2025 am 11:55 AM

在本週的綜述中,Apple進入Web組件,Instagram如何插入腳本以及一些思考的食物,以進行自託管關鍵資源。

git Pathspecs以及如何使用它們git Pathspecs以及如何使用它們Apr 16, 2025 am 11:53 AM

當我查看GIT命令的文檔時,我注意到其中許多人都有選擇。我最初以為這只是一個

產品圖像的彩色拾取器產品圖像的彩色拾取器Apr 16, 2025 am 11:49 AM

聽起來有點像一個困難的問題,不是嗎?我們經常沒有成千上萬種顏色的產品鏡頭,以便我們可以隨身攜帶。我們也不是

黑暗模式與React和Themeprovider切換黑暗模式與React和Themeprovider切換Apr 16, 2025 am 11:46 AM

我喜歡網站具有“暗模式”選項時。黑暗模式使我更容易閱讀網頁,並幫助我的眼睛更放鬆。許多網站,包括

帶有HTML對話框元素的一些動手帶有HTML對話框元素的一些動手Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。