css3结构性伪类选择器、属性选择器、ui元素状态伪类、伪元素

159 阅读4分钟
属性选择器
E[attr]:指定css样式对其具有attr属性的E元素(E:元素名称;[]内部的为属性名称)
E[attr=value]:指定该css样式对所有包含attr属性,且attr属性为value的元素
E[attr~=value]:指定该css样式所有包含attr属性,且attic属性的值为以空格隔开的系列值,其中某个值为value的E元素起作用
E[attr|=value]:指定该css样式所有包含attr属性,且attic属性的值为以连字符分割的系列值,其中第一个值为value的tag元素起作用
E[attr^="value"]:指定该css样式所有包含attr属性,且attic属性的值为以value开头的字符串E元素起作用
E[attr$="value"]:指定该css样式所有包含attr属性,且attic属性的值为以value结束的字符串E元素起作用
E[attr*="value"]:指定该css样式所有包含attr属性,且attic属性的值为包含value的字符串E元素起作用
实例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<style type="text/css">
		.b{
			font-size: 30px;
		}
		.c{
			color: #f00;
		}
		#a{
			font-size: 20px;
			color: #0f0;
		}
		p[id]{
			background-color: #000;
		}
		p[class~=b]{
			border: solid #000 1px;
		}
		p[class|=border]{
			background-color: #00f;
		}
	</style>
	<body>
		<p class="b">p1</p>
		<p class="b c">p2</p>
		<p class="big b">p3</p>
		<p class="c" id="a">p4</p>
		<p class="border-1">p5——</p>
	</body>
</html>

结构性伪类选择器
    selector:root;匹配文档的根(html)元素,(css0.7.html)用于移动端
    selector:first-child;匹配符合selector选择器,而且必须是其父级元素的第一个子节点
    selector:last-child:匹配符合selector选择器,而且必须是其父级元素的最后一个子节点
    selector:nth-child(n);匹配符合selector选择器,而且必须是其父级元素的第n个子节点
    selector:nth-last-child(n);匹配符合selector选择器,而且必须是其父级元素的倒数第n个子节点
    selector:only-child;匹配符合selector选择器,而且必须是其父级元素的唯一一个子节点
    selector:first-of-type;匹配符合selector选择器,而与他同类型、同级别的兄弟元素中的第一个元素
    selector:last-of-type;匹配符合selector选择器,而与他同类型、同级别的兄弟元素中的最后一个元素
    selector:nth-of-type(n):匹配符合selector选择器,而与他同类型、同级别的兄弟元素中的第n个元素
    selector:nth-last-of-type(n):匹配符合selector选择器,而与他同类型、同级别的兄弟元素中的倒数第n个元素
    selector:only-of-type;匹配符合selector选择器,而且必须是其父级元素的唯一一个元素
    selector:empty:匹配符合selector选择器,而且没有任何子元素(包括文本节点)
    
    实例:
    <!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			div{
				background-color: #ccc;
				margin-top: 10px;
			}
			p:first-of-type{
				border: 1px #f00 solid;
			}
			h2:first-child{
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<div class="one">
			<h2>div1</h2>
			<p>p1</p>
			<p>p2</p>
			<p>p3</p>
			<h2>div1-2</h2>
			<p>p4</p>
			<p>p5</p>
		</div>
		<div class="tow">
			<p>p1</p>
			<p>p2</p>
			<p>p3</p>
			<h2>div2</h2>
			<p>p4</p>
			<p>p5</p>
		</div>
	</body>
</html>
    
ui元素状态伪类
       selector:link;匹配selector选择器且被访问前的元素(通常只能是超链接)
       selector:visited;匹配selector选择器且已被访问过的元素(只能是超链接)
       selector:active;匹配selector选择器且处于被用户激活的元素(在鼠标点击与释放之间的事件)状态的元素
       selector:hover:匹配selector选择器且处于鼠标悬停状态的元素
       selector:focus:匹配selector选择器且已得到焦点的元素
       selector:enable:匹配selector选择器且当前处于可用状态的元素(不常用)
       selector:disabled;匹配selector选择器且当前处于不可用状态的元素
       selector:checked;匹配selector选择器且当前处于选中状态的元素
       selector:default;匹配selector选择器且页面打开时处于选中状态(即使当前没有被选中亦可用)的元素(不常用)
       selector:read-only:匹配selector选择器且处于只读状态的元素
       selector:read-write;匹配selector选择器且处于读写状态的元素(不常用)
       selector::selection;匹配selector选择器中的元素中当前被选中的内容
       上述伪类选择器中,伪类选择器前面的selector选择器可以省略,如果省略了该选择器。则selector将不作为匹配条件。而且::selection选择器前面有两个冒号
       
       实例:
       <!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			::selection{
				background-color: #f00;
			}
			input:focus{
				background-color: #333;
				color: #f00;
			}
			input:disabled{
				opacity: 0.4;
			}
			input:checked{
				width: 50px;
				height: 50px;
			}
			input:read-only{
				border: solid 1px #00f;
			}
		</style>
	</head>
	<body>
		<form action="">
			<p>用户名<input type="text" name="" id="" value="" /></p>
			<p>密码<input type="password" name="" readonly/></p>
			<p>性别<input type="radio" name="but" id="" value="" /><input type="radio" name="but" id="" value="" /></p>
			<p><input type="button" name="" id="" value="不可用" disabled="" /><input type="submit" name="" id="" value="提交" /></p>
		</form>
	</body>
</html>

兄弟选择器
    selector1~selector1{……}
    兄弟选择器匹配与selector1对应的元素后面,能匹配selector2的兄弟节点
    
    实例:
       <!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			::selection{
				background-color: #f00;
			}
			input:focus{
				background-color: #333;
				color: #f00;
			}
			input:disabled{
				opacity: 0.4;
			}
			input:checked{
				width: 50px;
				height: 50px;
			}
			input:read-only{
				border: solid 1px #00f;
			}
                        h2~p{
                            border:1px solid #0ff;
                        }
		</style>
	</head>
	<body>
		<form action="">
                        <h2>兄弟选择器</h2>
			<p>用户名<input type="text" name="" id="" value="" /></p>
			<p>密码<input type="password" name="" readonly/></p>
			<p>性别<input type="radio" name="but" id="" value="" /><input type="radio" name="but" id="" value="" /></p>
			<p><input type="button" name="" id="" value="不可用" disabled="" /><input type="submit" name="" id="" value="提交" /></p>
                        <div>备注</div>
		</form>
	</body>
</html>

伪元素
    伪元素是创造关于文档语言能够指定的文档树之外的抽象
    伪元素选择器只能针对css中已有的伪元素起作用
    :first-letter:该选择器对应的css样式对指定对象内的第一个字符串起作用
    :first-line:该选择器对应的css样式指定对象内的第一行元素内容起作用
    :before:该选择器与内容相关的属性结合使用,用于在指定对象内部的前端插入内容
    :after:该选择器与内容相关的属性结合使用,用于在指定对象内部的尾端插入内容
    
伪元素与伪类之间的区别:伪元素是创造关于文档之外的抽象,伪类选择器是当前元素的某一个状态和一个属性