flex定位下overflow失效的问题研究
概述
这是我在写移动端页面遇到的问题及解决方法,记录下来供以后开发时参考,相信对其他人也有用。
问题
之前写移动端页面,有一个顶条是导航条,需要固定在页面顶部,并且里面的元素需要可以左右滚动。
但是当导航条设置fixed定位时,发现里面的子元素不能横向滚动。
position: fixed;
top: 0;
left: 0;
overflow-x: auto;
最后通过加一个嵌套元素,给这个嵌套元素设置absolute定位解决:
//嵌套子元素
position: absolute;
top: 0;
left: 0;
overflow-x: auto;
另外还有一个隐藏系统滚动条的需求:
//less文件
&::-webkit-scrollbar {/*滚动条整体样式*/
display: none;
}
延伸1
在移动端其实并不推荐使用fixed定位,除了有一大堆问题之外还有渲染性能的问题。
但是如果使用的话,需要注意以下2点:
- 居中不要用margin,而要用translate。否则会出现如下问题:在移动端上滑动页面的时候,fixed定位元素会发生移动。(重排重绘导致)
- 需要开启GPU加速。
开启GPU加速的代码为:
//代码1:纯GPU加速
webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
//代码2:可以带位移的GPU加速
webkit-transform: translate3d(0,0,0);
-moz-transform: translate3d(0,0,0);
-ms-transform: translate3d(0,0,0);
-o-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
延伸2
对于滚动,safari上面支持-webkit-overflow-scrolling属性,控制safari的滚动回弹效果.
/* 当手指从触摸屏上移开,会保持一段时间的滚动 */
-webkit-overflow-scrolling: touch;
/* 当手指从触摸屏上移开,滚动会立即停止 */
-webkit-overflow-scrolling: auto;
所以为了更好的体验,一般有如下兼容性写法:
overflow-x: auto;
-webkit-overflow-scrolling: touch;
注意,网上说-webkit-overflow-scrolling会有一些bug,所以建议用插件实现,比如betterscroll.js等。
flex定位下overflow失效的问题研究的更多相关文章
- flex布局下overflow失效问题
经常我们会使用flex布局,但是flex布局常常会遇到一些不可思议的麻烦,下面介绍一下overflow遇到的麻烦 我在工作中使用了左右两栏布局 .container { display: flex; ...
- ie6、ie7下overflow失效
如果父对象有overflow:hidden属性,子对象中的position属性是relative或者absolute, 那么在ie6和ie7下父对象的overflow会失效,解决办法是给父对象加rel ...
- iphone下overflow失效问题的解决方法
overflow-y: auto; -webkit-overflow-scrolling:touch; /*加上这个让浏览器支持touch和自动滚动这样界面就可以滚动了*/
- flex布局下el-table横向滚动条失效
如下图,是一种常见的页面结构,我们可以有很多方法实现,inline-block,float,flex等等 但是,最近项目中遇到一个怪事,左边是侧边栏导航,右边是一个数据展示table,el-table ...
- IE6/IE7下margin-bottom失效兼容解决办法及双倍边距问题
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-04-08) 一.IE6/IE7下margin-bottom失效兼容解决办法 1.用padding-bottom代替:2.在 ...
- WindowsFormsHost下MouseWheel失效的解决办法
原文:WindowsFormsHost下MouseWheel失效的解决办法 看了网上有些写的用钩子,但是,在Stack Overflow上找到一个简便的方式
- @transactional注解在什么情况下会失效,为什么。
@transactional注解在什么情况下会失效,为什么. @Transactional的使用: @Transactional public void updateUserAndAccount(St ...
- DevExpress gridview下拉框的再次研究
原文:DevExpress gridview下拉框的再次研究 前几天写了一篇关于研究DevExpress gridview下拉框的随笔(DevExpress gridview下拉框repository ...
- 基于定位下拉框或者需要点击link才显示的下拉框,二次定位与多次定位实现的实际效果区别
还是基于上次那个练习的后续出现的思考,http://www.cnblogs.com/8013-cmf/p/6555790.html 界面: 源码: 写法如下: 继续解释这两种的区别: 1.其实基于定 ...
随机推荐
- python的数字图像处理学习(3)
高级滤波: from skimage import data,color,data_dir import matplotlib.pyplot as plt from skimage.morpholog ...
- unity技巧
在之前的程序编写过程中,虽然对相关的方法进行了实例化,但是在运行的时候总是会出现“未将对象引用设置到对象的实例”,出现该种问题的原因是由于在实例化后,没有对实例化进行引用赋值,所以导致相关变量无法在其 ...
- Time.fixedDeltaTime和Time.DeltaTime
在Update中使用 Time.deltaTime,获取到的是这一帧的时间,如果游戏卡,帧率低,那这个值就大.如果游戏流畅,帧率高,这个值就小,Time.deltaTime = 1.0f / 帧率 在 ...
- 异常处理(异常解析器) 和 对于Properties类型的属性的配置
在程序运行中,有可能因为用户的不当操作,发生异常.. 在springmvc中可以根据不同的异常配置不同的处理方式 1.例如出现 这个类型异常 org.springframework.web.multi ...
- k-SLAM:k-mer Sorted List Alignment and Metagenomics
k-SLAM 是基于大量高通量宏基因组序列数据分析的比对程序,它基于k-mer技术上在reads和序列之间进行比较,然后用Smith-Waterman算法验证.校准是连接在一起组成一个伪组装用来提高特 ...
- Codeforces 1086 简要题解
文章目录 A题 B题 C题 D题 E题 传送门 这场比赛原地爆炸了啊!!! 只做了两道. A题 传送门 手贱没关freopenfreopenfreopen于是wawawa了一次,死活调不出错. 题意: ...
- FASTDFS 安装与开发
FASTDFS介绍 FastDFS开源地址:https://github.com/happyfish100 简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存 ...
- Mysql通过sql语句添加约束和查看约束
一:添加约束 1.添加唯一约束:alter table student add constraint uk_name unique(name); 2.添加外键约束: alter table 表名 ad ...
- asp.net 重写URL方法和封装好的DLL
.net 重写URL方法和封装好的DLL URL重写方法DLL(2.0)
- Java交流分享(522818473)
今天来分享哈自己的技术交流群,记得还是刚接触Java建立的群,那时候学习Java很有动力,经常和群友谈论问题,现在都专注公司业务和技术这一块,很多后端框架都没用除了restful,其他都是封装的,不过 ...