HTML和CSS —— 4、CSS选择器

CSS选择器

一、常用选择器

1.1 元素选择器

​ 作用:根据标签名来选中指定的元素

​ 语法:标签名{}

​ 例子:p{} h1{} div{}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>元素选择器</title>
        <style>
            p{
                color:red;
            }
            h1{
                color:orange;
            }
            div{
                color:green;
            }
        </style>
    </head>
    <body>
        <p>
            这是一哥p标签
        </p>
        <h1>
            这是一个h1标签
        </h1>
        <div>
            这是一个div标签
        </div>
    </body>
</html>

1.2 id选择器

​ 作用:根据元素的id属性选中一个元素

​ 语法:#id属性值{}

​ 例子:#box{} #red{}

<!DOCTOPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>id选择器</title>
        <style>
            #red{
                color:red;
            }
            #green{
                color:green;
            }
        </style>
    </head>
    <body>
        <p id="red">
            这是一个id为red的p标签
        </p>
         <p id="green">
            这是一个id为green的p标签
        </p>
    </body>
</html>

1.3 class选择器

​ 作用:根据元素的class属性值选中一组元素

​ 语法:.class属性值

class是一个标签的属性,它和id类似,不同的是class可以重复使用,可以通过class属性来为元素分组,可以同时为一个元素指定多个class属性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>class选择器</title>
        <style>
            .aaa{
            	color:red;
            }
            .bbb{
            	color:green;
            }
            .ccc{
            	color:orange;
            }
        </style>
    </head>
    <body>
        <p class="aaa">
            这是一个P标签
        </p>
        <span class="bbb">
        	这是一个span标签
        </span>
        <div class="ccc">
            这是一个div标签
        </div>
        <p class="eee aaa">
            这是一个p标签
        </p>
    </body>
</html>

1.4 通配选择器

​ 作用:选中页面中的多有元素

​ 语法:*

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>通配选择器</title>
        <style>
            *{
            	color:red;
            }
        </style>
    </head>
    <body>
        <p>
            这是一个p标签
        </p>
        <span>
        这是一个span标签
        </span>
        <div>
            这是一个div标签
        </div>
    </body>
</html>

二、复合选择器

2.1 交集选择器

​ 作用:选中同时复合多个条件的元素

​ 语法:选择器1选择器2选择器3选择器n{}

​ 注意点:交集选择器中如果有元素选择器,必须使用元素选择器开头

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>交集选择器</title>
        <style>
            div.red{
				color:red;
            }
        </style>
    </head>
    <body>
        <div class="red">
            这是一个class为red的div标签
        </div>
        <p class="red">
            这是一个class为red的p标签
        </p>
        <div class="green">
            这是一个class为green的div标签
        </div>
    </body>
</html>

2.2 并集选择器

​ 作用:同时选择多个选择器对应的元素

​ 语法:选择器1,选择器2,选择器3,选择器n{}

<!DOCTYPE html>
<html>
    <meta charset="utf-8">
    <title>并集选择器</title>
    <head>
        <style>
            h1,p{
                color:red;
            }
        </style>
    </head>
    <body>
        <div class="red">
            这是一个class为red的div标签
            <p>
                这是一个p标签
            </p>
        </div>
        <span class="red">这是一个class为red的span标签</span>
        <h1>
            这是一个h1标签
        </h1>
        <p>
            这是一个p标签
        </p>
    </body>
</html>

三、关系选择器

  • 父元素:直接包含子元素的元素叫做父元素

  • 子元素:直接被父元素包含的元素是子元素

  • 祖先元素:直接或间接包含后代元素的元素叫做祖先元素

​ 一个元素的父元素也是它的祖先元素

  • 后代元素:直接或间接被祖先元素包含的元素叫做后代元素

    ​ 子元素也是后代元素

  • 兄弟元素:拥有相同父元素的元素是兄弟元素

3.1 子类选择器

​ 作用:选中指定父元素的指定子元素(只能一级一级指定)

