`
叶落黄昏
  • 浏览: 17608 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

CSS样式优先级

阅读更多

在CSS中使得一个具体的元素获得一个样式定义属性集合,有以下几种方式:

1、直接在元素中通过style来定义标签样式(许多JS是通过这种方式来动态控制元素的样式)
比如有以下代码
<div tyle="background:black">
</div>
通过style方式来定义了div标签的样式,这种方式定义样式在css规范中有很高的优先权(1000)

2.通过ID选择器来获取样式定义,有以下代码:
<div id="bgc">
</div>
然后我们定义了ID选择器的:
#bgc{background:black}
ID选择器也是据有比较高的优先权,每个权重为100

3、类选择器,伪类选择器,属性选择器
类选择器的定义和使用:
.bgc{background:black}
<div class="bgc">
</div>
这三类选择器在css规范中拥有的优先权相对较低,每个权重为10

4、元素和伪元素选择器
比如以下代码
div{background:black}
<div></div>
这类选择器在css规范中的优先权非常低,每个权重为1

5、其它选择符(全局选择符*,子选择符)
优先权最低,每个权重为0


6、继承
比如有这么一段html代码,
<div class="no1">
<p></p>
</div>
这里我设定.no1{ text-align:center},那么它下面的<p>标签也就继承了文字居中这个属性了。
这里的p标签获取到的样式的方式称之为继承,继承并不参与到优先权的计算当中,只要有其它方式的定义都会覆盖继承而来的属性。

在具体混合方式的css样式定义中,同一个属性的具体取值的确定,便是根据每种样式定义的方式的加权和来确定的。

优先值只是确定属性值的一个因素,还需要遵循的原则包括:
1、!important 声明的规则高于一切,如果 !important 声明冲突,则比较优先权。 
2、如果优先权一样,则按源码中“后来者居上”的原则。 
3、由继承而得到的样式属性不参与 specificity 的计算,低于一切其他规则(例 全局选择符 * )。

具体的例子如下(在IE7和FF中测试):

有这么一段html代码,我们不断修改style定义,观察颜色变化(为了说明跟源码顺序的关系,一次向上添加样式定义)
<html>
   <style>
       h1{color: red}
   </style>
   <body class="bodyColor">
   <h1 id="idColor" class="myColor">
      shaosheng test
   </h1>
 </body>
</html>

1、只有一行样式定义 h1 {color: red;}
   只有一个普通元素加成,优先值为 0,0,0,1  显示红色

2、原有的h1定义之上添加一样定义 body h1{color:green}
   有两个普通元素的加成,优先值为 0,0,0,2 显示绿色
  
3、新添样式定义 .myColor{color:black}
   只有一个class选择符,优先值为  0,0,1,0 显示黑色

4、新添样式定义 body .myColor{color:pink}
   有一个普通元素和一个class选择符加成,优先值为 0,0,1,1 显示粉色

5、新添样式定义 .bodyColor .myColor{color:blue}
   由两个class选择符加成,优先值为 0,0,2,0  显示蓝色
  
6、新添样式定义 #idColor{color:silver;}
   只有一个ID选择符,优先值为 0,1,0,0 显示银色

7、直接在h1标签上加上style定义style="color:purple"
   这时,style定义的样式,优先值为 1,0,0,0 显示紫色
  
8、到这个时候完整的源代码为:
   <html>
   <style>
         #idColor{color:silver;}
         .bodyColor .myColor{color:blue}
          body .myColor{color:pink}
          .myColor{color:black}
          body h1{color:green;}
       h1{color: red;}
   </style>
   <body class="bodyColor">
   <h1 id="idColor" class="myColor" style="color:purple">
      shaosheng test
   </h1>
 </body>
</html>
在任何一个样式定义中加入!important就会显示该样式定义的颜色,当我们在多个定义上加入了!important,
这个几个样式值就会按照以上的优先值计算原则进行比较进行取舍


9、最后,我们把源码改成以下形式
<html>
   <style>
          .ortherColor{color:pink;}
          .myColor{color:black;}
         
   </style>
   <body class="bodyColor">
   <h1 id="idColor" class="myColor ortherColor">
      shaosheng test
   </h1>
 </body>
</html>

在这里我们定义了两个级别相同的class选择器,并且在同一个标签中引用,进过测试不管
class="myColor ortherColor" 中两个选择符的先后顺序如何,文本显示的始终是黑色,只跟源码顺序有关系。

10、源码顺序问题
    CSS源码,有两种方式一种是html中的style标签,一种是css文件,style标签中的顺序优先于文件中的优先级,文件中的优先级,
    按照文件引入顺序而定。
   
最后,就一个非专业人员的感觉来说,这里的优先级跟JAVA中变量的优先级是相通的,大致原则是作用范围越小的优先级越高。

分享到:
评论

相关推荐

    css样式优先级比较实例

    本实例将深入探讨CSS样式的优先级比较,帮助你更好地理解和控制页面的视觉呈现。 首先,我们需要了解CSS选择器的权重计算规则。CSS选择器的权重分为四类:内联样式、ID选择器、类选择器/属性选择器/伪类、以及元素...

    css优先级总结

    了解并掌握CSS优先级对于解决样式冲突问题至关重要。 ##### 1. 大小写不敏感性 CSS属性名和值不区分大小写。例如,`color:red;` 和 `COLOR:RED;` 是完全相同的。然而,在实际开发中,通常建议使用一致的大小写风格...

    css样式的优先级详解(本人整理过的,做过笔记)

    最权威的CSS样式优先级,本人整理过的,做过笔记。

    css样式应用优先级实用PPT课件.pptx

    CSS 样式应用优先级是指在CSS样式规则应用时的顺序和优先级。该优先级规则决定了哪些样式规则将被应用于HTML元素。下面是CSS样式应用优先级的详细解释: 1. 重要声明(!important) 重要声明是CSS样式规则中最高的...

    css样式优先级及层叠的顺序排序探讨

    首先,让我们理解CSS样式的优先级。优先级由四个部分组成,每个部分代表一个特定的选择器类型: 1. **内联样式** (例如,`&lt;element style="..."&gt;`),其特殊性为[1.0.0.0]。 2. **ID选择器** (例如,`#example`),...

    HTML5&CSS3网页制作:CSS优先级.pptx

    在多个CSS规则应用于同一元素时,理解CSS优先级至关重要,因为它决定了哪个样式会生效。这个概念对于创建美观且功能完备的网页至关重要。 首先,我们来探讨CSS优先级的基本原则: 1. 继承性:当一个元素没有明确的...

    使用DIV+CSS做网站时CSS样式的优先级

    使用 DIV+CSS 做网站时 CSS 样式的优先级 在构建网站时,使用 DIV+CSS 是一种常见的做法。这种方法可以有效地节省网站代码所需的空间,提高网站加载速度。但是,在使用 CSS 样式时,不能忽视 CSS 样式的优先级问题...

    权重和层叠规则决定了CSS样式优先级

    首先,给大家看一篇关于CSS优先级的示例 复制代码代码如下: &lt;span xss=removed&gt;&lt;html&gt; &lt;head&gt; &lt;style type=”text/css”&gt; #redP p { /* 权值 = 100+1=101 */ color:#F00; /* 红色 */ } #redP .red...

    CSS 优先级使用技巧

    如果某样式是继承来的永远不如具体指定的优先级高。例子1:CODE:&lt;style type=text/css&gt; &lt;!– *{font-size:20px} .class3{ font-size: 12px; } –&gt; &lt;/style&gt; 我是多大字号?&lt;/span&gt; 运行结果:.class...

    同级情况下CSS的优先级探讨

    例如,如果在LINK所链接的样式表(mycss.css)中定义了以下一条样式规则: H1{color:red}同时在嵌入式样式定义中也定义了一条规则:H1{color:yellow}在网页中的样式定义如下所示:&lt;HEAD&gt;&lt;LINK rel=...

    CSS优先级总结.pdf

    CSS优先级总结是一个非常重要的知识点,它决定了CSS样式的应用顺序和优先级。在CSS中,优先级是指样式规则的应用顺序,高优先级的样式规则将覆盖低优先级的样式规则。 在CSS中,有多种选择器可以用来指定样式规则,...

    css样式应用优先级实用PPT学习教案.pptx

    CSS样式应用优先级是网页设计中的关键概念,它决定了哪些样式会最终被浏览器应用到HTML元素上。在处理CSS冲突时,理解这个优先级规则至关重要。以下是对PPT内容的详细解释: 1. **重要声明 (!important)**: `!...

    CSS 优先级 详细分析

    CSS优先级是网页设计中一个至关重要的概念,它决定了浏览器如何解析和应用样式规则,从而影响页面元素的呈现。在深入探讨优先级之前,我们先简单回顾一下CSS的基础。CSS,全称为层叠样式表(Cascading Style Sheets...

    CSS优先级冲突:终极解决指南

    然而,在CSS的应用过程中,样式优先级冲突是一个常见的问题。本文将深入探讨CSS优先级冲突的原因、识别方法、解决策略,并提供实际应用示例,帮助读者更好地理解和处理这一问题。 #### 一、CSS优先级概述 CSS...

    解决CSS样式冲突的几个办法(小结)

    通过使用组合器(Combinator)将选择器的描述写得更加精确(参考CSS选择器 – MDN ),例如对于下述代码片段,如果想给.cellphones中的.apple增加样式,只使用.apple,势必会对.fruit中的.apple也造成影响。...

    Web前端开发中新手必看的CSS优先级关系教程共3页.pd

    理解CSS的优先级关系对于新手开发者来说至关重要,因为它能帮助你精确地控制元素的样式,避免样式冲突,使代码更加有序。本教程“Web前端开发中新手必看的CSS优先级关系教程共3页.pdf”旨在详细阐述这一主题。 首先...

    css优先级98908u0

    在CSS中,样式表的优先级决定了元素最终采用哪一套样式。理解CSS优先级的基本规则对于开发人员来说至关重要,尤其是在处理复杂的页面布局时。 1. **ID选择器**:具有最高的优先级,形如`#id{}`。例如,如果一个元素...

    CSS优先级算法如何计算?有哪些判定规定及计算方式

    关于CSS specificity CSS 的specificity 特性或称非凡性,它是一个衡量CSS值优先级的一个标准,既然作为标准,就具有一套相关的...1. 行内样式优先级Specificity值为1,0,0,0,高于外部定义。 如:&lt;div xss=removed&gt;sj

    CSS特异性:掌握样式优先级的艺术

    ### CSS特异性:掌握样式优先级的艺术 在前端开发领域,CSS(层叠样式表)是一种必不可少的语言,它用于描述网页...通过本文的学习,希望读者能够在自己的项目中更加自信地处理CSS样式冲突,提升开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics