1 CSS选择器

CSS选择器

1什么是选择器

  选择器(selector),会告诉浏览器:网页上的那些元素需要设置什么样式。

 作用:

    按照 CSS 规则定位 HTML 页面的一个或多个元素。浏览器在解析 HTML 页面时,会根据 CSS 规则中的选择器定位 HTML 页面的元素,并为对应的元素设定样式。通过 CSS 选择器可以实现对 HTML 元素的一对一、一对多和多对一的定位。

2 选择器分类

2.1 常用选择器

2.1.1 元素选择器(标签选择器)

  元素选择器(标签选择器),可以根据标签的名字来从页面中选取指定的元素

  语法:

标签名{}

  示例:

  为所有P元素设置黄色背景颜色

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				background-color: red;
			}
			
		</style>
	</head>
	<body>
		<h3>一剪梅·舟过吴江</h3>
		<div>作者:蒋捷  宋代</div>
		<div>一片春愁待酒浇。</div>
		<div>江上舟摇,楼上帘招。</div>
		<div>秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div>何日归家洗客袍?</div>
		<div>银字笙调,心字香烧。</div>
		<div>流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

  效果:

2.1.2 类选择器

    类选择器,可以根据元素的class属性值选取元素。class属性可以重复,拥有相同class属性值的元素,我们也可以说他们是一组元素。

语法:

.className { }

示例:

  设置所class名称为poetry背景颜色为灰色

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				color: red;
			}
			
			/**
			 * 类选择器 可以根据元素的class属性值选取元素
			 */
			.poetry{
				background-color: #CCC;
			}
		</style>
	</head>
	<body>
		<h3>一剪梅·舟过吴江</h3>
		<div class="poetry">作者:蒋捷  宋代</div>
		<div class="poetry">一片春愁待酒浇。</div>
		<div class="poetry">江上舟摇,楼上帘招。</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

效果:

2.1.3 ID选择器

    通过元素的id属性值选中唯一的一个元素。id属性值在同一HTML页面中不可以重复

语法:

    

#id { }

示例:

给id为author的标签设置字体颜色为蓝色,宽度为300px,文字靠右显示

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				color: red;
			}
			
			/**
			 * 类选择器 可以根据元素的class属性值选取元素
			 */
			.poetry{
				background-color: #CCC;
			}
			
			/**
			 * ID选择器 通过元素的id属性值选中唯一的一个元素
			 */
			#author{
				color: blue;
				width: 300px;
				text-align: right;
			}
		</style>
	</head>
	<body>
		<h3>一剪梅·舟过吴江</h3>
		<div id="author">作者:蒋捷  宋代</div>
		<div class="poetry">一片春愁待酒浇。</div>
		<div class="poetry">江上舟摇,楼上帘招。</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

效果:

2.1.4 复合选择器

    复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素

语法:

选择器1选择器2{}

示例:

    给具有box1这个class的div设置字体颜色为绿色

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				color: red;
			}
			
			/**
			 * 类选择器 可以根据元素的class属性值选取元素
			 */
			.poetry{
				background-color: #CCC;
			}
			
			/**
			 * ID选择器 通过元素的id属性值选中唯一的一个元素
			 */
			#author{
				color: blue;
				width: 300px;
				text-align: right;
			}
			
			/**
			 * 复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素
			 */
			div.box1{
				color: green;
			}
		</style>
	</head>
	<body>
		<h3 class="box1">一剪梅·舟过吴江</h3>
		<div id="author">作者:蒋捷  宋代</div>
		<div class="poetry box1">一片春愁待酒浇。</div>
		<div class="poetry">江上舟摇,楼上帘招。</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

效果:

2.1.5 群组选择器

    群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式

语法:

选择器1,选择器2,选择器3 { }

示例:

    给.box1,#author设置字体大小为30px

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				color: red;
			}
			
			/**
			 * 类选择器 可以根据元素的class属性值选取元素
			 */
			.poetry{
				background-color: #CCC;
			}
			
			/**
			 * ID选择器 通过元素的id属性值选中唯一的一个元素
			 */
			#author{
				color: blue;
				width: 300px;
				text-align: right;
			}
			
			/**
			 * 复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素
			 */
			div.box1{
				color: green;
			}
			
			/**
			 * 群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式
			 */
			.box1, #author{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<h3 class="box1">一剪梅·舟过吴江</h3>
		<div id="author">作者:蒋捷  宋代</div>
		<div class="poetry box1">一片春愁待酒浇。</div>
		<div class="poetry">江上舟摇,楼上帘招。</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

