这次我们来看下几个css简洁优雅的的使用技巧,特此声明,这里说的 CSS 并不止包含 CSS,也包含 CSS 预处理器(Less Sass 等),愿各位看官不要纠结于此。
尽量使用 padding 代替 margin
padding
和 margin
两个是常用的属性,但是属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠,所以如果 margin
使用的过于频繁的时候,Box 的垂直距离可能就会发生重叠。第一个子元素的 margin-top
值会加在父元素上的 bug,最后一个子元素的 margin-bottom
也存在类似的问题。
原因:所有毗邻的两个或多个盒元素的 margin
将会合并为一个 margin
共享。所以我们可以在首位元素使用 padding
来替代 margin
。当然有的时候使用 padding
不能满足需求,这时你也可以在“非空内容”这个条件做文章。即在父元素添加一个伪元素。
position:fixed 降级问题
开发中遇到的“吸顶”问题,就是position:fixed
这个属性。如果父元素有使用transform
,fixed
的效果会降级为 absolute
解决方案
既然会降级为 absolute
效果,我们该怎么解决这个问题呢?我们就改考虑什么情况下 fixed
和 absolute
的表现效果会是一样的。即当使用 fixed
的直接父元素的高度和屏幕的高度相同时 fixed
和 absolute
的表现效果会是一样的。如果这个直接父级内的元素存在滚动的情况,那就加上 overflow-y:auto
。
合理使用 px | em | rem | % 等单位
在 CSS 中有许多距离单位,比如 px | em | rem | %,还有 CSS3 中的 vh | vw 等单位。px是pc端最常用的单位,但是再移动端自适应的要求下,使用的场景就不是很多了,以下几种小的适用场景。
比较小的图案
比如画一个 r 为 5px 的圆,如果我们使用 rem 作为单位,我们很快会发现在一些机型上的图案不圆,会呈现椭圆形。这是由于 rem 转 px 会存在精度丢失问题。
1 | // less |