在safari上,解决fixed失效问题
2024-08-30 06:26:09
一个页面中有头部、底部和中间内容区域,底部固定在屏幕底端。
头部header |
内容main |
底部footer |
方法一、在main上使用fixed定位,加上overflow-y属性。
.main {
position: fixed;
top: 50px;
bottom: 50px;
overflow-y: scroll;
}
不推荐这个fixed方案,因为页面偶尔卡住不动。
方法二、中间的main不设定位,高度100%,再padding头部和尾部,
其中头部和底部的定位设为absolute
会比设为fixed
体验更好(况且fix布局在移动端本来就有各种各样的问题,还是尽量避开:) )。
html, body {
height: %;
}
main {
padding: 50px ;
height: %;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
ps:webkit-overflow-scrolling:touch偶尔卡住或不能滑动的bug
最常见的例子就是:
- 在safari上,使用了
-webkit-overflow-scrolling:touch
之后,页面偶尔会卡住不动。 - 在safari上,点击其他区域,再在滚动区域滑动,滚动条无法滚动的bug。
- 通过动态添加内容撑开容器,结果根本不能滑动的bug。
1) 保证使用了该属性的元素上没有设置定位
如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为 position: static
这样会解决部分因为定位(relative、fixed、absolute)导致的页面偶尔不能滚动的bug。
2)如果添加动态内容页面不能滚动,让子元素height+1
如果在-webkit-overflow-scrolling:touch
属性的元素上,想通过动态添加内容来撑开容器,触发滚动,是有bug 的,页面是会卡住不动的。
方法就是在webkit-overflow-scrolling:touch
属性的下一层子元素上,将height加1%或1px。从而主动触发scrollbar。
main-inner {
min-height: calc(% + 1px)
}
你也可以直接加伪元素上:
main:after {
min-height: calc(% + 1px)
}
文章摘抄自:https://www.cnblogs.com/xiahj/p/8036419.html
最新文章
- Unity基础知识学习笔记二
- 通过全局getApp获取全局实例获取数据
- JavaScript UI选型及Jquery EasyUI使用经验谈
- (一)jvm
- IOS的UI总结
- 算法对比:Prim算法与Dijskra算法
- M0、M1、M2、M3都是用来反映货币供应量的重要指标
- Unity GUI 用C#和Javascript写法的区别
- 安卓手机微信页面position: fixed位置错误
- 手把手教做单点登录(SSO)系列之一:概述与示例
- CSS学习笔记一:css 画平面图形
- 【安全开发】浅谈JSP安全开发之XSS
- php serialize(),unserialize()
- 部署php的正确姿势
- 使用VS2013 + EF6 连接Mysql数据库
- bash shell 合并多个文件内容到一个文件、查看多少行代码
- Elasticsearch四种常见的相关度分数优化方法
- Matlab面向对象编程基础
- VMwareWorkstations中安装ubuntu,apt install报E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
- Oracle 查询当前系统时间十分钟之前的记录,时间比较SQL