当前位置: 首页 > 知识库问答 >
问题:

javascript - js 动态设置元素fixed 页面抖动问题?

管炳
2023-09-18

windows监听滚动事件,滚动满足fixed条件时,元素一直抖动是什么原因?

window.addEventListener('scroll', this.handleTabFix, true)handleTabFix () {  let timeOut = null  clearTimeout(timeOut)  timeOut = setTimeout(() => {    let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop    let offsetTop = document.querySelector('#testNavBar') && document.querySelector('#testNavBar').offsetTop + 60    scrollTop > offsetTop ? this.isFixTab = true : this.isFixTab = false    // isFixTab为true时,设置元素为fixed  }, 1000)}

共有2个答案

司空宣
2023-09-18

猜测是你设置某个元素 fixed 之后,页面高度就不够了;然后它就又被解除 fixed,然后页面高度又超了;于是反复。

解决方案,有两个:

  1. position: sticky
  2. 给这个元素套一个壳,固定高度,fixed 之后留着壳撑页面
李华茂
2023-09-18
let timeOut = null;window.addEventListener('scroll', () => {  if (timeOut) {    cancelAnimationFrame(timeOut);  }  timeOut = requestAnimationFrame(handleTabFix);}, true);function handleTabFix() {  let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;  let offsetTop = document.querySelector('#testNavBar') && document.querySelector('#testNavBar').offsetTop + 60;    if (scrollTop > offsetTop) {    if (!document.querySelector('.placeholder')) {      let placeholder = document.createElement('div');      placeholder.style.height = '60px';       placeholder.className = 'placeholder';      document.querySelector('#testNavBar').insertAdjacentElement('beforebegin',    placeholder);}this.isFixTab = true;} else {if (document.querySelector('.placeholder')) {document.querySelector('.placeholder').remove();}this.isFixTab = false;}}
 类似资料:
  • 本文向大家介绍jQuery插件jRumble实现网页元素抖动,包括了jQuery插件jRumble实现网页元素抖动的使用技巧和注意事项,需要的朋友参考一下 jRumble,它能让网页上的任意元素抖动起来,在你的网站中使用这个效果会有很大的机率吸引用户的注意力。此插件的效果可以用在链接上,或者div上,你可以设置抖动的范围、XY坐标、抖动幅度等。可设置为当鼠标移动上去抖动或者默认一直抖动,插件可定制

  • 本文向大家介绍JavaScript动态修改网页元素内容的方法,包括了JavaScript动态修改网页元素内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript动态修改网页元素内容的方法。分享给大家供大家参考。具体分析如下: 下面的JS代码当用户点击提交按钮后,通过元素的textContent或者innerHTML动态指定元素的内容 希望本文所述对大家的javascr

  • 我有一个jquery函数,它允许一个元素可以拖动和调整大小,并且工作得很好。我想给它添加的是设置一个元素可以拖动和调整大小的位置。更具体地说,在我的代码中,我想让我的元素可以在两行(v1和vh)的空格之间拖动。有没有办法做到这一点?感谢任何帮助。提前道谢。 null null

  • 本文向大家介绍js style动态设置table高度,包括了js style动态设置table高度的使用技巧和注意事项,需要的朋友参考一下 直接在table标签中设置下不就行了吗?这是静态的,如果要动态设置你会吗?

  • Framework7 可以创建动态页面并直接加载,不需要额外的Ajax请求。 只有通过 路由器 API 才可以实现。 加载页面的结构、禁用滑动返回上一页和返回上一页等,所有这些需要考虑的事情都和 Ajax Pages 是一样的。 我们只需要使用视图的 .router.loadContent 方法,并且传入我们新页面的HTML代码即可。 // Init app var myApp = new Fra

  • 本文向大家介绍JS动态创建DOM元素的方法,包括了JS动态创建DOM元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS动态创建DOM元素的方法。分享给大家供大家参考。具体如下: 近日,因工作需要,需要通过点击某个元素后, 动态创建一个DOM元素并显示,因此写了一些相关的JS函数,在此记录,以作备忘: 使用示例: 希望本文所述对大家的javascript程序设计有所帮助。