您的位置:首页 >电脑游戏 >

环球实时:手机端内滚动效果的几种解决办法,详解移动端实现内滚动的四种解决方案

2023-01-08 12:24:51    来源:元马网
手机端内滚动效果的几种解决办法,详解移动端实现内滚动的四种解决方案如果在一个区域内只允许部分区域产生滚动的效果,而其余部分不能移动,你会采用什么方法呢?首先我们可以把这个需求分解为两个小的问题来解决。简单来说,overflow-y属性在垂直方向上存在溢出的时候,通过设置不同的值会产生不同的表现。为了实现滚动功能我们需要将该属性设置为scroll,之后,无论块级元素的内容是否溢出,浏览器都会生成一个滚动条并且隐藏容器中内容溢出的部分,只有在滚动之后才会显示。

发现需求


(资料图片)

如果在一个区域内只允许部分区域产生滚动的效果,而其余部分不能移动,你会采用什么方法呢?

首先我们可以把这个需求分解为两个小的问题来解决。

部分区域固定其余区域滚动

部分区域固定

为页面的body部分设置height: 100%以及overflow: hidden,即禁用页面原生的滚动,保证只会显示一屏的内容。固定区域采用绝对定位。

其余区域滚动

核心属性overflow-y

mdn对于overflow-y的定义

The overflow-y property specifies whether to clip content, render a scroll bar, or display overflow content of a block-level element, when it overflows at the top and bottom edges.overflow-y属性指定或是裁剪内容并且渲染一个滚动条,或是当块级元素在其顶部或底部溢出时显示溢出的内容。

简单来说,overflow-y属性在垂直方向上存在溢出的时候,通过设置不同的值会产生不同的表现。为了实现滚动功能我们需要将该属性设置为scroll,之后,无论块级元素的内容是否溢出,浏览器都会生成一个滚动条并且隐藏容器中内容溢出的部分,只有在滚动之后才会显示。

举个例子:

