一、CSS层叠性
是指多种CSS样式的叠加,是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉
比如先给某个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,这就是样式冲突。
一般情况下,如果出现样式冲突,则会按照CSS书写的顺序,以最后的样式为准。
1.样式冲突,遵循的原则是就近原则。 那个样式离着结构近,就执行那个样式。
2.样式不冲突,不会层叠
3.CSS最后的执行口诀: 长江后浪推前浪,前浪死在沙滩上。
二、CSS继承性
所谓继承性是指书写CSS样式表时,子标签会继承父标签的某些样式,如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素即可。
简单的理解就是: 子承父业。
CSS最后的执行口诀: 龙生龙,凤生凤,老鼠生的孩子会打洞。
注意:
恰当地使用继承可以简化代码,降低CSS样式的复杂性。子元素可以继承父元素的样式(text-,font-,line-这些元素开头的都可以继承,以及color属性)
三、CSS优先级
定义CSS样式时,经常出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题。在考虑权重时,初学者还需要注意一些特殊的情况,具体如下:
1.继承样式的权重为0。即在嵌套结构中,不管父元素样式的权重多大,被子元素继承时,他的权重都为0,也就是说子元素定义的样式会覆盖继承来的样式。
2.行内样式优先。应用style属性的元素,其行内样式的权重非常高,可以理解为远大于100。总之,他拥有比上面提高的选择器都大的优先级。
3.权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具有最大的优先级,或者说排在最后的样式优先级最大。
4.CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说不管权重如何以及样式位置的远近,!important都具有最大优先级。
CSS用的是类C#语言的标准。书写方法自由灵活,没有一定的局限。但是常期以来为了阅读和维护等方面的经验,一般都是这样的格式:
标名 {
属性:属性值
属性:属性值;
}
当然这样大家都能理解,你自己也好维护,没有什么特殊的要求的!
为了便于阅读有人建议,CSS分为以下方面的控制:
先写位置等:
如:position:absolute
top,left,width,height等,
空一行,再写布局方面的,如:margin,padding等;
空一行,写字体格式:如line-height等
再空一行,写字体相关!如:font-size,font-color等;
最后是其他的属性!
但一般情况下,我们还是没有必要写那么多的属性值对的!所以就很少有人去空行做这些东西了!
但是一般内容较少时,可以直接写在一行,并不影响阅读的!
纠正一点的是:CSS文件进行调用时并不像一楼所说!不换行可以减少代码的大小!这是毫无根据的臆断!因其会自动解释换行和空白的!代码的大小是因为我们写了一些没有必要的东西所形成的时空代价,比如在body中已经有font-size:9pt而在BODY中的一个DIV中,如果要设置字体为9pt时没有必要再定义font-size:9pt了,如果再定义就是出现代码时的增大。还有一些默认也没有必要写出。
如果真如一楼所说,我想问一下一楼:你知道吗,在CSS中是可以加注释的,请问注释会不会增加代码量?答案是不会!因为其不运行!
sorry,对不起楼上,我说的是运行方面的,没有说下载方面的事。恕我直言,如果有一个人一个不足0。2K的CSS而写了N个GB的注释的话,那他一定有病了!注释不是发文章,一个CSS文件最多能有多少注释?不过我经常遇到写好的CSS进行压缩加密的情况,为了防止别人偷看,至于说能有多少,一个回车只是一个字符,占8bits,一个byte,请问一下,连写与其能有多大分别?再者请问一下为什么还要分开写呢?这是代码的维护时很难读懂的情况下还要讲时间代价吗?
程序的时空代价是指:运行时间与编写时间的相比,存储空间与运行空间的对比。
对于离散型网页来说,下载页面的同时还在下载CSS文件,而且CSS会放在机器的临时文件夹中,这样,整个网站也用不了下载几个CSS,且下次打开网页不须再下CSS。这样你认为呢?