CSS SECRETS 总结(1)

作者:LEA VEROW


  1. 尽量减少代码重复:当某些值相互依赖时,应该把它们的相互关系用代码表达出来
font-size:20px;
line-height:1.5;  //而不是 line-height:30px;

除此之外,我们应该多用em,rem或者百分比单位与字体大小或父元素进行关联。

  1. 继承:inherit可以应用在任何CSS属性上,而且它总是绑定到父元素的计算值(对于伪元素,则会取生成该伪元素的宿主元素)。
.callout{
  position:relative;
  ...
}
.callout::before{
  content:"";
  border:inherit;
  background:inherit;
  ...
}
  1. 相信你的眼睛而不是数字:视觉错觉在任何形式的视觉设计中都普遍存在,在网页设计中也不例外。比如在一个文本容器中指定相同的内边距,我们会看到上下的内边距比左右的大,而实际上它们是相等的。


  2. 关于媒体查询:媒体查询不能以一种连续的方式来修复问题,如果大部分代码并不是以弹性的方式来编写的,那么媒体查询只不过是修补了某个特定分辨率的问题而已——这相当于把灰尘扫到地毯下面。还有,媒体查询的断点不应该有具体的设备来决定,而是根据设计自身来决定。一些方法可以采用来避免不必要的媒体查询:

  • 使用百分比长度取代固定长度,退而取之也应该尝试使用vw、vh、vmin和vmax等和视口相关的单位。
  • 在较大分辨率下得到固定宽度,使用max-width比width更好,因为它可以适应较小的分辨率。
  • 为替换元素(img、object、video、iframe等)设置一个max-width:100%。
  • 如果背景图片需要铺满容器,使用background-size:cover就可以了。
  • 进行行列式布局时,应该让视口的宽度来决定列的数量,flex可以实现这一点。
  • 使用多列文本时,指定column-width而不是column-count,这样它就可以在较小的屏幕上自动显示为单列布局。

总的来说,我们要尽最大努力实现弹性可伸缩的布局,并在媒体查询的各个断点区间内指定相应的尺寸。

所以,如果你发现需要一大堆媒体查询才能实现你想要的效果,不妨回头审视一下你的代码,因为在所有的情况下,响应式都不是唯一需要考虑的问题。

  1. 使用简写:合理使用简写是一种良好的防卫性编码方式,可以抵御未来的风险。当然,如果我们要明确覆盖某些值的时候,展开式编写是必须的。其实,展开式编写和简写的配合可以发挥出很大的作用。
background:url(xx1.png) no-repeat top right / 2em 2em,
                    url(xx2.png) no-repeat bottom right / 2em 2em,
                    url(xx3.png) no-repeat bottom left / 2em 2em;

我们可以改写为:

background:url(xx1.png)  top right ,
           url(xx2.png)  bottom right,  
           url(xx3.png)  bottom left;
background-size:2em 2em;
background-repeat:no-repeat;

你可能感兴趣的:(CSS SECRETS 总结(1))