H5之移动端如何让滚动条不隐藏

移动端H5实现滚动条显示策略
当在移动端H5页面遇到需要显示滚动条的需求时,发现overflow-y: scroll;在真机上无效。经过搜索了解到,手机浏览器不支持自定义滚动条样式,解决方案是采用iScroll框架。集成iScroll需要确保滚动视图容器大小固定,overflow:hidden,内部有一个滚动容器,内容放于滚动容器内,并在DOM加载完成后初始化iScroll。
部署运行你感兴趣的模型镜像

背景

需求如下图,就一个弹窗,里面的内容随着内容溢出,需要显示滚动条,使用户更好地感知下面还有内容。

解决过程

刚开始一看,这不很简单吗,给content区域加个 overflow-y: scroll; 就完事了。搞完之后在谷歌浏览器的模拟手机面确实成功了,以为OK,但放到真机上面一看,滚动条却没有显示。心里一颤,这咋回事,见鬼了?

然后在想,是不是其他地方改变了滚动条的显示。找了一圈,也没有啊。实在没什么头绪,只能硬着头皮去搜索引擎找原因。

一开始是找到了这种答案,没用:

// 基本css代码
overflow-y: scroll; // 滚动显示
-webkit-overflow-scrolling: touch;  // 滚动回弹

/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/  
&::-webkit-scrollbar  
{  
    width: 16px;  
    height: 16px;  
    background-color: #F5F5F5;  
}  
  
/*定义滚动条轨道 内阴影+圆角*/  
&::-webkit-scrollbar-track  
{  
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);  
    border-radius: 10px;  
    background-color: #F5F5F5;  
}  
  
/*定义滑块 内阴影+圆角*/  
&::-webkit-scrollbar-thumb  
{  
    border-radius: 10px;  
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);  
    background-color: #555;  
}

再折腾了一圈,在StackOverflow找到了一条问答:html - Mobile webkit scroll bars - Stack Overflow

原来是手机浏览器不支持自定义 scroll,只对 PC 端浏览器生效,推荐使用 iScroll 框架来处理移动端的这种问题。

集成 iScroll

滚动视图容器需要满足的三个条件:

  • 滚动视图大小固定,且设置 overflow:hidden
  • 在滚动视图内套一层滚动容器,如果需要x轴滚动,需要设置超出滚动视图的宽
  • 所有需要滚动的内容,全部放在滚动容器内部

需要注意的问题:

  • iScroll 需要在DOM加载完毕过后在进行初始化,vue 组件中初始化 iScroll 一定要在 mounted 钩子函数中,并且使用this.$nextTick()回调,也可以用 setTimeout 延迟执 iScroll 的初始化。

您可能感兴趣的与本文相关的镜像

HunyuanVideo-Foley

HunyuanVideo-Foley

语音合成

HunyuanVideo-Foley是由腾讯混元2025年8月28日宣布开源端到端视频音效生成模型,用户只需输入视频和文字,就能为视频匹配电影级音效

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值