1、需求分析:滚动距离在轮播图高度范围内时,实现顶部搜索部位的背景色渐变
思路:计算出当前滚动条滚动到的距离的透明度的值
- 获取当前滚动条滚动的距离
- 获取当前轮播图的高度
- 计算:透明度 = 距离 / 高度
- 把计算好的透明度值,设置背景色的 rgba里的最后一个值改为透明度值
- 滚动的距离小于轮播图高度的情况下除以轮播图高度会小于1,所以此时设置透明度值有渐变效果,当滚动出去的距离大于轮播图高度时,此时除以轮播图高度就会大于1,透明度的值在0-1之间,所以:当透明度值大于1时,直接设置背景色透明度值为1即可。
//load事件,当页面加载完成再执行此段代码 window.addEventListener('load', function() { //获取轮播图高度 var slideHeight = document.querySelector('#slide').offsetHeight; console.log(slideHeight); //获取头部元素 var header = document.querySelector('#header'); //1.给页面添加一个滚动条滚动事件 window.addEventListener('scroll', Opacity); Opacity(); function Opacity() { //2.获取滚动距离,兼容性写法 浏览器版本不一样属性会有所不一样 var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; //3.计算透明度值 = 滚动距离 / 轮播图高度 var opacity = scrollTop / slideHeight; //console.log(opacity); //4.判断:当透明度值小于1的时候就设置rgba透明度值为 计算的透明度值 if(opacity <= 1) { header.style.background = 'rgba(222,24,27,' + opacity + ')'; } else { //当滚动出去的距离大于轮播图高度时,除以轮播图高度会大于1,所以此时直接设置透明度值为1 header.style.backgroundColor = 'rgba(222, 24, 27, 1 )'; } } })
© 版权声明
文章版权归作者所有,未经允许请勿转载。