`

深入理解 CSS

    博客分类:
  • css
 
阅读更多
转自:http://www.ibm.com/developerworks/cn/web/1009_chengfu_dojocss/
选择器和声明
选择器(selector)定义了一种模式匹配规则,用来选择当前文档中的元素。符合规则的元素将被应用上与该选择器对应的样式声明。CSS 提供了一些基本的选择器。基本的选择器也可以进行组合,形成复杂的表达式。基本选择器的具体说明如下:

  • 通用选择器(*):匹配文档中的任意元素。
  • 元素类型选择器:匹配文档中的某类元素。如 span匹配文档中所有的 span元素。
  • 后代选择器:匹配作为特定元素的后代出现的元素。比如 div span匹配包含在 div元素中的 span元素。
  • 直接后代选择器:匹配作为特定元素的直接后代出现的元素。比如 div > span匹配父节点是 div元素的 span元素。
  • 相邻兄弟元素选择器:匹配与特定元素有相同父节点,并且直接出现在该元素后面的元素。比如 div + span匹配与 div元素父节点相同,并且直接出现在 div元素之后的 span元素。
  • 属性选择器:匹配属性值满足某些条件的元素。如 div[title]匹配有 title属性的 div元素;div[title=Header]匹配 title属性的值为 Header的 div元素。
  • 类选择器:匹配包含某个 CSS 类的元素。如 .header匹配包含了 CSS 类 header的元素。类选择器实际上是属性选择器的一种,是根据属性 class的值来进行选择的。
  • ID 选择器:匹配指定 ID 属性值的元素。如 #myDiv匹配 ID 为 myDiv的元素。
  • 伪元素和伪类选择器:匹配一些无法根据其在文档树中的位置来定位的元素。常用的伪元素选择器有::first-line匹配段落中的第一行;:first-letter匹配块中第一行的第一个字母。常用的伪类选择器有::link和 :visited分别匹配没有访问过的和已经访问过的链接;:hover匹配当前鼠标悬浮其上的元素;:active匹配当前被用户激活的元素;:focus匹配当前有输入焦点的元素。


声明是 CSS 中样式属性的名值对,其形式是“属性名称 : 属性值”。如声明“font-color : red”把样式 font-color的值设为 red。

属性继承

对于 CSS 中的某些样式属性来说,如果元素没有显式的指定一个值,该属性就会继承该元素的父元素的这个属性的值。常见的会被继承的属性有:visibility、color、font和 text-decoration等。需要注意的是,发生属性继承的时候,子元素继承的是父元素属性的计算值,而不是指定值。比较典型的例子是通过 em或是百分数指定的字体大小。比如父元素的字体大小的声明是“font-size : 1.2em”,而实际计算出来的字体大小是 12px,则子元素继承的是 12px,而不是 1.2em。通过设置属性的值为 inherit可以让该属性强制继承其父元素对应属性的值。


CSS 规则的层叠顺序

正如 CSS 的全称“层叠式样式表(Cascading Style Sheets)”所表示的含义一样,CSS 中的样式声明规则是有层叠顺序的。可以在不同的地方把相同的规则应用在相同的元素上面。比如对某个 P 元素,某条 CSS 规则将其文本颜色设为红色,而另外一个规则把其文本颜色设为蓝色。显然这两条规则是互相冲突的。在具体显示的时候,浏览器会根据层叠顺序来判断应用哪条规则,从而确定该 P 元素的文本颜色。层叠顺序的基本原则很简单,那就是越具体的规则,优先级越高。浏览器根据优先级高低来确定应用哪条规则。具体的来说,一条规则的优先级与其使用的选择器和所在的位置相关。下面分别进行说明。

根据所使用选择器的优先级顺序

在判断一条规则的优先级时,会首先判断其所用的选择器的优先级顺序。按照优先级从高到低的顺序排列如下:
  • 使用了 !important声明的规则。
  • 内嵌在 HTML 元素的 style属性里面的声明。
  • 使用了 ID 选择器的规则。
  • 使用了类选择器、属性选择器、伪元素和伪类选择器的规则。
  • 使用了元素选择器的规则。
  • 只包含一个通用选择器的规则。


当浏览器需要判断应用互相冲突的规则中的哪条规则的时候,首先会根据上面的顺序来判断优先级。优先级高的规则就会被应用。如果优先级相同,则需要进一步判断所使用的选择器的个数。选择器数目较多的规则优先级较高。比如下面两条规则:#myDiv .header .main {}和 #myDiv .header span {},前者的优先级更高。因为前者有一个 ID 选择器,两个类选择器;而后者也有一个 ID 选择器,但是只有一个类选择器。上述的优先级判断算法类似于一般的数字大小比较,首先比较最高位,如果相同的话,再比较次高位,以此类推。

如果按照上面的优先级顺序来判断,规则的优先级相同的话(即所用的选择器类别相同,同类选择器的数量也相同),则需要进一步根据规则所在的位置来判断。

根据规则所在位置的优先级顺序

对于规则所在的不同位置,可以按照优先级从高到低排列如下:

  • 在 HTML 文档的 head元素中的 style元素中定义的规则。
  • 通过 style元素中的 @import语句引入的样式表中定义的规则。
  • 通过 link元素引入的样式表中定义的规则。
  • 在 link元素引入的样式表中,再通过 @import语句引入的样式表中定义的规则。
  • 最终用户提供的样式表中定义的规则。
  • 浏览器默认提供的规则。


如果规则所在的位置相同的话,出现在样式表后面的规则的优先级更高。

注意: 对于上面提到的两套规则机制,一个重要的例外就是用户样式表中的包含的带 !important的声明具有最高的优先级,超过网站本身提供的样式表中带 !important声明的规则。这样设计的意图是允许用户使用自己提供的样式来覆盖网站提供的样式,以提高网站的可访问性。

<style> 
    * { color : black; } 
    p { color : gray; } 
    .p_red{ color : red; } 
    p.p_blue { color : red; } 
    #p1 { color : green; } 
    .p_blue { color : blue; } 
    .p_blue2 { color : blue !important;} 
</style>
<body> 
    <p id="p1" class="p_red"> 示例文本 1</p> 
    <p class="p_red"> 示例文本 2</p> 
    <p class="p_blue"> 示例文本 3</p> 
    <p class="p_blue p_blue2"> 示例文本 4</p> 
</body>





分享到:
评论

相关推荐

    深入了解CSS3新特性

    资源名称:深入了解 CSS3 新特性资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    深入理解CSS中的属性模块

    在深入理解CSS属性模块时,需要关注的几个关键知识点包括: 一、CSS类的命名与维护 在CSS中,类(class)是常用的选择器之一,用于选择具有特定名称的元素并为它们定义样式。随着项目规模的扩大,维护和命名类会变...

    上传CSS帮助文件

    在这个主题下,我们可以深入理解CSS的基础概念、语法、选择器以及一些高级技巧。 首先,CSS的基本概念包括盒模型,它描述了HTML元素如何占用空间,包括内容、内边距、边框和外边距。理解盒模型对于精确控制元素尺寸...

    纯CSS3卡通太阳照射动画特效.zip

    首先,让我们深入了解CSS3中的关键帧动画(@keyframes)。这个特性允许我们定义一个动画的起始状态和结束状态,甚至可以在中间设置多个阶段,让元素在这些阶段之间平滑过渡。在"纯CSS3卡通太阳照射动画特效"中,@...

    网页编程帮助文档+CSS

    通过阅读这份文档,开发者可以深入理解CSS2.0的规则,如何控制文本样式、颜色、背景、边框、布局等,以及如何实现响应式设计的初步概念。 3. **CSSFilter2.0_DOC_CN.chm**:CSS滤镜是用于修改图像外观的一种技术,...

    css禅意花园源代码

    《CSS禅意花园》是CSS设计领域的一部经典著作,其源代码的提供为学习者提供了深入了解CSS布局、样式和设计技巧的宝贵资源。通过分析这些源代码,我们可以深入理解CSS在网页设计中的强大功能和灵活性,从而提升自己的...

    CSS+手册(还不错的资料)

    本手册《CSS+手册》将带你深入了解CSS的核心概念、选择器、布局模式、响应式设计以及高级技巧,帮助你提升网页设计的能力。 ### 一、CSS基础 CSS通过定义样式规则来控制元素的外观,如字体、颜色、大小、排列方式...

    5日精通CSS层叠样式表

    在短短的五天内,通过系统的学习,你可以深入了解CSS的各个方面,从而在网页设计领域打下坚实的基础。 CSS(Cascading Style Sheets)是用于描述HTML或XML(包括各种XML方言如SVG、XHTML等)文档样式的样式表语言。...

    CSS世界 张鑫旭 2017.12 Pg328 8元1

    CSS,但仅限于基本应用,对于CSS的深入理解和高级技巧知之甚少。这就导致了前端开发领域普遍存在的一个问题——技术层次参差不齐,真正能解决复杂布局和优化性能的高手并不多。 《CSS世界》正是为了满足前端开发者...

    CSS参考手册包 CSS参考手册大全

    学习这些手册中的知识点,不仅可以帮助开发者熟练掌握CSS的基本语法和用法,还可以深入了解CSS的高级特性,如布局技术、动画效果和响应式设计。对于前端开发者来说,熟悉并掌握CSS是提升网页设计和开发效率的关键。...

    精通CSS第二版、CSS那些事、CSS权威指南 第3版

    这份压缩包包含三本关于CSS的重要书籍:《精通CSS:(第2版)》、《CSS那些事儿》以及《CSS权威指南 第3版》,这些都是深入理解和掌握CSS技术的宝贵资源。 首先,我们来看《精通CSS:(第2版)》。这本书由Peter ...

    鸟类网店CSS模板_鸟 网店 商城 花纹 棕色 导航.zip

    首先,让我们深入了解CSS的作用。CSS是一种样式表语言,用于描述HTML或XML(包括SVG、MathML等各种XML方言)文档的呈现。它控制了元素的布局、颜色、字体、大小、间距以及页面的其他视觉属性,使开发者能够将内容和...

    CssInDepthBook:深入了解CSS深度学习书(https

    首先,我们需要了解CSS的基本语法,包括选择器(如元素选择器、类选择器、ID选择器)、属性和值。CSS的选择器用于定位文档中的特定元素,而属性和值则定义了这些元素的样式。例如,`color`属性用于设置文本颜色,`...

    纯CSS3实现圣诞老人的驯鹿动画效果源码.zip

    在这个项目中,我们将深入理解CSS3的关键帧动画(keyframe animations)、过渡(transitions)、选择器(selectors)以及盒模型(box model)等核心概念。 首先,关键帧动画是CSS3中的一大亮点,它允许开发者定义...

    css禅意花园 CSS Zen Garden

    这不仅体现了CSS的灵活性,还强调了设计者对CSS深入理解和熟练掌握的重要性。 **CSS基础** 在深入理解CSS禅意花园之前,我们需要回顾一下CSS的基础知识。CSS是一种样式表语言,用于定义HTML或XML(包括如SVG、Math...

    《css in depth》高清英文原版

    《CSS in Depth》是一本备受推崇的英文原版书籍,专为那些希望深入理解并精通CSS(层叠样式表)的读者而设计。这本书以其高清的品质和易读性著称,是提升CSS技能的理想选择。作者通过深入浅出的方式,帮助读者巩固...

    css书收集

    本资源包名为"css书收集",包含三本关于CSS的电子书:《CSS2中文手册》、《css样式表手册》和《5日精通CSS层叠样式表》,这些书籍将帮助读者深入理解和掌握CSS的相关知识。 《CSS2中文手册》是CSS2规范的中文版,...

    css实战手册源代码

    《CSS实战手册》是一本深受前端开发者欢迎的经典书籍,它为初学者提供了全面的CSS基础知识,同时也为有经验的开发者提供了深入理解CSS特性的实践案例。这个源代码压缩包包含了书中提到的各种示例,帮助读者更好地...

    学习CSS必备 5日精通CSS EXE电子书.rar

    这个5日精通CSS的电子书可能会涵盖这些知识点,并提供逐步的学习指导和示例,帮助读者快速上手并深入理解CSS。无论你是网页设计师还是前端开发者,熟练掌握CSS都将极大地提升你的工作效率和作品质量。

Global site tag (gtag.js) - Google Analytics