浅谈解决space-evenly兼容性问题的两种方法
flex 从 2009 年推出到现在,已经得到了几乎所有浏览器的支持。作为一种简便的、响应式的布局方案,flex 给我们的布局开发带来了很多便利。
justify-content 属性是 flex 布局中很常用的属性,定义了子元素在主轴上的对齐方式。它有 flex-start | flex-end | center | space-between | space-around | space-evenly
等属性。
但是,笔者在一次开发中发现 space-evenly 在使用中会面临兼容性问题,在 iPhone 5s 上测试时发现设定了 justify-content: space-evenly 的容器中的子元素并没有按期望中的一样沿着主轴均匀分布,而是都挤在了左边。
.container { display: flex; justify-content: space-evenly; }
查看 Can I use space-evenly? 发现,space-evenly 的支持范围确实相对较小。
MDN 上对 space-evenly 属性的定义是:
flex 项都沿着主轴均匀分布在指定的对齐容器中。相邻 flex 项之间的间距,主轴起始位置到第一个 flex 项的间距,主轴结束位置到最后一个 flex 项的间距,都完全一样。
为了解决这个问题,笔者想到了两种方式:
利用 flex-grow
flex-grow 指定了容器的剩余空间应该如何分配给子元素。
让所有子元素同时拥有 flex-grow: 1 属性,它们会等分容器的空间,也就实现了「均匀分布、间距相等」的效果。
.container { display: flex; .child: { flex: 1; } }
利用 space-between
另外一种方式是利用和 space-evenly 属性类似的 space-between。这两个属性很接近,而 space-between 也基本不会遇到兼容性问题。
不同的是,在 space-evenly 下,每个子元素的两侧都有同样的空间,而在 space-between 下,每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。
假设在一个容器中有五个子元素,用那么这两个属性的差别可以简单表示成:
// space-evenly |--子--子--子--子--子--| // space-between |子--子--子--子--子|
也就是说,space-evenly 会比 space-between 多了两边的两个空隙,而 space-between 的第一个和最后一个子元素是紧贴容器边缘的。
为了填补这个差异,我们可以用两个伪元素,来让容器在设定为 space-between 的时候,拥有七个子元素,也就拥有了「六个空隙」:
|伪--子--子--子--子--子--伪|
代码:
.container { display: flex; justify-content: space-between; &:before, &:after { content: ''; display: block; } }
到此这篇关于浅谈解决space-evenly兼容性问题的两种方法的文章就介绍到这了,更多相关space-evenly兼容性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
相关文章
解决flex布局space-between最后一行左对齐的方法
这篇文章主要介绍了解决flex布局space-between最后一行左对齐的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随2020-07-20css3 flex布局 justify-content:space-between 最后一行左对齐
这篇文章主要介绍了css3 flex布局 justify-content:space-between 最后一行左对齐,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的2020-01-02解决display:flex属性 justify-content: space-between换行后的排版问
这篇文章主要介绍了解决display:flex属性 justify-content: space-between换行后的排版问题 ,需要的朋友可以参考下2019-05-17详解解决flex布局的justify-content: space-between对齐方式的一个BUG
这篇文章主要介绍了详解解决flex布局的justify-content: space-between对齐方式的一个BUG的两种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编2019-05-08- 这篇文章主要介绍了使用white-space来阻止文字显示自动换行的方法,同时文中也介绍了超出规定长度部分隐藏等相关的一些技巧,需要的朋友可以参考下2015-07-13
- 在手机上代码示例会显示出长长的水平滚动条,通过使用CSS的 white-space属性, 使代码在小屏幕上进行换行(wrap)以避免恼人的滚动条2014-05-30
css文本换行属性word-wrap和white-space使用总结
td文字内容不换行,发现是:white-space: nowrap,即强制文本不进行换行,接下来对文本换行的属性使用进行总结下,感兴趣的朋友可以参考下哈2013-03-31网页制作中表格属性CellPad、CellSpace和Border描述及使用介绍
网页制作中经常会遇到表格的CellPad、CellSpace和Border这些属性是什么意思呢?很是疑惑,于是搜集整理一些,感兴趣的朋友可以参考下2012-12-26css中强制换行word-break、word-wrap、white-space区别实例说明
css中强制换行word-break、word-wrap、white-space区别实例说明,需要的朋友可以参考下2012-03-25IE6,IE7下实现white-space:pre-wrap
我们知道,在默认情况下,HTML 源码中的空白符均被显示为空格,并且连续的多个空白符会被视为一个,或者说,连续的多个空白符会被合并。2010-01-01
最新评论