​ 语法:父元素 > 子元素

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>子元素选择器</title>
        <style>
            div.red > p.green{
				color:red;
            }
        </style>
    </head>
    <body>
        <div class="red">
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
            <p class="green">
                这是一个p标签
            </p>
        </div>
        <hr/>
          <div>
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
              <p class="green">
                这是一个p标签
            </p>
        </div>
        <p>
            这是一个p标签
        </p>
    </body>
</html>

3.2 后代选择器

​ 作用:选中指定元素内的指定后代元素(可以不用一级一级指定)

​ 语法:祖先 后代

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>子元素选择器</title>
        <style>
            div.red span{
				color:red;
            }
        </style>
    </head>
    <body>
        <div class="red">
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
            <p class="green">
                这是一个p标签
            </p>
        </div>
        <hr/>
          <div>
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
              <p class="green">
                这是一个p标签
            </p>
        </div>
        <p>
            这是一个p标签
        </p>
    </body>
</html>

3.3 兄弟选择器

  • 作用1:选择所有a标签下边第一个兄弟

​ 语法:a标签+b标签

  • 作用2:选择所有a标签下边所有的兄弟

    语法:a标签~b标签

<!DOCTYPE html>
<html>
    <head>
     	<meta charset="utf-8">
    	<title>兄弟选择器</title>
        <style>
            p+span{
                color:red;
            }
            /*p~span{
                color:red;
            }*/
        </style>
    </head>
    <body>
        <div class="red">
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
            <p class="green">
                这是一个p标签
            </p>
            <span>这是一个span标签</span>
            <span>这是一个span标签</span>
        	<span>这是一个span标签</span>
            <span>这是一个span标签</span>
            <span>这是一个span标签</span>
            <span>这是一个span标签</span>
        </div>
    </body>
    
</html>

四、属性选择器

​ 作用:选择含有指定属性的元素

​ 语法:标签 [属性名=属性值]:选择含有指定属性和属性值的元素

​ 标签 [属性名^=属性值]:选择属性值以指定值开头的元素

​ 标签 [属性名$=属性值]:选择属性值以指定值结尾的元素

​ 标签 [属性名*=属性值]:选择属性值含有某值的元素的元素

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>属性选择器</title>
        <style>
            p[title=red]{
				color:red;
            }
            /*
            p[title^=red]{
				color:red;
            }
            p[title$red]{
				color:red;
            }
            p[title*=red]{
				color:red;
            }
            */
        </style>
    </head>
    <body>
        <div title="red">
            这是一个title为red的div标签
        </div>
         <div title="green">
            这是一个title为green的div标签
        </div>
         <div title="orange">
            这是一个title为orange的div标签
        </div>
    </body>
</html>

五、伪类选择器

伪类(不存在的类,特殊的类)

​ — 伪类用来描述一个元素的特殊状态

​ 比如:第一个元素,被点击的元素,鼠标移入的元素…

​ — 伪类一般情况下都是使用:开头

  • 表示第几个的伪类

    ​ :first-child 第一个子元素

​ :last-child 最后一个子元素

​ :nth-child()选中第n个子元素

​ 特殊值:

​ n 第n个 n的范围0到正无穷

​ 2n 或 even 表示选中偶数位的元素

​ 2n+1 或 add 表示选中奇数位的元素

以上这些伪类都是根据所有的子元素进行排序

注意:1. 这里的必须是所有子元素里的第一个,而且是其所指的标签
2.这里不一定必须是上面的父子类元素,只是举例,以上列举的三种伪类只是针对选择第几个的!如以下举例。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>伪类</title>
        <head>
            <style>
                div:child{
					color:red;
                }
            </style>
        </head>
    </head>
    <body>
        <div>
            这第一个div标签
        </div>
        <div>
            这第二个div标签
        </div>
        <div>
            这第三个div标签
        </div>
        <div>
            这第四个div标签
        </div>
        <div>
            这第五个div标签
        </div>
        <div>
            这第六个div标签
        </div>
    </body>