效果:

2.1.6 通用选择器

    通用选择器,可以同时选中页面中的所有元素

语法:

*{ }

示例:

    设置所有元素背景颜色为黄色

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/*
			 元素选择器(标签选择器):设置h3标签颜色为红色
			 **/
			h3{
				color: red;
			}
			
			/**
			 * 类选择器 可以根据元素的class属性值选取元素
			 */
			.poetry{
				background-color: #CCC;
			}
			
			/**
			 * ID选择器 通过元素的id属性值选中唯一的一个元素
			 */
			#author{
				color: blue;
				width: 300px;
				text-align: right;
			}
			
			/**
			 * 复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素
			 */
			div.box1{
				color: green;
			}
			
			/**
			 * 群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式
			 */
			.box1, #author{
				font-size: 30px;
			}
			
			/**
			 *通用选择器,可以同时选中页面中的所有元素
			 */
			*{
				background-color: yellow;
			}
		</style>
	</head>
	<body>
		<h3 class="box1">一剪梅·舟过吴江</h3>
		<div id="author">作者:蒋捷  宋代</div>
		<div class="poetry box1">一片春愁待酒浇。</div>
		<div class="poetry">江上舟摇,楼上帘招。</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

效果:

注意:为什么诗词部分背景颜色没有变成黄色

    关于CSS的选择器优先级我在w3school文档中并没有看到对应说明,网上比较笼统的说法是:

    important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符,因此通配符优先级最低,故诗词部分背景颜色没有变成黄色

2.1.7 后代选择器

在介绍后代选择器之前,我们先说明一下元素之间的关系

标签之间的关系

祖先元素
    – 直接或间接包含后代元素的元素。
后代元素
    – 直接或间接被祖先元素包含的元素。
父元素
    – 直接包含子元素的元素。
子元素
    – 直接被父元素包含的元素。
兄弟元素
    – 拥有相同父元素的元素。

示例:

<!--
	class为box1的div直接包含的后代元素有class名称为box2,box3的div,因此box1是box2,box3的父元素,box2,box3相对box1来说则是box1的子元素。
	同样,box2是text1的父元素,text1是box2的子元素;box3是text2的父元素,text2是box3的子元素。
	因为box1包含box2,而box2包含text1,因此box1是text1的祖先元素,text1是box1的后代元素。
	父元素也属于祖先元素,因此我们也可以说box2是box1的后代元素,box1是box2的祖先元素
	拥有相同父元素的元素,因此在示例中只有box2与box3是兄弟元素
	
-->
<div class="box1">
	<div class="box2">
		<span class="text1"></span>
	</div>
	<div class="box3">
		<span class="text2"></span>
	</div>
</div>

    后代选择器可以根据标签的关系,为处在元素内部的代元素设置样式

语法:

祖先元素 后代元素 后代元素 { }

示例:

	<head>
		<meta charset="UTF-8">
		<title>CSS选择器</title>
		<style type="text/css">
			/**
			 * 后代选择器  设置class属性值为box1的class属性值为box2的子元素的text1字体颜色为红色
			 */
			.box1 .box2 .text1{
				color: red;
			}
		</style>
	</head>
	<body>
		<h3>一剪梅·舟过吴江</h3>
		<div >作者:蒋捷  宋代</div>
		<div class="box1">
			<div class="box2">
				<span class="text1">一片春愁待酒浇。</span>
			</div>
			<div class="box3">
				<span class="text2">江上舟摇,楼上帘招。</span>
			</div>
		</div>
			
		</div>
		<div class="poetry">秋娘渡与泰娘桥,风又飘飘,雨又萧萧。</div>
		<div class="poetry">何日归家洗客袍?</div>
		<div class="poetry">银字笙调,心字香烧。</div>
		<div class="poetry">流光容易把人抛,红了樱桃,绿了芭蕉。</div>
	</body>

 

