发布网友 发布时间:2022-05-14 01:14
共2个回答
懂视网 时间:2022-05-14 05:35
这篇文章给大家介绍的内容是关于如何解决移动端fixed元素不显示的问题,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。上几周给公司app做了一个html5嵌套页面,页面并不复杂,展示内容较多,底部有footer
html结构如下
<style> .main{ position: absolute; top: 0; bottom: 88px; left: 0; width: 100%; overflow-y: auto; } footer{ position: fixed; left: 0; bottom: 0; width: 100%; } <style> <body> <div class="main"> ... </div> <footer></footer> </body>
内容调试完成后插入了一些其他项目的事,后来app开发告诉我要监听页面scroll让我不要用定位布局。我看页面上没有可以输入的地方,不会出现fixed元素乱跑的事情。于是main部分改成了普通布局,然后就出了bug:
安卓上一切正常,IOS10上有时进入页面的时候footer不显示,拖拽或者双击之后才会显示(其他版本的IOS测试说有的又是正常的)
遇到这个问题第一个想法就是把footer的z-index调高,设置到1000,结果无用。仔细观察不显示的页面他们的内容部分都很短,没有撑到footer的位置,猜想是body高度问题,给body加上样式调试
background: #fafafa; min-height: 100vh;
整个页面背景确实变灰了,但是footer依旧不显示
和同事讨论之后,猜测是手机渲染出了层级问题,一开始footer没有渲染出来,click或者touchmove之后页面重新渲染footer就正常了。
当时已经临近上线了,为了尽快解决bug不折腾,给footer设置了tanslateZ,这样相当于创建了一个独立的层级
-webkit-transform: translateZ(1px) transform: translate(1px)
页面上还有1个弹层设置了z-index,footer有了translate弹层覆盖不住,说明tranzlateZ层级更高。弹层设置了translateZ(2px)就正常了
这个方法不太优雅,但好处在不改变布局,情况紧急的时候下还是适用的
相关文章推荐:
css中圣杯布局和双飞翼布局的介绍(附代码)
css中如何实现浮动的元素换行热心网友 时间:2022-05-14 02:43
position:fixed这个属性,但是发现在iphone中并不支持这个属性,菜单会随着滚动条滚动而滚动。后然就想到通过脚本控制来解决(参考jquery mobile),通过touchstart,touchmove和touchend事件来计算clientY变化来相应移动菜单,但是还是发现有两个问题,如果移动的快的话:1.菜单无法及时定位有延迟2.在iphone中touchend事件后还会scroll,看了jquery mobile解决办法它是先隐藏相应菜单,等算好了再显示,总觉得怪怪的,而且这个办法最后还是被项目经理给no了,其实一开始就想到iscroll.js这个框架觉得它蛮不错的。一直有关注它,但是在4.2.5之前版本连内容中A标签都点不了,所以就没想用它,到最后没折了就去蛮试了一下,想不到4.2.5解决很多之前的bug,最后还是用了它来解决。同时也参考了163手机版的做法,采用以下解决办法: