flex布局与float的冲突
2015年的某一天,我在某外企当码农,用户对浏览器的使用不像我们大天朝,因此心情上轻松了不少。有一次,我和文博同志接到了一个新网站的任务,我无意中(还是经文博的提起后?)在CSS-Tricks上看到了一篇关于Flexbox的入门介绍,发现这和之前接触的float+margin+padding的布局大不一样,我想,那我们就用flex布局吧!这是第一次接触并使用到Flex布局,可以说用得很浅。
在后来一次的工作中,我遇到了这样一个很普通的场景,同一行的DIV,有两块:左和右,我自然地通过 float:right
来将DIV右到了右边。
1 | .container { |
1 | <div class="container"> |
然而事情发生了转折,left-div 和 right-div 的高度是不一样的(字体大小不一样),但是在同一行上都需要居中对齐,我于是想到了flex布局。
通过 flex:space-between
将元素分别漂流到了两遍,并设置 align-items:center
来实现垂直居中, 示例如下:
1 | .container { |
但是我忘记将里面的 .right
样式移除,而且在chrome之下,其表现是很正常的,我也以为事情完成了。
可是在后面真实的手机测试中,尤其是比较低版本系统的安卓手机(Android 4.1.1, webkit默认浏览器),我们发现right-part这一块的DIV,直接消失了! 经过debuggap的调试,我发现float:right;
一旦拿掉,DIV就回来了。
注:邧一峰老师的flex介绍写得也很适合我们,附上链接 flex布局教程