.test{  width: 200px;  /* 关键样式 */  height: 200px;  overflow-y: scroll;  /* 以下无关样式 */  background: #f14c5c;  color: #fff;}
这里面只是一段测试的内容这里面只是一段测试的内容这里面只是一段测试的内容 这里面只是一段测试的内容这里面只是一段测试的内容这里面只是一段测试的内容 这里面只是一段测试的内容这里面只是一段测试的内容这里面只是一段测试的内容 这里面只是一段测试的内容这里面只是一段测试的内容这里面只是一段测试的内容

效果图如下:

通过刚才的例子我们可以得出结论,只要限制块级元素的高度,自然就可以实现只有该元素的内容可滚动而不影响其它内容。但是在实现过程中遇到了新的问题,如何实现对设计图的精确还原?

设计图如下:

整个弹出框高度是随页面高度自适应的,标题部分和底部按钮部分位置是固定的,中间列表需要占满剩余高度,并且内容可滚动。整个弹窗被最外层div包裹,底部按钮相对于它进行定位。经过思考后,尝试了四种方案,分享给大家。

方案说明

我们需要确定的核心问题就是中间内容的高度,也即是height在不同尺寸屏幕下的精确高度。

vh

相对于视口的高度,视口被均分为100单位,即1vh等于视口高度的1%。

但是vh单位对低版本安卓和ios支持不够好,微信浏览器X5内核不支持,虽然已经升级到blink内核,但是为了确保万无一失,放弃采用这种方案。另外也无法精确控制和底部按钮边距。

height百分比

和vh类似,无法精确控制和底部按钮的边距,自适应效果不好。

calc

对于以上两种方案的存在的问题,calc计算属性可以很好的解决,只需要设置height:calc(100% - 60px),就可以精准的占满中间部分,并且保持和底部按钮的边距。

可惜的是对于低版本的安卓浏览器、ios浏览器包括微信浏览器在内的主流浏览器支持都不好,依然只能弃用。如果兼容性再好一点的话,calc方案应该是最好用且最优雅的一种实现方式。

js

单纯的使用css无法实现,就只能借助js来动态计算内容所需要的高度来进行设置。同时这种方法也几乎不会遇到兼容性的问题,是对优雅降级的一种实践。

题外话

隐藏难看的滚动条。

如果直接设置overflow-y:scroll在ios下始终会出现很丑的滚动条,我们可以对该元素设置以下属性:

margin-right: -20px;padding-right: 20px;

对滚动条进行一个小小的hack,它就再也不会出现了,用户交互时会有和原生滚动一样的感觉,体验更佳。

@prototype 经大大提醒,设置webkit浏览器的私有属性::-webkit-scrollbar能更灵活的控制滚动条,在此感谢。如果只需要隐藏,如下代码即可:

::-webkit-scrollbar{  display: none}

虽然移动端的浏览器webkit内核居多,不过还是要在真机测试后再得出结论,如果有些浏览器不支持这个属性的话,依然可以使用上面的小hack。

-webkit-overflow-scrolling: touch

在ios设备中,利用overflow来模拟滚动会出现卡顿的情况,可以通过设置-webkit-overflow-scrolling: touch来解决,原因是设置后ios会为其创建一个UIScrollView,利用硬件来加速渲染。

这个问题本身并不复杂,甚至需求更改后,实现变的非常简单。但是希望能通过这个小例子能让每一个前端人在思考需求时都能够尽可能的去想更多样的方法来解决问题,即使因为兼容性或其它原因暂时无法实现,在这个过程中获得的成长也是非常有益的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。手机端内滚动效果的几种解决办法,详解移动端实现内滚动的四种解决方案相关文章内容介绍。

相关阅读

世界快报:汉中市城固县百世快递网点查询,城固县百世快递在哪里

全球微头条丨选择高质量的服务器存放你的网站

天天快看点丨贵州省安顺市新场乡有什么快递公司,浦东新场镇为菜篮子稳产保供

消息!贵州省如何网上验证发票,电子发票如何网上验证

世界快看:苹果手机新款什么时候上市(新版苹果手机什么时候上市)

天天视点!最值得买的4款vivo手机 vivo手机性价比高的

【环球新视野】物业公司水费怎么开票,物业公司在提供物业管理服务中收取的水电费该如何计税

月工作总结怎么写模板,领位工作总结怎么写

游戏总监谈《红霞岛》首发加入XGP 压力与机遇并存

PS版《艾尔登法环》免费收藏品奖励 击败葛瑞克获取

全球最资讯丨最终幻想7核心危机再融合商店大成者成就怎么做

今日聚焦!IGN发起游戏行业大事预测投票 XGP涨价得票最多位列第一

观点:《斯普拉遁3》祭典人气火爆致服务器瘫痪 目前正在维修

俄政府推动游戏产业强化计划 希望打造出世界顶级游戏

最容易通过的手机分期(最容易通过的手机分期贷款)

双核平板电脑推荐(双系统平板电脑推荐)

今日热议:最轻的自行车多少钱,世界上最轻的自行车

人生最难的生活状态是一切都刚刚好 过得刚好

【新要闻】安全者摄像头怎么安装视频,监控摄像头怎么安装 安装步骤详解

观热点:《天外武林》Steam特别好评 国产武侠版《欺诈之地》

【全球播资讯】高人气西游变态手游平台推荐 热门西游变态手游平台一览

快看:《卧龙:苍天陨落》神兽白虎介绍 附加负伤加重效果

最终幻想7核心危机再融合D.M.W大成者成就怎么做

高人气最全bt手游app下载排行榜 热门bt手游app推荐一览

当前消息!外媒总结XGP今年前三月入库游戏 《卧龙》值得期待

《我的世界》虚无世界3紫薯种子怎么获得

全球今热点:《英雄联盟》LPL春季赛赛程公布 1月14日正式开赛

世界微动态丨十大安卓福利手游平台推荐 最火的安卓福利手游平台合集

最热门的福利手游平台推荐 最火的福利手游平台大全

ios最火的bt手游app推荐 ios热门bt手游app合集

国产卡牌游戏《非一般职场》更名 恢复Steam国区销售

今头条!NS《索尼克未知边境》试玩版上线欧美服 约2.9GB

【新要闻】《我的世界》虚无世界3心果种子怎么获得

最终幻想7核心危机再融合瀑布宝藏猎人成就怎么做

世界热资讯!《海贼王:时光旅诗》PS版容量曝光 约30GB左右

全球新动态:最终幻想7核心危机再融合功率超标成就怎么做

天天视讯!大量育碧游戏Steam低价区售价暴涨 价格几乎翻倍

环球消息!我要托运宠物 哪能办 大概多少,宠物托运大概多少钱

济南如何查个人违章,济南交通违章怎么查询

环球观察:为啥手机关机后还能被定位 怎样才能定位对方手机位置

每日快讯!苹果手机正常开机是黑屏幕白色苹果 还是白屏幕黑苹果

oppo r11s刷新率是多少?

天天微动态丨外媒盘点十大画面最好PS5游戏:《巫师3》进前三名

重点聚焦!三星平板电脑T550的护眼模式怎么取消

每日快看:S7曲屏手机换个屏多少钱?

世界滚动:最便宜的小米手机多少钱

【报资讯】小米m1908c3je充不上电?

【当前热闻】港版和国行的苹果系列有什么区别?

快讯:苹果手机免费设置铃声(iphone免费设置铃声)

当前观点:全面屏手机现在有哪些啊?

当前热门:OPPOA57手机卖掉得多少钱?

苹果手机发展顺序排列?

全球短讯!京东买苹果手机怎么分期付款

世界热消息:顽皮狗称《美末》像是生化危机的反面 探索情感关系

环球热头条丨索尼打造Playstation游戏宇宙 超10个影视项目开发中

全球百事通!《卧龙:苍天陨落》神兽白虎介绍 附加负伤加重效果

【天天播资讯】三星手机哪些是oled

oppoa11多少赫兹刷新率?

三星f52怎么激活?

京东买的苹果手机可以到苹果店维修吗

三星的质量如何

《全境封锁2》Steam页面锁国区 原定1月12日发售

当前观点:《卧龙:苍天陨落》有17种武器 40余种盔甲支持幻化

三星s8手机什么时候上市

当前消息!刚到手的iphone 6plus需要做什么

滚动:2021年苹果手机续航排名?

oppo哪个手机便宜?

oppo性价比比较高的二手手机?

当前速读:vivo哪个型号配置较好,价钱在2000左右或以下,综合多个方面介绍一下,谢谢:)

