成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不需要 JS!僅用 CSS 也能達到監聽頁面滾動的效果!

開發 前端
這就是全部分享內容了,是不是又掌握一個 CSS 小技巧?用到了3個定位屬性,幾乎零成本,復制幾行代碼,馬上就可以用起來了

可以看到,只有滾動以后才出現陰影。一般情況下,使用 JS 監聽滾動事件動態添加類名就可以實現,不過經過我的一番嘗試,發現這種效果僅僅使用 CSS 也能輕易實現。

你也可以提前訪問 CSS auto header shadow(juejin.cn)[1]查看實際效果。那 如何實現的呢,花兩分鐘時間看看吧~

一、頭部固定定位

假設有這樣一個布局。

<header>LOGO</header>
<main>很多內容文本</main>

簡單修飾一下

header{
background: #fff;
font-size: 20px;
padding: 10px;
}

頭部固定定位有很多種方式,比較常見的是使用 fixed定位。

header{
position: fixed;
top: 0
}

但是,fixed定位是不占空間的,會導致遮擋內容區域,所以一般還需要預留頭部一部分空間出來,比如這樣。

main{
margin-top: 頭部的高度
}

在這里,我更推薦使用sticky定位,在吸頂的同時,還能保留原有的占位。

header{
position: sticky;
top: 0
}

效果如下,只是沒有陰影。

頭部固定定位

二、CSS 實現原理

實現這個效果,需要一點點“CSS 障眼法”。假設有一層陰影,在默認情況下用一個元素遮擋起來,以下都稱之為“遮擋物”。這里需要考慮好各個部分的層級關系,稍微有些復雜,如下所示(側面層級關系圖)

層級關系

  • 層級關系為:頭部 > 遮擋物 > 陰影 > 內容

在滾動過程中,陰影就自動就可見了,遮擋物正好又會被頭部遮住,注意,遮擋物和內容是一起滾動的,動態演示如下

層級關系滾動原理

原理就是這樣,下面看具體實現

三、CSS 具體實現

根據以上原理,這里需要添加一個元素,陰影和遮擋物都可以用偽元素生成

<header>LOGO</header>
<shadow></shadow>
<main>很多內容文本</main>

這里陰影的位置是固定的,也不需要占據空間,所以可以直接用fixed定位,也可以不設置top值,因為默認就位于非定位時的位置(又體現出 sticky 的好處了),也就是頭部下面:

shadow::before{
content: '';
box-shadow: 0 0 10px 1px #333;
position: fixed; /*無需 top 值*/
width: 100%;
}
  • fixed 定位在不設置 top 或者 left 值時,仍然位于原先位置,但是會在這個位置固定下來

遮擋物可以用純色填充,而且需要跟隨內容滾動,也不需要占據空間,同時也為了提升層級,可以設置一個absolute定位

shadow::after{
content: '';
width: 100%;
height: 15px;
background: #fff;
position: absolute; /*無需 top 值*/
}
  • absolute定位在不設置 top 或者 left 值時,仍然位于原先位置,也會跟隨內容滾動

現在再來看看層級關系,頭部、陰影、遮擋物都設置了定位,根據 dom 先后順序,此時

  • 層級關系為:遮擋物 > 陰影 >  頭部 > 內容

頭部應該是最高的,所以需要單獨改變一下層級

header{
/**/
z-index: 1;
}
  • 層級關系為:頭部 > 遮擋物 > 陰影  > 內容

三、更柔和的陰影

其實上面的效果已經很好了,但是稍微有點生硬。仔細觀察,在慢慢滾動過程中,陰影有一種“向上推進”的感覺,如下

略微生硬的效果

有沒有辦法讓這個過程更柔和一點呢?比如透明度的變化?

當然也是可以的,實現也比較簡單。上面比較生硬的原因是,遮擋物是純色的,如果換成半透明漸變是不是就好一些呢?

