css样式覆盖顺序

0.样式位置分类

1)使用外部css文件

<link href="/static/css/main.css" rel="stylesheet">

2)使用head中的style元素

<head>
<style type="text/css">
    .main{color:red;}
</style>
</head>

3)使用元素上的style

<body style="color:red;"></body>

1.样式覆盖总体原则:

元素上的style > 文件头上的style元素 >外部样式文件

不同级别的样式均对同一元素进行渲染时,对于冲突的样式,会优先采取元素上的style去覆盖文件头上的style元素;对于不冲突的样式,会进行样式叠加。

例如:

<head>
<style type="text/css">
    .main{color:red;background-color:yellow;}
</style>
</head>
<body id="mainbody" class="main" style="color:green;"></body>

对于body元素,元素style与文件头上的style均会命中,此时,backgroud-color样式会进行叠加,color样式出现冲突,会优先选用body元素中的样式。渲染结果为:

color:green;
background-color:yellow;

2.同级别样式文件下:

1)样式表的元素选择器选择越精确,样式优先级越高:

id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式

在示例中,css进行渲染时,#mainbody > .main > body

2)对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高:

这里是样式表文件中越靠后的优先级越高,而不是在元素class出现的顺序。

例如,.class2 在样式表中出现在.class1之后,

.class1{
    color:red;
}
.class2{
    color:green;
}

对于

<div class="class2 class1">
<div class="class1 class2">

虽然class1在元素中指定时排在class2的后面,但因为在样式表文件中class1处于class2前面,此时仍然是class2的优先级更高,将采用 color:green

3)如果要让某个样式的优先级变高,可以使用!important

<head>
<style type="text/css">
    .main{color:red !important; background-color:yellow;}
</style>
</head>
<body id="mainbody" class="main" style="color:green;"></body>

由于head的style中使用了 !important ,渲染时将会采用 color:red

时间: 2024-12-09 00:45:21

css样式覆盖顺序的相关文章

css样式表中的样式覆盖顺序(转)

转自:http://spartan1.iteye.com/blog/1526735 有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下 Css代码 #navigator { height: 100%; width: 200; position: absolute; left: 0; border: solid 2 #EEE; } .current_block { border: solid 2 #AE0; } 查找一些教材中(w3schools等),只说css的

css样式表中的样式覆盖顺序

css样式表中的样式覆盖顺序 - - ITeye技术网站http://spartan1.iteye.com/blog/1526735 重点归纳: 查找一些教材中(w3schools等),只说css的顺序是“元素上的style”>“文件头上的style元素”>“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明.经过测试和继续搜索,得知优先级如下排列: 或者以下也可以称之为一些优先原则(by liwei 20140803) 1.样式表的元素选择器选择越精确,则其中的样式

CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)

本篇讲解CSS特异性(CSS Specificity)的细节,也就是CSS样式选择器的权重计算 通过计算选择器的权重(weight)最终决定哪个选择器将获得优先权去覆盖其他选择器的样式设定,即"优先原则(priority rules)"! 首先,我们来一个简单的例子: <body> <ul id="summer-drinks"> <li class="favorite">First section</li

CSS样式书写顺序

CSS样式还有书写顺序? 样式还有书写顺序?样式这么简单的东西,不是随便写写就行的么.很多初学者,甚至有一定工作经验的人都会发出这种疑问.而样式的书写顺序到底对页面有没有影响呢?答案是肯定的.如何写出好的css样式也是一个优秀的开发者必须要知道的!而且应该养成习惯,融入到开发中!好的习惯不是一点养成的. 为什么要注意书写顺序? 减少浏览器reflow(回流),提升浏览器渲染dom的性能 浏览器渲染原理 ①:解析html构建dom树,解析css构建css树:将html解析成树形的数据结构,将css

[笔记]CSS样式声明顺序

来自Bootstrap中文网编程规范 相关的属性声明应当归为一组,并按照下面的顺序排列: Positioning Box model Typographic Visual .declaration-order { /* Positioning */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* Box-model */ display: block; float: right; width:

CSS中样式覆盖优先顺序

原文地址:http://www.3lian.com/edu/2014/09-25/168393.html 层叠优先级是: 浏览器缺省 < 外部样式表 < 内部样式表 < 内联样式 其中样式表又有: 类选择器 < 类派生选择器 < ID选择器 < ID派生选择器 派生选择器以前叫上下文选择器,所以完整的层叠优先级是: 浏览器缺省 < 外部样式表 < 外部样式表类选择器 < 外部样式表类派生选择器 < 外部样式表ID选择器 < 外部样式表ID派

css样式加载顺序及覆盖顺序深入理解

注:内容转载 很多的新手朋友们对css样式加载顺序和覆盖顺序的理解有所偏差,下面用示例为大家详细的介绍下,感兴趣的朋友不要错过 { height: 100%; width: 200; position: absolute; left: 0; border: solid 2 #EEE; } .current_block { border: solid 2 #AE0; } 查找一些教材中(w3schools等),只说css的顺序是"元素上的style" > "文件头上的st

CSS中的样式覆盖原则

规则一:由于继承而发生样式冲突时,最近祖先获胜(最近原则).CSS的继承机制使得元素可以从包含它的祖先元素中继承样式,考虑下面这种情况: <html> <head> <title>rule 1</title> <style> body {color:black;} p {color:blue;} </style> </head> <body> <p>welcome to <strong>

CSS样式与选择器

CSS构造块的样式: 1.  h1{color:red;background-color:yellow} 其中:h1是选择器,花括号内是声明部分.多个声明之间用分号隔开. 2.为样式规则添加注释:/*...*/.注意不能将一个注释嵌套在另一注释中.如:/*这样做/*是不对的*/因为嵌套在外层注释内*/.注释可以放在样式规则内部.如:img{border:4px solid red;/*margin-right:12px;*/} ,浏览器会显示的只有border样式,因为margin-right