admin管理员组文章数量:1794759
CSS flex布局 flex
问题记录:
html如下:
<div class="flex-container"> <div class="box B">B</div> <div class="box D">D</div> <div class="box E">E</div> </div>css如下:
每个flex item 均匀分配剩余空间,.B的flex-grow:3 不生效。
原因分析:
一开始考虑是因为 CSS 的选择器之间有优先级。
优先级关系:内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器
但是 .flex-container > div 不算一个标签选择器,因而在 菜鸟教程 找到了如下规则。
当一个标签同时被多个选择符选中,我们便需要确定这些选择符的优先级。我们有如下规则:
CSS 优先规则4:计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。
因此,.flex-container > div 选择器的 (a)id选择器个数=0,(b)类选择器、属性选择器、伪类选择器个数之和 = 1 (c)标签选择器和伪元素选择器个数之和 = 1。 .B类选择器的 (a)id选择器个数=0,(b)类选择器、属性选择器、伪类选择器个数之和 = 1 (c)标签选择器和伪元素选择器个数之和 = 0。
因而 .flex-container > div 选择器的优先级高于 .B 类选择器。 所以最后 flex items 的 flex-grow 都为1,因而出现了上图所示的平均分配父容器剩余空间。
解决方案:
版权声明:本文标题:CSS flex布局 flex 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686969095a123640.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论