返回

完美解决position:sticky不生效

以下是多数的搜索结果 但实际上在排查问题的过程中 很容易忽视细节从而导致仍然找不到问题

逐条分析:

- 必须指定top、bottom、left、right4个值之一

注意不漏写即可

- 父元素的高度不能低于sticky元素的高度

最需要注意的地方 设置sticky的元素可能未设置固定高度 因为和父元素高度相同从而导致没有滚动行为 在更上级发生滚动时这里就不会产生粘滞效果了

需要给sticky元素设置固定高度

height: 180px;

- 父元素不能overflow:hidden或者overflow:auto属性

这个比较坑 不只是父元素 而是所有的父级节点需要逐一排查

复制以下代码到浏览器 控制台会打印出设置了overflow: hidden的节点

function checkOverflowHidden(element) {  
while (element) {  
var computedStyle = window.getComputedStyle(element);  
if (computedStyle.overflow === 'hidden') {
console.log(element, '该元素设置了overflow: hidden')
return true;
    }  
element = element.parentNode;  
  }  
return false;  
};

checkOverflowHidden(document.querySelector('此处是你设置了sticky的元素选择器'));

- 检查z-index

如果以上三条仍然不能解决问题 检查一下是不是图层被遮住了 如是则调整z-index

分类: 前端