在CSS基础学习的篇章中,从第四篇博客开始说选择器,到昨天基本已经说完了。今天我们总结一下,选择器作
用:告知浏览器需要设置哪个dom元素的样式。最后来说说选择器一个重要的问题,选择器的优先级。判断优先级的
方法就是尝试!!!
### 一,简单选择器的优先级
简单的选择器包括我们在第四篇,第五篇,第六篇博客的元素选择器(标签选择器),类选择器和id选择器。
我们来试验:
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS选择器优先级</title>
<style type="text/css">
/*标签选择器的渲染红色*/
div{
background-color:#FF0000;
width:900px;
height:400px;
}
/*类选择器的渲染蓝色*/
.test{
background-color:#0000FF;
width:900px;
height:300px;
}
/*id选择器的渲染紫色*/
#test{
background-color:#FF00FF;
width:900px;
height:200px;
}
</style>
</head>
<body>
<div id="test" class="test"></div>
</body>
</html>
~~~
运行的结果为:id选择器的优先级最高。
![](https://box.kancloud.cn/2016-04-28_57215597290bc.jpg)
注释掉id选择器后的结果为:类选择器的优先级居其次。
![](https://box.kancloud.cn/2016-04-28_572155973d1d9.jpg)
因此这三个简单选择器的优先级顺序为:HTML标签属性>id选择器>类选择器>元素选择器
### 二,同类型选择器的优先级
同类型:指的是相同类型的选择器,理论上优先级是一样的。比如:div和p。.btn和.button。#header和
#footer,它们的优先级是相同的。但是当同类型的选择器作用到相同的HTML标签上的时候优先级就不一样了。
我们继续试验:
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS选择器优先级</title>
<style type="text/css">
/*test类选择器的渲染浅绿色*/
.test{
background-color:#00FF00;
width:900px;
height:200px;
}
/*test1类选择器的渲染浅蓝色*/
.test1{
background-color:#00FFFF;
width:900px;
height:200px;
}
</style>
</head>
<body>
<div class="test test1"></div>
</body>
</html>
~~~
运行的结果为:
![](https://box.kancloud.cn/2016-04-28_572155974c98a.jpg)
我们尝试的结果为:CSS规则写在最后面的生效!!
如果这还不能信服我们再来尝试< div class="test1 test">< /div>有什么不一样的效果?
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS选择器优先级</title>
<style type="text/css">
/*test类选择器的渲染浅绿色*/
.test{
background-color:#00FF00;
width:900px;
height:200px;
}
/*test1类选择器的渲染浅蓝色*/
.test1{
background-color:#00FFFF;
width:900px;
height:200px;
}
</style>
</head>
<body>
<div class="test test1"></div>
<hr/>
<div class="test1 test"></div>
</body>
</html>
~~~
运行的结果为:
![](https://box.kancloud.cn/2016-04-28_572155975feea.jpg)
最终我们得出的结论依然是:同类型的选择器,CSS规则写在最后面的生效!
### 三,选择器的优先级
CSS选择器组合出很多复杂的选择器规则,那么我们就不能像简单的选择器那样一个一个尝试。下面我们介绍一
个很实用的判断优先级的方法。
判断优先级:我们约定 id选择器的权重为100,类选择器权重为10,标签选择器权重为1。一个复杂的选择器的权
重等于所有选择器的权重之和。一般,选择器越特殊,优先级(权重)越高。
我们先来看两个复杂的选择器规则:
第一个选择器的权重为:1+10+10+1=22
div.test .item span{
background-color:#00FF00;
}
第二个选择器的权重为:100+1+1=102
#test div span{
background-color:#FF0000;
}
从我们约定的规则来看,显然是第二个生效!
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS选择器优先级</title>
<style type="text/css">
/*第一个选择器渲染的是绿色*/
div.test .item span{
background-color:#00FF00;
}
/*第一个选择器渲染的是红色*/
#test div span{
background-color:#FF0000;
}
</style>
</head>
<body>
<div id="test" class="test">
<div class="item">
<span>12345</span>
</div>
</div>
</body>
</html>
~~~
运行的结果为与我们的理论是一致的!
![](https://box.kancloud.cn/2016-04-28_572155977158a.jpg)
那么我们可能会有一个疑问:同样的权重,那个选择器起作用呢?从一系列的理论和试验我们可以得出这与同类
型选择器的优先级问题相似,我们还是能轻易的得出结论:同样的权重要选择顺序最后的生效。
### 四,!important
样式最高优先级:无视优先级,在样式的一条声明的最后分号前加上,使该样式起作用。
我们还是来尝试:
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS选择器优先级</title>
<style type="text/css">
/*元素选择器渲染的是红色*/
div{
color:#0000FF;
}
/*类选择器渲染的是蓝色*/
.test{
color:#FF0000;
}
</style>
</head>
<body>
<div class="test">攻城课堂</div>
</body>
</html>
~~~
首先运行的结果我们肯定知道是红色,那么我们在标签选择器后面!important,我们再来运行结果看看?
~~~
/*元素选择器渲染的是红色*/
div{
color:#0000FF!important;
}
~~~
运行的结果为:
![](https://box.kancloud.cn/2016-04-28_572155978324a.jpg)
关于选择器的优先级我也就了解了这些,CSS选择器就告一段落了!!
- 前言
- HTML学习1:Dreamweaver8的安装
- HTML学习2:初识HTML
- HTML学习3:常用标签之文本标签
- HTML学习4:常用标签之列表标签
- HTML学习5:常用标签之图像标签
- HTML学习6:常用标签之超链接标签
- HTML学习7:常用标签之表格标签
- HTML学习8:常用标签之框架标签
- HTML学习9:常用标签之表单标签
- HTML学习10:表单格式化
- HTML学习11:HTTP 方法
- HTML学习12:其他常见标签之头标签
- HTML学习13:其他常见标签之体标签
- 轻松学习JavaScript一:为什么学习JavaScript
- 轻松学习JavaScript二:JavaScript语言的基本语法要求
- 轻松学习JavaScript三:JavaScript与HTML的结合
- 轻松学习JavaScript四:JS点击灯泡来点亮或熄灭这盏灯的网页特效映射出JS在HTML中作用
- 轻松学习JavaScript五:JavaScript的变量和数据类型
- 轻松学习JavaScript六:JavaScript的表达式与运算符
- 轻松学习JavaScript七:JavaScript的流程控制语句
- 轻松学习JavaScript八:JavaScript函数
- 轻松学习JavaScript九:JavaScript对象和数组
- 轻松学习JavaScript十:JavaScript的Date对象制作一个简易钟表
- 轻松学习JavaScript十一:JavaScript基本类型(包含类型转换)和引用类型
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)
- 轻松学习JavaScript十三:JavaScript基于面向对象之继承(包含面向对象继承机制)
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正则表达式)
- 轻松学习JavaScript十五:JavaScript之BOM简介
- 轻松学习JavaScript十六:JavaScript的BOM学习(一)
- 轻松学习JavaScript十七:JavaScript的BOM学习(二)
- 轻松学习JavaScript二十九:JavaScript中的this详解
- CSS基础学习一:CSS概述
- CSS基础学习二:如何创建 CSS
- CSS基础学习三:CSS语法
- CSS基础学习四:元素选择器
- CSS基础学习五:类选择器
- CSS基础学习六:id选择器
- CSS基础学习七:属性选择器
- CSS基础学习八:派生选择器
- CSS基础学习九:伪类
- CSS基础学习十:伪元素
- CSS基础学习十一:选择器的优先级
- CSS基础学习十二:CSS样式
- CSS基础学习十三:盒子模型
- CSS基础学习十四:盒子模型补充之display属性设置
- CSS基础学习十五:盒子模型补充之外边距合并
- CSS基础学习十六:CSS盒子模型补充之border-radius属性
- CSS基础学习十七:CSS布局之定位
- CSS基础学习十八:CSS布局之浮动
- CSS基础学习十九:CSS布局之图文混排,图像签名,多图拼接和图片特效
- DIV+CSS实操一:经管系网页总体模块布局
- DIV+CSS实操二:经管系网页添加导航栏和友情链接栏
- DIV+CSS实操三:经管系网页内容模块添加标题栏和版权信息模块
- DIV+CSS实操四:经管系网页内容模块内容添加(一)
- DIV+CSS实操五:经管系网页内容模块内容添加(二)
- DIV+CSS实操六:经管系网页添加导航栏下拉菜单
- DIV+CSS实操七:中文系内容模块控制文本不换行和超出指定宽度后用省略号代替
- JS中实现字符串和数组的相互转化