shadow::after{
height: 30px;
background: linear-gradient(to bottom, #fff 50% , transparent);
}

效果如下:

比較柔和的效果

這樣陰影出現的效果就不再是“向上推進”的效果,你覺得怎么樣呢?

重點來了~ 下面是完整 CSS 代碼(20行不到~)

header{
position: sticky;
background: #fff;
top: 0;
font-size: 20px;
padding: 10px;
z-index: 1;
}
shadow::before{
content: '';
box-shadow: 0 0 10px 1px #333;
position: fixed;
width: 100%;
}
shadow::after{
content: '';
width: 100%;
height: 30px;
background: linear-gradient(to bottom, #fff 50% , transparent);
position: absolute;
}

HTML 結構也很簡單:

<header>LOGO</header>
<shadow></shadow>
<main>很多內容文本</main>

你可以訪問在線鏈接CSS auto header shadow(codepen.io)[2] 或者 CSS auto header shadow(juejin.cn)[3]

四、總結和展望

以上就是全部分享內容了,是不是又掌握一個 CSS 小技巧?用到了3個定位屬性,幾乎零成本,復制幾行代碼,馬上就可以用起來了,下面總結一下實現要點:

  • 固定頭部的布局推薦用 sticky 實現,好處是可以保留頭部占位,無需額外預留
  • 整體實現思路是CSS 障眼法和 CSS 層級,相互遮擋
  • fixed 定位在不設置 top 或者 left 值時,仍然位于原先位置,但是會在這個位置固定下來
  • absolute定位在不設置 top 或者 left 值時,仍然位于原先位置,也會跟隨內容滾動
  • 純色遮擋在滾動時有些生硬,半透明漸變遮擋在滾動時會更加柔和

在未來,像這類滾動相關的交互都可以通過@scroll-timeline來實現,有興趣的可以提前了解這方面內容,只是現在幾乎不可實際生產使用(目前需要手動開啟實驗特性),可以預料,隨著 CSS 新特性的不斷發展,像這類“CSS 奇技淫巧”肯定會被官方逐步替代,體驗也會更加完善,

但是,并不是說這些思考是無用了,實際需求千千萬,官方不可能一一照顧到,就算有規劃,有草案,可能已經是多年以后了,所以學習 CSS 一定不要停止思考,停止想象,這大概也是 CSS 比較有趣的地方吧~最后,如果覺得還不錯,對你有幫助的話,歡迎點贊、收藏、轉發???

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2015-09-30 09:57:53

天分熱情工程師

2020-09-18 14:01:21

vue3.0

2021-12-27 07:45:30

CSS 技巧煙霧效果

2018-05-07 14:11:15

RootAndroidXposed

2017-10-19 20:09:57

App

2010-05-11 08:49:35

2017-03-13 13:54:40

戴爾

2015-06-15 16:06:37

無線通訊系統無線技術

2024-02-22 09:00:00

LogitMat數據集算法

2013-07-18 09:21:32

代碼文檔

2010-11-23 10:55:47

跳槽

2020-08-05 11:53:41

數據代碼自動化

2018-01-29 13:18:42

前端JavaScript

2012-08-23 09:50:07

測試測試人員軟件測試

2009-11-23 12:45:22

2016-10-26 13:35:43

云自動資源負載

2016-10-26 20:21:34

自動縮放可擴展性

2015-08-20 10:56:19

算法界面開發

2013-12-02 09:43:29

字符串編程

2022-09-14 15:10:40

前端架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线亚洲欧美 | 毛片视频免费 | 欧美一级欧美三级在线观看 | 久热免费 | 国产福利在线播放麻豆 | 国产高清在线 | 欧美精品一区二区三区蜜桃视频 | 婷婷久久五月天 | 国产成人99久久亚洲综合精品 | 色欧美片视频在线观看 | 成人做爰69片免费观看 | 精品久久久久久久久久久久 | 成人精品毛片国产亚洲av十九禁 | 欧美一区二区三区久久精品 | 天天拍夜夜爽 | 亚洲美女一区 | 欧美一级在线 | 国产成人99久久亚洲综合精品 | 大久| 伊人网伊人 | 99精品一区二区 | 国产精品免费一区二区三区四区 | 国产在线不卡视频 | 国产精品视频久久 | 成人一区二区视频 | 国产精品国产三级国产播12软件 | 色视频www在线播放国产人成 | 亚洲精品在线看 | 亚洲免费精品 | 精品亚洲一区二区 | 日韩一区和二区 | 亚洲精品日韩综合观看成人91 | 精品久久久久久久久久 | 黄色亚洲 | 欧美 日韩 综合 | 国产福利在线播放麻豆 | 怡红院成人在线视频 | 亚洲精品国产电影 | 日韩无 | 国产成人在线视频播放 | 女人毛片a毛片久久人人 |