【环球时快讯】三星s6国行版手机京东商城现在卖多少钱

三星s9+和a52哪个好?

三星a53续航排名?

vivoX21UD多钱到手合适

天天头条:《最终幻想7:Re》官方发按摩店片段 劳逸结合身体棒

金亨泰新作《Stellar Blade》引骂战 女主是争议中心

热点评!CSGO官方开箱网站在哪里 2023国内的CSGO开箱网站推荐

世界热推荐:漫威暗夜之子绯红女巫到底怎么用

育碧《全境封锁2》Steam已锁国区 由腾讯代理国服

环球观速讯丨《我的世界》虚无世界3机甲法杖怎么获得

《我的世界》虚无世界3月光法杖怎么获得

实时焦点:查尔斯小火车有什么故事背景

焦点快看:漫威暗夜之子2号魔法师塔罗牌在哪

环球观焦点:CSGO良心的开箱网站有哪些 CSGO五个良心开箱网站推荐

世界速看:CSGO有什么好的开箱网站 CSGO免费开箱网站前五名是哪些

全球要闻:《冲就完事模拟器》将于1月30日 登陆PS与NS平台

速读:2017年以来oppo所有的全面屏手机有哪些?

世界微头条丨四代苹果手机行货多少钱 广州地区

智能家居安装培训视频(智能家居安装视频教程)

天天即时看!蓝鲸游戏害了多少人,别让蓝鲸游戏毁了你的孩子

热点聚焦:三星盖乐世s6电池可以换吗

环球快播:CSGO哪些开箱网站概率透明 开箱概率透明的开箱网站

《红霞岛》不是L4D克隆 更像是《孤岛惊魂》

CSGO新手免费箱子在哪开 CSGO新手免费开箱网站大全

世界速读:《工人物语:新兴同盟》PC配置需求公布 GTX970爽玩

天天微资讯!CSGO爆率高的开箱网站有哪些 CSGO爆率超高的开箱网站推荐

全球观天下!漫威暗夜之子旺达有什么玩法

全球动态:二手折叠屏手机为何那么便宜

oppox7支持北斗导航吗?

【环球新视野】如何查询车辆扣分,怎样查询机动车扣分

为什么安卓手机分辨率再高也不如苹果细腻?

三星s8在香港的售价是

【世界独家】三星note20 ultha5g翻盖手机壳的智能小窗口怎么设置?

【环球播资讯】苹果手机丢了怎么能找到

今日热搜:小米6尾插更换多少钱?

全球今亮点!国行苹果显示无效sim卡?

金沙回沙酒钻石5星值得收藏吗?

【世界独家】谁可以告诉我 samsung galaxy s ii 和 samsung galaxy s iii?

焦点热讯:苹果6和6p有什么区别?