css三大特性

html-css08

css三大特性,第1张

一、CSS层叠性

说明

层叠性是多种CSS样式的叠加,是浏览器处理样式冲突的方式。在HTML中对于同一个元素可以有多个CSS样式存在,当有相同权重的样式存在时,会根据这些样式出现的先后顺序来决定,处于最后面的CSS样式将会覆盖前面的CSS样式。

二、CSS继承性

说明

简单的理解为—“子承父业“,是指子标签会继承父标签的==某些==样式,如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素即可。

三、CSS优先级

在复杂CSS样式表,往往并不是相同样式不同值的堆叠这么简单,经常出现两个或多个不同样式规则应用在同一元素上,这时到底采用哪个样式呢?这就是典型的CSS优先级问题。

处理优先级问题,就是考虑样式权重的高低。这里先给大家介绍一些特殊的情况:

==继承样式的权重为0。==也就是说,在嵌套结构中,无论父元素样式权重多大,子元素继承时,应用在子元素上的权重都为0,即子元素定义的样式会覆盖所有继承来的样式。

==行内样式优先。==应用style属性的元素,其行内样式的权重非常高,可以理解为远大于100。总之,他拥有比上面提高的选择器都大的优先级。

权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具有最大的优先级,或者说排在最后的样式优先级最大。

CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说不管权重如何以及样式位置的远近,!important都具有最大优先级。

上面是一个简单的html案例,对于同一个元素应用多个规则时,规则中可能包含冲突的声明,在style样式表中包含了三个规则集,每一个规则给它指定了不同的字体颜色。标题不可能同时拥有三种颜色,所以最终的效果是显示的红色(red)。

浏览器如何知道并解决声明冲突,这其中层叠指的就是这一系列规则。它决定了如何解决冲突,是css语言的基础。层叠会依据三种条件解决冲突。

叠层的规则是按照这种顺序来考虑的,看下图

这些规则让浏览器可以以预测的方式解决css样式规则中的冲突。

你添加到网页里的样式表并不是浏览器唯一使用的样式表,还有其他类型或来源的样式表。你的样式表属于作者样式表,除此之外还有用户代理样式表,即浏览器默认的样式。用户代理样式表优先级低,你的样式会覆盖它们。

用户代理样式表在不同浏览器上稍有差异,但是大体上是在做相同的事情:为标题 <h1>到 <h6>和段落 <p>添加上下边距,为列表 <ol>,<ul>添加左侧内边距,为链接添加颜色,为元素添加各种默认字号。

浏览器应用了用户代理样式表后才会应用你的样式表,即作者样式表,你指定的声明会覆盖用户代理样式表里面的样式,如果在html里链接了多个样式表,那么它们的来源都相同,即属于作者样式表。

用户代理样式表因为设置了用户需要的样式,所以不会做出一些超出预期的事情,当不喜欢默认样式的时候,可以在自己的样式表里面设置别的样式来覆盖用户代理样式即可。

作为一个标准的前端打工仔,必定熟悉覆盖代理样式。这种做法实际上就是利用了层叠的样式来源规则。你写的样式会覆盖用户代理样式,因为来源不同。

样式来源规则有一个例外,标记为重要 !important 的声明。该声明就会被标记为重要的声明。

标记了 !important 的声明会被当做更高优先级的来源,因此总体的优先级按照由高到低排列,如下所示:

如果无法用来源解决冲突声明,浏览器会尝试检查它们的优先级。理解优先级很重要,因为作者样式几乎都是属于优先级的范围,日常工作接触的大部分开发样式是来自于同源,如果不理解优先级,写出来的css样式会被坑的很惨。

浏览器将优先级分为两部分:HTML的行内样式和选择器的样式。

如果HTML的style属性写样式,这个声明只会作用域当前元素。实际上行内元素属于“带作用域”的声明,它会覆盖任何来自样式表或<style>标签的样式。行内样式没有选择器,因为它们直接作用于所在的元素。

上面就是一个行内样式,设置了颜色color为黄色yellow。

如果你希望在样式表中覆盖行内样式的声明,需要在样式表中对应标签下的声明后添加 !importanta ,这样能够将它提升到一个更高优先级来源。但如果行内样式也被标记为 !imortant 那就无法覆盖它了。最好不要在行内使用 !important ,而是只在样式表中使用 !important 。

优先级的第二部分是由选择器优先级决定。比如,有两个类名的选择器比只有一个类名的选择器优先级更高。具体可以看下面的案例。

通过比较选择器类型来决定哪个选择器优先值最高。

上面的样式表中最终显示的color颜色值为红色(red)。

一个常用的表示优先级的方式是用数组形式来标记,通常用都好隔开每个数。比如“1,2,3”表示用1个id、2个类、2个标签组成。优先级最高的id列为第一位,紧接着是类,最后是标签。

我们可以通过下面的表格来查看各种选择器和对应的优先级。

现在,通过比较数值就能快速明确决定哪个优先级更高。所以上面的顺序是"1,0,0">"0,2,0">"0,1,3">"0,0,4"。而优先级低的样式表会被优先级高的样式表给覆盖。

我们日常开发不建议某个元素的样式表写过长的标签名和类名连体。一般只要能够区分优先级即可。

叠层的第三步,也是最后一步,是源码顺序。如果两个声明的来源和优先级相同,其中一个声明在样式表中出现较晚,或者位于页面较晚引入的样式表中,则该声明胜出。

在上面方法中,选择器优先级相同,都是(0,1,1),最终浏览器呈现的颜色color是灰色gray。

CSS(Cascading Style Sheets)

层叠样式表

优势:

CSS可以提高页面的浏览速度。

缩短改版时间,降低维护费用。

强大的字体控制能力和排版能力。

css容易编写。

可以一次设计随处发布。

更好的控制页面布局。

实现表现和结构、内容相分离。

更方便搜索引擎的搜索/page Rank

样式规则:

语法:选择器{属性1:值1;属性2:值2;...属性N:值N;}

选择器就是要改变页面中的哪些标签元素

声明要用{}括起来,;结束

如果属性中包含空格要用“”括起来

可以指定多个选择器使用相同的样式

样式表:

外部样式表,新建.css文件,在文件中写入样式规则<link rel="stylesheet" href = "xxx.css">

内联样式表,在元素中添加style属性

嵌入式样式表,在html使用<style>标签,<style type="text/css"></style>

选择器:

元素选择器,元素名

id选择器,用#id

类选择器,用.class

后代选择器,选择器1 选择器2

css深化:

就近原则,!important提高元素优先级,伪类选择器,伪对象选择器,@import导入其他css文件,响应式布局可以解决多设备的兼容问题。

文本属性:

font-family:字体

font-size:字体大小

font-style:斜体

font-weight:粗体

color:颜色

line-height:行高

letter-spacing:字符间距

text-decoration:文本修饰

text-overflow:文字溢出处理

white-space : no wrap

text-overflow:hidden

text-align:文本对齐

背景属性:

background-color:背景颜色

background-image:背景图片

background-repeat:背景重复

background-attachment:背景图片附着

基于占满一整行与否,标签分为两大类(文档流):

占满:行级元素(div,p,h1~h6)

不占满:行内元素(span,)

定位属性:

position:定位

absolute:绝对定位

relative:相对定位