导航栏吸顶固定不动

初学者记载学习的日程收获

先使用js中获取进度条位置的属性scrollTop,她的兼容写法为

var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

运用逻辑短路的方法,当 || 前面的属性不能拿到正确的值时,那么就用 || 后面的属性获取值

而后

调用窗口滚动对象window.onscroll

window.onscroll = function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
}

建立判断条件,如果页面滚动的值超过导航栏的高度navHeight时,将导航栏的position属性值改为fixed,top值可以设置为0px,由于导航栏position属性值的改变会推脱离文档流,所以将下面的内容块的margin-top值改成导航栏的高度height

if (scrollTop >= 90) {
sBox.style.position = ‘fixed’;//sBox是导航栏
sBox.style.top = ‘0px’;
tBox.style.margin = ‘110px,0,0’//tBox是内容块
}

补充

当页面回到顶端时,需要再次显示为原来默认的状态,所以把导航栏的position值改为默认的static,内容块的margin值也要还原

else {
sBox.style.position = ‘static’;
tBox.style.margin = ‘0’;
}

完整代码如下

css样式 * { padding: 0; margin: 0; }

div:nth-child(1) {
width: 100%;
height: 80px;
background: pink;
}

div:nth-child(2) {
width: 100%;
height: 100px;
background: powderblue;
}

div:nth-child(3) {
width: 100%;
height: 1300px;
background: plum;
}

span {
display: block;
width: 200px;
height: 1000px;
margin: 0 auto;
background: orange;
}
js部分
var fBox = document.getElementById(‘first’),
sBox = document.getElementById(‘second’),
tBox = document.getElementById(‘third’);
window.onscroll = function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop >= 90) {
sBox.style.position = ‘fixed’;
sBox.style.top = ‘0px’;
tBox.style.margin = ‘110px,0,0’
}
else {
sBox.style.position = ‘static’;
tBox.style.margin = ‘0’
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Vue.js和CSS来实现导航时改变透明度的效果。下面是一个简单的实现示例: 1. 首先,在Vue组件中,使用`data`定义一个变量来存储导航的透明度,例如`navbarOpacity`。 ```javascript data() { return { navbarOpacity: 0 } }, ``` 2. 在导航组件的模板中,可以使用`style`绑定态设置导航的透明度样式。 ```html <template> <nav :style="`opacity: ${navbarOpacity}`"> <!-- 导航内容 --> </nav> </template> ``` 3. 接下来,在Vue组件中,通过监听页面滚事件来更新导航的透明度。可以在`mounted`生命周期钩子函数中绑定滚事件。 ```javascript mounted() { window.addEventListener('scroll', this.updateNavbarOpacity) }, ``` 4. 然后,在Vue组件的方法中,实现更新导航透明度的逻辑。可以根据滚距离和页面高度的比例来计算透明度值。 ```javascript methods: { updateNavbarOpacity() { const scrollTop = window.pageYOffset || document.documentElement.scrollTop const pageHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight const scrollPercent = scrollTop / pageHeight // 根据需要自定义透明度变化的范围和效果 this.navbarOpacity = Math.min(scrollPercent * 1.5, 1) } }, ``` 5. 最后,在Vue组件销毁时,记得解绑滚事件。 ```javascript beforeDestroy() { window.removeEventListener('scroll', this.updateNavbarOpacity) }, ``` 这样,当页面滚时,导航的透明度就会根据滚位置的变化而改变。你可以根据实际需求调整透明度的变化范围和效果。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值