</html>
  • 表示同类元素进行排序

    ​ :first-of-type

    ​ :last-of-type

    ​ :nth-of-type()

    ​ — 这几个伪类的功能和上述的类似,不同点是他们是在同类型元素中进行 排序

    注意:这里指的是所有子元素中同类型元素里面的第一个

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>伪类</title>
        <sytle>
        	
        </sytle>
    </head>
    <body>
        
    </body>
</html>
:first-child 匹配的是某父元素的第一个子元素,可以说是结构上的第一个子元素。并且满足标签所指。

:first-of-type 匹配的是该类型的第一个,类型是指什么呢,就是冒号前面匹配到的东西,比如 p:first-of-type,就是指所有p元素中的第一个。这里不再限制是第一个子元素了,只要是该类型元素的第一个就行了,当然这些元素的范围都是属于同一级的,也就是同辈的。

同样类型的选择器 :last-child  和 :last-of-type、:nth-child(n)  和  :nth-of-type(n) 也可以这样去理解。
  • 超链接的伪类

    ​ :link 用来表示没访问过的链接(正常的链接)

    ​ :visited 用来表示访问过的链接(由于隐私原因,这个只能修改链接的颜色)

    ​ :hover 用来表示鼠标移入的状态

    ​ :active 用来表示鼠标点击

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>超链接的伪类</title>
        <style>
            a:link{
                color:red;
            }
            a:visited{
                color:green;
            }
            a:hover{
                font-size:300px;
            }
            a:active{
				color:orange;
                font-size:600px;
            }
        </style>
    </head>
    <body>
        <a href="https://www.baidu.com">百度链接</a><br/>
        <a href="https://www.baidu.com">百度链接</a><br/>
    </body>
</html>
  • 伪元素

    ​ 表示页面中一些特殊的并不真实的存在的元素(特殊的位置)

    ​ 伪元素使用 :: 开头

    ​ ::first-letter 表示第一个字母

    ​ ::first-line 表示第一行

    ​ ::selection 表示选中的内容

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>伪元素</title>
        <style>
            div::first-letter{
                font-size:20px;
                color:red;
            }
            p::first-line{
				color:yellow;
            }
            .selection::selection{
				color:green;
            }
        </style>
    </head>
    <body>
        <div class="selection">
            Hello Hello Hello
        </div>
        <p class="selection">
            Lorem ipsum dolor sit amet consecteturadipisicing elit.Atque velit modi veniam nisi veritatis tempore laborum nemo ipsa itaque optio.Id odit consequatur mollitia excepturi,minus saepe nostrum vel porro.
        </p>
    </body>
</html>

六、继承

样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上

继承是发生在祖先和后代之间的

继承的设计是为了方便我们的开发,
	利用继承我们可以将一些通用的样式统一设置到公同的祖先元素上,
		这样只需设置一次即可让所有的元素都具有该样式
		
注意:并不是所有的样式都会被继承
	比如 背景相关的,布局相关等的这些样式都不会被继承
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>继承</title>
        <style>
            div{
                color:red;/*可以被继承的属性*/
                background-color:yellow;/*不可被继承的属性*/
            }
        </style>
    </head>
    <body>
        <div>
            这是一个div标签
            <p>
                这是一个p标签
                <span>这是一个span标签</span>
            </p>
        </div>
    </body>
</html>

七、选择器的权重

样式的冲突 :当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。

发生样式冲突时,应用哪个样式由选择器的权重(优先级)决定

选择器的权重

	内联样式			1.0.0.0
	id选择器			 0.1.0.0
	类和伪类选择器		   0.0.1.0
	元素选择器			 0.0.0.1
	通配选择器			 0.0.0.0
	继承的样式			 没有优先级

比较优先级时:

1.需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的);

2.选择器的累加不会超过其最大的数量级(即比如第四位相加,也不会加到影响第三位的数值),类选择器再高也不会超过id选择器;

3.如果优先级计算后相同,此时则优先使用靠下的样式。

可以在某一个样式的后边添加!important,则此时该样式会获取到最高的优先级,甚至超过内联样式,注意:在开发中这个东西一定要慎用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值