复合选择器
前言
复合选择器是由两个或多个基础选择器组成的。
一、交集选择器
-  由两个选择器构成,第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格。 
-  使用较少,不建议。 
<html>
	<head>
		<style>
			.red {
				color: red;
			}
			p.red {
				font-size: 12px;
			}
		</style>
	</head>
	<body>
		<div class="red">12</div>
		<p class="red">234</p>
	</body>
</html>
二、并集选择器
- 如果样式完全相同或者部分相同,使用并集选择器集体声明。
- 并集选择器,和的意思,用逗号隔开,所有选择器执行后面的样式。
<html>
	<head>
		<style>
			div,
			p {
				font-size: 12px;
			}
		</style>
	</head>
	<body>
		<div>12</div>
		<p>234</p>
		<h1>78</h1>
	</body>
</html>
三、后代选择器
外层标签写外面,内层标签写里面。
<html>
	<head>
		<style>
			div p {
				font-size: 12px;
			}
		</style>
	</head>
	<body>
		<div>
			<p>12</p> <!--只改变这一行-->
		</div>
		<p>234</p>
	</body>
</html>
四、子元素选择器
<html>
	<head>
		<style>
			.nav li { /*空格 选择儿子、孙子、重孙子*/
				font-size: 12px;
			}
			.nav > li { /*大于号 只选择亲儿子*/
				color: pink;
			}
		</style>
	</head>
	<body>
		<ul class="nav">
			<li>一级菜单
				<ul>
					<li>二级菜单 </li>
				</ul>
			</li>
		</ul>
	</body>
</html>
五、属性选择器
- 选择标签带有特殊属性的选择器。
- 用中括号表示[]
- a[title]
- a[title=“123”]
- div[class^=font]表示font开头
- div[class$=footer]表示footer结尾
- div[class*=tao]表示任意位置含有tao
<html>
	<head>
		<style>
			a[title] {
				color: red;
			}
		</style>
	</head>
	<body>
		<a title="123">qwe</a>
		<a></a>
	</body>
</html>
六、伪元素选择器(css3)
- E::first-letter 选择第一个字
- E::first-line 选择第一行
- E::selection 选中文字时候的变化样式
<html>
	<head>
		<style>
			/*.demo 类选择器
			:first-child 伪类选择器
			:first-letter 伪元素选择器*/
			p::first-letter {
				font-size: 50px;
			}
			p::first-line {
				color: green;
			}
			p::selection {
				color: pink;
			}
		</style>
	</head>
	<body>
		<p></p>
	</body>
</html>
在内部前面或者内部后面插入。
- E::before
- E::after
<html>
	<head>
		<style>
			div::before {
				content: "我";
			}
			div::after {
				content: "18岁";
			}
		</style>
	</head>
	<body>
		<div>今年</div>
	</body>
</html>










