固定定位+漸隱漸現(xiàn)
1. 前言
相信大家日常用手機(jī)的時(shí)候會(huì)見過這種頁面:
這個(gè)需求也比較常見,而且這個(gè)交互效果看起來會(huì)更加的友好,不過需要用到一點(diǎn)點(diǎn)的 JS 來獲取頁面滾動(dòng)的距離,不會(huì) JS 的同學(xué)先不要緊張,看不懂的話可以先記住怎么用就行。
2. 實(shí)例代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 在這里用link標(biāo)簽引入中文漸變色 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient">
<style>
/* 清除默認(rèn)樣式 */
* { padding: 0; margin: 0 }
/* 令html和body全屏顯示 */
html, body { height: 100% }
/* 上面的那欄 */
.top {
/* 設(shè)置為固定定位 */
position: fixed;
/* 距離上邊左邊為0 */
top: 0;
left: 0;
/* 寬度鋪滿屏幕 */
width: 100%;
/* 給個(gè)合適的高度 */
height: 80px;
/* 令其透明 */
opacity: 0;
/* 藍(lán)色背景 */
background: var(--靛藍(lán));
}
.main {
/* 給個(gè)合適的高度 */
height: 1000px;
/* 漸變背景 */
background: var(--湖藍(lán));
}
</style>
</head>
<body>
<div class="top"></div>
<div class="main"></div>
<script>
// 獲取固定欄
const dom = document.getElementsByClassName('top')[0]
window.addEventListener('scroll', _ => {
// 獲取偏移值
const top = document.documentElement.scrollTop
// 設(shè)置一個(gè)合適的范圍
if (top <= 150) {
// 對(duì)opacity作計(jì)算,透明度從起始到1隨偏移值而改變
const opacity = top / 150
// 令上欄的透明度變成計(jì)算后的透明度
dom.style.opacity = opacity
} else {
// 在移動(dòng)一定范圍后令其完全不透明
dom.style.opacity = 1
}
})
</script>
</body>
</html>
運(yùn)行結(jié)果:
為了能讓大家清晰的看到滑動(dòng)效果,這個(gè)案例使用了 chinese-gradient 來做背景漸變色。
這里就不用再給主盒子加上邊距啦,因?yàn)樵谧钌厦娴臅r(shí)候上欄是透明的,不會(huì)覆蓋住內(nèi)容的。
3. 結(jié)語
怎么樣,是不是很炫酷呢?不過可惜無法用 CSS 來判斷屏幕滑動(dòng)了多少距離,所以漸隱漸現(xiàn)的效果用到了一點(diǎn)點(diǎn)的 JS。