虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过。 1.CSS的color属性并非只能用于文本显示 对于CSS的color属性,相信所有Web开发人员都使用过。如果你并不是一个特别有经验的程序员,我相信你未必知道color属性除了能用在文本显示,还可以用作其它地方。它可以把页面上的所有的东西都变颜色。比如: 无法显示的图片的alt文字 list元素的边框 无序list元素前面的小点 有序list元素前面的数字 还有hr元素
2.CSS里的visibility属性有个collapse属性值:collapse
对于CSS里的visibility属性,相信你用过不下几百次。大多时候,你会把它的值设置成visible(这是所有页面元素的缺省值),或者是hidden。后者相当于display: none,但仍然占用页面空间。
其实visibility可以有第三种值,就是collapse。当一个元素的visibility属性被设置成collapse值后,对于一般的元素,它的表现跟hidden是一样的。但例外的是,如果这个元素是table相关的元素,例如table行,table group,table列,table column group,它的表现却跟display: none一样,也就是说,它们占用的空间也会释放。
但遗憾的是,各种浏览器对collapse值的处理方式不一样。
3.CSS的background简写方式里新增了新的属性值
在CSS2.1里,background属性的简写方式包含五种属性值 – background-color, background-image,background-repeat, background-attachment, and background-position。从CSS3开始,又增加了3个新的属性值,加起来一共8个。下面是按顺序分别代表的意思:
background: [background-color] [background-image] [background-repeat] [background-attachment] [background-position] / [ background-size] [background-origin] [background-clip];
注意里面的反斜杠,它更font和border-radius里简写方式使用的反斜杠的用法相似。反斜杠可以在支持这种写法的浏览器里在position后面接着写background-size。
除此之外,你开可以增加另外两个描述它的属性值: background-origin 和 background-clip.
它的语法用起来像下面这个样子:
.example {
background: aquamarine url(img.png)
no-repeat
scroll
center center / 50%
content-box content-box;
}
关于浏览器的支持情况,大概所有的现代浏览器都支持这些新属性值,但对于一些非常老旧的浏览器(IE6/7/8),最好在代码里提供一些万一不支持的补救机制。
4.CSS的clip属性只在绝对定位的元素上才会生效
之前说到了background-clip,你可能会想到clip属性。它的用法是下面这个样子:
.example { clip: rect(110px, 160px, 170px, 60px);}
它的作用是按指定的尺寸、规定的大小裁剪元素。很多简单,但唯一你需要注意的事情是,clip只会在绝对定位的元素上生效。所有,你必须这样做:
.example { position: absolute; clip: rect(110px, 160px, 170px, 60px);}
但是,你也可以将元素的position设置成position: fixed,因为,根据css官方规范,fixed的元素也属于‘absolutely positioned’元素。
5.元素竖向的百分比设定是相对于容器的宽度,而不是高度
这是一个很让人困惑的CSS特征,我之前也谈到过它。我们大家都知道,当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如padding-top,padding-bottom,margin-top,margin-bottom等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。
6.border属性比你想象的要复杂
我们很多人都用过这样的写法:
.example { border: solid 1px black;}
这里的border属性的用法实际上是一种简写的形式,它分别设置了border-style, border-width, 和border-color — 用一句代码表示它们三个。
但不要忘记,border-style, border-width, 和border-color也都有自己的简写形式。所以,border-width可以写成这样:
.example { border-width: 2px 5px 1px 0;}
这样,四个边的宽度被一次设定。border-color 和 border-style 属性也可以这样做。