CSS选择器种类及其继承性

352 阅读1分钟

1.标记选择器:
只写标签名,后面不加“<>”;
标签名做选择器会把页面中所有的这个标签都选中;
2.id选择器
每个页面标签都可以增加id属性,
标签的id值必须遵从以下规范;(1)只能由字母、下划线、数字组成
(2)必须是字母开头
(3)不能与标签名同名
(4)尽量使用有意义的单词 如:nav;

注意:(1)任何一个页面不能使用同名id,我们通过实验发现,浏览器会把同名的id都是用相同的元素修饰,但我们不能这样做,id具有唯一性。
(2)页面上的任何一个元素,都可以同时被多个选择器同时选中,并且多个选择器同时作用与这一个标签,及多个选择器选中同一个标签,他们的样式可以叠加起来。这是CSS层叠的原因
(3)如果多个选择器选中同一个元素,他们之间的样式有冲突,就存在选择器的优先级问题
顺序:在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式、作为style属性写在元样式、id选择器、类选择器、标签选择器、通配符选择器、浏览器自定义或继承。
3.类选择器
(1)类选择器前面有一个点(.);
(2)任何标签都可以有class属性;
(3)class属性的命名规范与id属性一样
(4)一个class属性名可以和id属性名相同但是最后不要一样
(5)不同的标签可以有同一个class属性。一个标签亦可以从属多个class属性,但是表示时中间用空格隔开;不允许在标签中有两个class,
(6)尽量使用原子化的类,少用大而全的类。
(7)尽量使用class,尽量不用id做选择器,(class上样式,id上行为),id一般用在js中,getElementbyId()。
4.后代选择器
后代选择器不是儿子选择器,

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div ul p{
			color: red;
		}
	</style>
</head>
<body>
   <div>
   	<ul>
   		<li>
   			<p>后代选择器</p>
   		</li>
   	</ul>
   </div>

   
   <div>
   	<div>
   		<ul>
   			<li>
   				<p>后代选择器</p>
   			</li>
   		</ul>
   	</div>
   </div>
</body>
</html>

显示两个红色的:后代选择器
5.交集选择器
语法:标记名.类名.类名

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		h2.biaoti2{
			color: red;
		}
	</style>
</head>
<body>
    <h2>标题1</h2>
    <h2 class="biaoti2">标题2</h2>
</body>
</html>

在这里插入图片描述
6.并集选择器(组选择器)
多个选择器之间用逗号隔开,被选中的元素采用相同样式

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		h2,p{
			color: red;
		}
	</style>
</head>
<body>
    <h2>标题1</h2>
    <p>语句2</p>
</body>
</html>

在这里插入图片描述
7.通配符(*)选择器:
*选择页面中的所有元素,这样做不好,一般不用。
8.CSS的继承性
(1)只能把自己的样式继承给后代节点,但是不影响自己的父节点和兄弟节点
(2)以下属性能被继承:
color, text-, font- , line-.
不能继承的属性:
有关盒子模型的属性,定位的属性,背景属性。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div{
			color: red;
			font-size: 50px;
		}
	</style>
</head>
<body> 
	<div>盒子中的文字
		<p>段落文字</p>
	</div>
</body>
</html>

此时都会显示相同的效果,p标签继承了div标签的效果,如果把css样式表中的div换成p,p{ color:red; font-size:50px;},此时只有p中的文字才有该效果。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div{
			color: red;
			border:  solid red  2px;
		}
	</style>
</head>
<body> 
	 <div>
	 	<div>
	 		<div>
	 			<div>
	 				<div>
	 					  <p>标题中的文字</p>
	 				</div>
	 			</div>
	 		</div>
	 	</div>
	 </div>
</body>
</html>

如果把style中的div换成p,此时两者效果中边框不同,即每一个div标签都会调用标签选择器中的效果。