如何解决IOS 下固定定位fixed 失效问题?
时间: 2023-09-07 18:12:54 浏览: 217
在 iOS 下,当页面出现滚动时,fixed 定位的元素会失效,这是因为 iOS 下的 Safari 浏览器默认会为滚动的元素添加一个滚动条,而 fixed 定位的元素会脱离文档流,因此会相对于整个文档进行定位,而不是相对于滚动的元素进行定位。
解决方法有两种:
1. 使用 overflow-scrolling:touch
在需要滚动的元素上添加 `-webkit-overflow-scrolling: touch;` 样式,可以让滚动的元素不会添加默认的滚动条,从而 fixed 定位的元素不会失效。
示例代码:
```
.scroll-wrapper {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
```
2. 通过 JavaScript 实现
通过监听滚动事件,动态改变 fixed 定位元素的位置可以避免 fixed 定位的元素失效。
示例代码:
```
var fixedElement = document.querySelector('.fixed-element');
var scrollElement = document.querySelector('.scroll-element');
scrollElement.addEventListener('scroll', function() {
var scrollY = this.scrollTop;
fixedElement.style.transform = 'translateY(' + scrollY + 'px)';
});
```
阅读全文