在IE10和IE11中发现了一个Bug,就是Sticky footer实际上不会粘贴在页面的底部。我花了很多时间来解决这个问题,但始终没有成功。
起初,我真的很生气。在Flexbox出现之前,如果在不知道页脚的确切尺寸情况之下,要使用纯CSS来实现Sticky Footer的效果是不太可能。Flexbox改变了这一切,可以使用CSS解决这个问题。
失望之后,我最终得出一个结论,这不是什么大不了的事情。我的意思是,从渐进增强的角度来看,我的解决方案还是相当不错的。虽然它在IE并不完美,但不至于坏得一塌糊涂,内容依然可以访问,它只会在较小的内容页面上展示,而在较长的页面上,它看起来和Chrome、Firefox、Opera和Safari浏览器得到的展示很像。
几周前,我在Github看到一个新的请求,在IE下使用@media规则来解决Sticky Footer的问题。这让我再次思考起这个问题,我决定找到一个特定的解决方案,而不再使用任何浏览器特殊的Hack技巧。
事实证明了是有相应的解决方案可以实现的,也再次证明了我自己还是不够努力。
在这篇文章中,我将解释这个解决方案,并且讨论一些我在浏览器中发现的的Bug。并且对相应的Bug提出一些修复建议,让Flexbox能更好的实现跨浏览器的兼容。
有哪些Bugs呢?
Flexbox规范还没有最终确定,所以自然会有一些最新的草案和浏览器实现滞后现象。本文不打算在背后对任何组织进行指指点点,他们的目的是帮助我们做前端开发的人员管理好浏览器的不一致。
下面列出了我在制作Sticky Footer案例时在各个浏览器是碰到的问题清单:
在IE10~11浏览器中,flex项如果设置了最小高度(min-height)将会忽略它们的父容器的高度(height);
Chrome、Opera和Safari浏览器中flex项目没有最小内容的概念;
IE10~11在flex标准中不允许出现不带单位值的flex-basis
min-height的问题
在IE10和IE11中,min-height属性可以设置flex容器列方向的大小,但是,如果容器的flex项目在不知道他们父容器的大小时,也就是没有给他们父容器设置height时,设置min-height将会失效。
这个问题就存在我的Sticky Footer案例中,因为Sticky Footer布局中就需要给内容设置一个min-height为100%(或100vh)的声明,确保内容区域至少和浏览器窗口的高度是一样高。
既然flex项目无法识别min-height,我们就需要找到另一种能让其工作的方式。
flex项目内容最小尺寸
当一个大的flex项目放到flex容器中时,其他的flex项目就会相应的变小(这就是flex布局的算法)。flex-shrink会根据内容来进行计算。但许多浏览器刚好与其相反,他们不应该允许flex项目无限的缩小。他们小到最低宽度或高度的声明时不应该再继续缩小,如果没有声明最低宽度或高度,应该缩小到其内容的尺寸为止,不再继续缩小。
Flexbox规范是这样描述的:
默认情况下,flex项目收缩后不会低于其最小内容尺寸(最长单词的长度或固定大小的元素)。为了改变这一状况,给flex项目设置min-height或min-wdith属性。
Chrome,Opera和Safari目前已经忽略了这个规范,让flex项目可以缩减为零。作为一个结果,你的内容就会重叠在一起。
不带单位的flex-basis
之前发布的IE10版本的flexbox规范时表示,flexbox项目在使用flex要需要设置单位。
如果更想的大小是“0”,它必须指定一个单位(如0px)以避免歧义;不带单位的”0“要么被视为灵活性,要么被视为一个语法上的错误。
这不是真正的规范,但IE10~11仍然把它当作是真实的。如果您使用flex声明了一个1 0 0,那么这个规则在IE10~11中将被视为是一个错误,整个规则的灵活性将被浏览器忽略。
找到一个替代Sticky Footer的解决方案
我选择Sticky Footer布局做为本文的主要例子,那是因为遇到很多人都在想找到一个跨浏览器的解决方案。但是在我们正式进入介绍细节之前,先让确认一下我们都是在同一个页面上。
下面是我用来制作Sticky Footer布局的结构:
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天