效果:

2.1.8 伪类和伪元素

    有时候,你需要选择本身没有标签,但是仍然易于识别的网页部位,比如段落首行或鼠标滑过的连接。CSS为他们提供一些选择器:伪类和伪元素。有四个伪类可以让你根据访问者与该链接的交互方式,将链接设置成4种不同的状态

语法:

正常链接  a:link
访问过的链接  a:visited(只能定义字体颜色)
鼠标滑过的链接  a:hover
正在点击的链接  a:active

所有标签都具有鼠标滑过 :hover,正在点击  :active 两个伪类,需要注意的是伪类的优先级都是一样的,因此顺序必须是l v h a,如果:active在:hover之前则:active不生效。如果:link或者:visited在:hover或:active 之后,则:hover或:active不生效

示例:

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			/**
			 * 正常链接
			 */
			a:link{
				color: red;
			}
			
			/**
			 * 访问过的链接
			 */
			a:visited{
				color: green;
			}
			
			/**
			 * 鼠标滑过的链接 紫色
			 */
			a:hover{
				color: blueviolet;
			}
			
			/**
			 * 正在点击的链接
			 */
			a:active{
				color: yellow;
			}
		</style>
	</head>
	<body>
		<a href="#c">正常连接</a>
		<a href="#">访问过的链接(只能定义字体颜色</a>
		<a href="#b">鼠标滑过的链接</a>
		<a href="#a">正在点击的链接</a>
	</body>

效果:

2.1.9 否定伪类

  否定伪类可以帮助我们选择不是其他东西的某件东西

语法:

:not(选择器){}

示例:

	<head>
		<meta charset="UTF-8">
		<title>否定伪类</title>
		<style type="text/css">
			
			/* 选择所要p标签但是不包括class为hello*/
			p:not(.hello){
				background-color: #BBAAFF;
			}
		</style>
	</head>
	<body>
		
		<p>我是一个段落</p>
		<p class="hello">我是一个段落</p>
		<p>我是一个段落</p>
		<p class="hello">我是一个段落</p>
		<p>我是一个段落</p>
	</body>

效果:

2.1.10 其他伪类

语法:

获取焦点(用于设置input获取焦点时样式)
– :focus
选中的元素
注意:(::selection选择器匹配元素中被用户选中或处于高亮状态的部分。::selection只可以应用于少数的CSS属性:color, background, cursor,和outline。)
– ::selection

示例:

	<head>
		<meta charset="UTF-8">
		<title>其他伪类</title>
		<style type="text/css">
			
			input:focus{
				border: 1px solid #BBAAFF;
				border-radius: 5px;
				outline: none;
			}
			
			p::selection{
				background-color: #BBAAFF;
				color: #FFF;
			}
			
		</style>
	</head>

	<body>
		获取焦点
		<hr />
		<input type="text"/>
		<br/>
		选中的文字
		<hr />
		<p>::selection伪类可以设置选中文字的样式,但是需要在注意浏览器的兼容性</p>
		
	</body>

效果:

 

2.2 其他选择器

2.2.1 伪元素

  在元素的特殊的位置,设置样式

语法:

指定元素前(添加文本)
– :before
指定元素后(添加文本)
– :after
首字母
– :first-letter
首行
– :first-line

示例:

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			p:before{
				content: '添加文本在元素之前';
				background-color: orange;
			}
			
			p:after{
				content: '添加文本在元素之后';
				background-color: orange;
			}
			
			p:first-letter{
				color: orange;
				font-size: 48px;
			}
			
			p:first-line{
				background-color: #BBAAFF;
			}
			
		</style>
	</head>
	<body>
		指定元素前(添加文本)<br/>
		– :before<br/>
		<p>-试试指定元素前添加文本-</p>
		指定元素后(添加文本)<br/>
		– :after<br/>
		<p>-试试指定元素后添加文本-</p>
		首字母<br/>
		– :first-letter<br/>
		<p>试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,试试首字母字体变大,</p>
		首行<br/>
		– :first-line<br/>
		<p>设置第一行背景颜色。设置第一行背景颜色。设置第一行背景颜色。设置第一行背景颜色。设置第一行背景颜色。</p>
	</body>

效果:

2.3 属性选择器

2.3.1 属性选择器

   属性选择器可以根据元素的属性及属性值来选择元素

语法:

[属性名]            选中具有属性名的元素
[属性名="属性值"]   选取具有属性值的元素
[属性名~="属性值"]  选取包含指定值的 title 属性的所有元素设置样式。适用于由空格分隔的属性值
[属性名|="属性值"]  选取包含指定值的 lang 属性的所有元素设置样式。适用于由连字符分隔的属性值
[属性名^="属性值"]  选取属性值以指定内容开头的元素
[属性名$="属性值"]  选取属性值以指定内容结尾的元素
[属性名*="属性值"]  选取属性值包含自定内容的元素

示例:

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			[title] {
				color: red;
			}
			
			[title=hello] {
				border: 5px solid blue;
			}
			
			[title~=hello] {
				color: red;
			}
			
			[lang|=en] {
				color: red;
			}
		</style>
	</head>

	<body>
		<h3>[属性名]可以应用样式:</h3>
		<h2 title="Hello world">Hello world</h2>
		<a title="hello">Hello world</a>

		<hr />

		<h3>[属性名]无法应用样式:</h3>
		<h2>Hello world</h2>
		<a>Hello world</a>

		<h3>[属性名="属性值"]可以应用样式:</h3>
		<p title="hello">我是一个段落</p>
		<br />
		<a title="hello" href="http://hello.com.cn">hello</a>
		<hr />

		<h3>[属性名="属性值"]无法应用样式:</h3>
		<p title="greeting">Hi!</p>
		<a class="hello" href="http://hello.com.cn">hello</a>

		<h3>[属性名~="属性值"]可以应用样式:</h3>
		<h2 title="hello world">Hello world</h2>
		<p title="student hello">Hello hello students!</h3>
		<hr />

		<h3>[属性名~="属性值"]无法应用样式:</h3>
		<h2 title="world">Hello world</h2>
		<p title="student">Hello hello students!</p>

		<h3>[属性名|="属性值"]可以应用样式:</h3>
		<p lang="en">Hello!</p>
		<p lang="en-us">Hi!</p>
		<hr />

		<h3>[属性名|="属性值"]无法应用样式:</h3>
		<p lang="us">Hi!</p>
		<p lang="zh">Hao!</p>
	</body>

效果:

 

 

2.4 子元素选择器

2.4.1 子元素选择器

   子元素选择器可以给另一个元素的子元素设置样式

语法:

父元素 > 子元素 {}

示例:

	<head>
		<meta charset="UTF-8">
		<title>子元素选择器</title>
		<style type="text/css">
			
			.hello > span{
				background-color: #BBAAFF;
				color: #FFF;
			}
		</style>
	</head>

	<body>
		<div class="hello">
			<p>我是一个段落</p>
			<span>我是一个span</span>
			<div>我是一个div</div>

		</div>
	</body>

效果:

2.4.2 其他子元素选择器

 

语法:

:first-child  – 选择第一个子标签
:last-child   – 选择最后一个子标签
:nth-child    – 选择指定位置的子元素
  特殊用法: :nth-child(even) even表示偶数位置
            :nth-child(odd) odd表示奇数位置

– 选择指定类型的子元素(first-of-type与first-child非常类似,不同的是-child在所有的子元素中排序,而-type只在当前类型中排序)
:first-of-type
:last-of-type
:nth-of-type
   

示例:

	<head>
		<meta charset="UTF-8">
		<title>其他子元素选择器</title>
		<style type="text/css">
			p:first-child {
				background-color: #BBAAFF;
			}
			
			p:last-child {
				background-color: orange;
				color: #FFF;
			}
			
			span:nth-child(1) {
				font-size: 20px;
			}
			
			span:nth-child(even) {
				background-color: #AABBFF;
			}
			span:nth-child(odd) {
				background-color: #FFBBAA;
			}
			
			/*p:first-of-type{
				background-color: #BBAAFF;
			}
			p:last-of-type-of-type{
				background-color: orange;
				color: #FFF;
			}
			span:nth-of-type(even){
				background-color: #AABBFF;
			}
			span:nth-of-type(odd){
				background-color: #FFBBAA;
			}*/
		</style>
	</head>

	<body>
		<div class="hello">
			<p>我是一个段落</p>
			<p>我是一个段落</p>
			<p>我是一个段落</p>
			<span>我是一个span</span>
			<span>我是一个span</span>
			<span>我是一个span</span>
			<div>我是一个div</div>
			<div>我是一个div</div>
			<div>我是一个div</div>
			<div>
				<p>我是div中的P标签</p>
				<p>我是div中的P标签</p>
				<p>我是div中的P标签</p>
				<span>我是div中的一个span</span>
				<span>我是div中的一个span</span>
				<span>我是div中的一个span</span>
				<span>我是div中的一个span</span>
				<span>我是div中的一个span</span>
				<p>我是div中的P标签</p>
				<p>我是div中的P标签</p>
				<p>我是div中的P标签</p>
			</div>
		</div>
	</body>

效果:

-child效果:

-type效果:

2.5 兄弟元素选择器

2.5.1 兄弟元素选择器

   除了根据祖先父子关系,还可以根据兄弟关系查找元素

语法:

– 查找后边一个兄弟元素(可以选择紧挨着兄弟元素后的一个兄弟元素)
 兄弟元素 + 兄弟元素{}
– 查找后边所有的兄弟元素
 兄弟元素 ~ 兄弟元素{}

示例:

	<head>
		<meta charset="UTF-8">
		<title>兄弟元素选择器</title>
		<style type="text/css">
			
			/* 选择紧挨着平P标签的span*/
			p + span{
				background-color: #BBAAFF;
			}
			
			/* 查找后边所有的兄弟元素 */
			p ~ div {
				background-color: orange;
			}
		</style>
	</head>
	<body>
		
		<p>我是一个P标签</p>
		<p>我是一个P标签</p>
		<p>我是一个P标签</p>
		<span>我是一个span</span>
		<span>我是一个span</span>
		<span>我是一个span</span>
		<p>我是一个P标签</p>
		<p>我是一个P标签</p>
		<p>我是一个P标签</p>
		<div>我是一个div</div>
		<div>我是一个div</div>
		<div>我是一个div</div>
		<span>我是一个span</span>
		<span>我是一个span</span>
		<span>我是一个span</span>
	</body>

效果:

3 总结

3.1基本选择器


    通配符选择器      

* { margin: 0; padding: 0; border: none; }


    元素选择器        

body { background: #eee; }


    类选择器       

 .list { list-style: square; }


    ID选择器        

#list { width: 500px; margin: 0 auto; }


    后代选择器     

 .list li { margin-top: 10px; background: #abcdef; }

 

3.2 基本选择器扩展


   子元素选择器       也可称为直接后代选择器,此类选择器只能匹配到直接后代,不能匹配到深层次的后代元素

 #wrap > .inner {color: pink;}


    相邻兄弟选择器    它只会匹配紧跟着的兄弟元素

#wrap #first + .inner {color: #f00;}


    通用兄弟选择器   它会匹配所有的兄弟元素(不需要紧跟)

 #wrap #first ~ div { border: 1px solid;}


    选择器分组      此处的逗号我们称之为结合符

 h1,h2,h3{color: pink;}  


3.3 属性选择器


存在和值属性选择器

[attr]:该选择器选择包含 attr 属性的所有元素,不论 attr 的值为何。
[attr=val]:该选择器仅选择 attr 属性被赋值为 val 的所有元素。
[attr~=val]:表示带有以 attr 命名的属性的元素,并且该属性是一个以空格作为分隔的值列表,其中至少一个值为val。


子串值属性选择器

[attr|=val] : 选择attr属性的值是val(包括val)或以val-开头的元素。
[attr^=val] : 选择attr属性的值以val开头(包括val)的元素。
[attr$=val] : 选择attr属性的值以val结尾(包括val)的元素。
[attr*=val] : 选择attr属性的值中包含字符串val的元素。


3.4 伪类与伪元素选择器


   链接伪类        注意:link,:visited,:target是作用于链接元素的!
            :link        表示作为超链接,并指向一个未访问的地址的所有锚
            :visited    表示作为超链接,并指向一个已访问的地址的所有锚
            :target     代表一个特殊的元素,它的id是URI的片段标识符
    动态伪类        注意:hover,:active基本可以作用于所有的元素!
            :hover        表示悬浮到元素上
            :active        表示匹配被用户激活的元素(点击按住时)
            
            由于a标签的:link和:visited可以覆盖了所有a标签的状态,所以当:link,:visited,:hover,:active同时出现在a标签
            身上时 :link和:visited不能放在最后!!!
            
            隐私与:visited选择器
                只有下列的属性才能被应用到已访问链接:
                    color
                    background-color
                    border-color
    表单相关伪类
            :enabled    匹配可编辑的表单
            :disable    匹配被禁用的表单
            :checked    匹配被选中的表单
            :focus        匹配获焦的表单
            
    结构性伪类
            index的值从1开始计数!!!!
            index可以为变量n(只能是n)
            index可以为even odd
                #wrap ele:nth-child(index)        表示匹配#wrap中第index的子元素 这个子元素必须是ele
                #wrap ele:nth-of-type(index)    表示匹配#wrap中第index的ele子元素
                除此之外:nth-child和:nth-of-type有一个很重要的区别!!
                        nth-of-type以元素为中心!!!
                        
            :nth-child(index)系列            
                :first-child
                :last-child
                :nth-last-child(index)
                :only-child    (相对于:first-child:last-child 或者 :nth-child(1):nth-last-child(1))
            :nth-of-type(index)系列
                :first-of-type
                :last-of-type
                :nth-last-type(index)
                :only-of-type    (相对于:first-of-type:last-of-type 或者 :nth-of-type(1):nth-last-of-type(1))
                
            :not        
            :empty(内容必须是空的,有空格都不行,有attr没关系)
    伪元素
            ::after
            ::before
            ::firstLetter
            ::firstLine
            ::selection


3.5 css声明的优先级


    选择器的特殊性
        选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,如    0,0,0,0
        一个选择器的具体特殊性如下确定:
               1.对于选择器中给定的ID属性值,加 0,1,0,0
               2.对于选择器中给定的各个类属性,属性选择,或伪类,加 0,0,1,0
               3.对于选择器中的给定的各个元素和伪元素,加0,0,0,1
               4.通配符选择器的特殊性为0,0,0,0
               5.结合符对选择器特殊性没有一点贡献
               6.内联声明的特殊性都是1,0,0,0
               7.继承没有特殊性

            特殊性 1,0,0,0 大于所有以0开头的特殊性(不进位)
            选择器的特殊性最终都会授予给其对应的声明
            如果多个规则与同一个元素匹配,而且有些声明互相冲突时,特殊性越大的越占优势

            注意:id选择器和属性选择器
                  div[id="test"](0,0,1,1) 和 #test(0,1,0,0)   
    重要声明
        有时某个声明比较重要,超过了所有其他声明,css2.1就称之为重要声明
        并允许在这些声明的结束分号之前插入  !important  来标志
        必须要准确的放置  !important 否则声明无效。 
        !important 总是要放在声明的最后,即分号的前面
         
         标志为 !important的声明并没有特殊的特殊性值,不过要与非重要声明分开考虑。
         实际上所有的重要声明会被浏览器分为一组,重要声明的冲突会在其内部解决
         非重要声明也会被分为一组,非重要声明的冲突也会在其内部解决
         如果一个重要声明与非重要声明冲突,胜出的总是重要声明
    继承
        继承没有特殊性,甚至连0特殊性都没有
        0特殊性要比无特殊性来的强
    来源
        css样式的来源大致有三种
          创作人员
          读者
          用户代理   
         
    权重
           读者的重要声明
           创作人员的重要声明
           创作人员的正常声明
           读者的正常声明
           用户代理的声明
    层叠
        1.找出所有相关的规则,这些规则都包含一个选择器
        2.计算声明的优先级
                   先按来源排序
                   在按选择器的特殊性排序
                   最终按顺序

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值