iOS safari滚动时,背景颜色渲染的bug

发布于 2022-09-11 19:44:51 字数 1197 浏览 21 评论 0

HTML结构如下:

<div class="top"></div>
<div class="content">
    <div class="group">
        <a class="item" href="###">列表项</a>
        ...
    </div>
    ...
</div>
<div class="bottom"></div>

CSS

html, body{
    height: 100%;
    overflow: hidden;
}
.top{
    /* fixed固定顶部,代码略 */
    height: 40px;
}
.bottom{
    /* fixed固定底部,代码略 */
    height: 60px;
}
.content{
    overflow: auto;
    height: 100%;
    box-sizing: border-box;
    padding: 40px 0 60px;
    -webkit-overflow-scrolling: touch;
    background-color: #ededed;
}
.group{
    margin-bottom: 6px;
}
.item{
    background-color: #fff;
}

在真机上滑动时(iOS 10)会出现不正常。

正常表现(这是我在练习vue模拟的微信界面,不要吐槽):
正常表现

其中,“摇一摇”背景色是手指触摸时触发的:active伪类,请忽略;“发现”是顶部条,到“朋友圈”之间的那个空白区域就是露出来的.content的背景色。

1、滑动到最顶部后,如果继续向下拉
2、滑动到最底部后,如果继续向上拉
背景颜色就会变成白色:
图片描述
如果
1、滑动到最顶部后,稍微向上拉一些,再向下拉
2、滑动到最底部后,稍微向下拉一些,再向上拉
就会恢复正常。

请教各位大神,有遇到过这种情况的吗?怎么解决?谢谢~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萤火眠眠 2022-09-18 19:44:51

两个可能:

1.问题出现在 -webkit-overflow-scrolling: touch
为了弹性滚动引入原生组件,自然兼容要差点
解决也很简单,给它加上 3D transform 就好了,比如 translateZ、translate3d

2.你这里有两层可滚动区域
既然你这里上下都 fixed 了,为啥还要指定可滚动区域 height: 100%?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文