代码
提交代码
<!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标签引入中文渐变色 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chinese-gradient"> <style> /* 清除默认样式 */ * { padding: 0; margin: 0; } /* 令html和body全屏显示 */ html, body { height: 100% } /* 上面的那栏 */ .top { /* 设置为固定定位 */ position: fixed; /* 距离上边左边为0 */ top: 0; left: 0; /* 宽度铺满屏幕 */ width: 100%; /* 给个合适的高度 */ height: 80px; /* 令其透明 */ opacity: 0; /* 蓝色背景 */ background: var(--宝石蓝) } .main { /* 给个合适的下边距 */ margin-bottom: 80px; /* 给个合适的高度 */ height: 1000px; /* 渐变背景 */ background: var(--天蓝) } /* 下面的那栏 */ .bottom { /* 设置为固定定位 */ position: fixed; /* 距离下边左边为0 */ bottom: 0; left: 0; /* 宽度铺满屏幕 */ width: 100%; /* 给个合适的高度 */ height: 80px; /* 蓝色背景 */ background: var(--靛蓝) } </style> </head> <body> <div class="top"></div> <div class="main"></div> <div class="bottom"></div> <script> // 获取固定栏 const dom = document.getElementsByClassName('top')[0] window.addEventListener('scroll', _ => { // 获取偏移值 const top = document.documentElement.scrollTop // 设置一个合适的范围 if (top <= 150) { // 对opacity作计算,透明度从起始到1随偏移值而改变 const opacity = top / 150 // 令上栏的透明度变成计算后的透明度 dom.style.opacity = opacity } else { // 在移动一定范围后令其完全不透明 dom.style.opacity = 1 } }) </script> </body> </html>
运行结果