前端篇 css选择器

1.基础选择器

基础选择器是复合选择器的基础,一切骚操作都离不开基础选择器,所以这玩意儿必须掌握熟练。

简单分类和描述

基础选择
通配符选择器
标签选择器
类选择器
id选择器
所有对象指定
指定对应的标签全体
指定所有同类名的标签
指定一个拥有id名的标签

我们以下面简单代码作为后续操作的基础

<body>
  <div>
    div: 我是div
    <p>p: 我是p1</p> 
    <p>p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

1.1. 通配符选择器

“*”即代表通配符选择器,意思是指操控所有单元,后面的{}中键入所需要的写入的样式

语法

*{
	#需要的样式
}

例:将所有文本内容设置为红色

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
  <style>
    * {
      color: red;
    }
  </style>
</head>
<body>
  <div>
    div: 我是div
    <p>p: 我是p1</p> 
    <p>p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

1.2.标签选择器

标签名即代表标签选择器,意思是指操控所指定的标签,后面的{}中键入所需要的写入的样式

语法

标签名{
	#需要的样式
}

例:将所有li中文本设置为红色

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
    li {
      color: red;
    }
  </style>
<body>
  <div>
    div: 我是div
    <p>p: 我是p1</p> 
    <p>p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

1.3.类选择器

“.自定义类名” 即代表类选择器,意思是指操控所有具有对应类选择器名的标签,后面的{}中键入所需要的写入的样式。当然使用前,先要用class为标签取对应的类名,类选择器和id选择器能够精确的指定对应的标签,其灵活性是通配符选择器和标签选择器所不能比拟的。

样式

<ul class="自定义类名">
.自定义类名{
	#需要的样式
}

例:为p1、p2分别设置不同颜色

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   .txt1{
       color:blue;
   }
   .txt2{
       color:green;
   }
</style>
<body>
  <div>
    div: 我是div
    <p class="txt1">p: 我是p1</p> 
    <p class="txt2">p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

1.4.ID选择器

“#自定义id名” 即代表id选择器,意思是指操控所有具有对应id选择器名的标签,后面的{}中键入所需要的写入的样式。当然使用前,先要用id为标签取对应的id名,类选择器和id选择器能够精确的指定对应的标签,其灵活性是通配符选择器和标签选择器所不能比拟的。

样式

<ul id="自定义id名">
.自定义id名{
	#需要的样式
}

id选择器与类选择器很很相似所以也能实现同样的功能

例:为p1、p2分别设置不同颜色

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   #txt1{
       color:blue;
   }
   #txt2{
       color:green;
   }
</style>
<body>
  <div>
    div: 我是div
    <p id="txt1">p: 我是p1</p> 
    <p id="txt2">p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

1.5.id选择器和类选择器的区别

一个类选择器,是为所有具有相同类名的标签设置属性,可以使用很多次。
而一个ID 选择器,是为所有第一个具有id名的标签设置属性,只能使用一次。
当我们有一个样式需要在很多标签上使用时,一般用类选择器
当我们的样式在一个标签上使用时,一般使用id选择器.

例:区别

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   .txt3{
   	   color:red;
   }
   #txt1{
       color:blue;
   }
   #txt2{
       color:green;
   }
</style>
<body>
  <div>
    div: 我是div
    <p id="txt1">p: 我是p1</p> 
    <p id="txt2">p: 我是p2</p>
    <ul>
      <li class="txt3">li: 我是li1</li>
      <li class="txt3">li: 我是li2</li>
      <li class="txt3">li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

2.选择器的权限等级

2.1.权限等级概念

权限等级问题是为了解决一个问题“当我们为一个标签设置多种样式时,结果会如何?”,作为一个编写代码者,必须要清楚自己写的每一句话是什么意思,不然很容易闹笑话。

同样的,我们先看一个例子:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   *{
   		color:yellow;
	}
	p {
		color:red;
	}
	
   #txt1{
       color:blue;
   }
   .txt2{
       color:green;
   }
</style>
<body>
  <div>
    div: 我是div
    <p id="txt1" class="txt2">p: 我是p1 缝合怪</p> 
    <p>p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述
p1缝合怪最后呈现的颜色是蓝色,我们由此可知权限等级最高的是id选择器,其他方式的等级也可以如此测试,但这里就不卖关子了。

2.2.权限等级排序

id选择器>类选择器>标签选择器>通配符选择器

3.复合选择器

3.1.复合选择器概念

所谓复合选择器就是由多个基础选择器组成的选择器,复合选择器可以由各种各样的组合产生,使用复合选择器,更准确更精细地选择目标元素标签,减少冗余代码。

样式:

ul li {
	#样式
}

当然复合选择器也不是简单就间隔一个空格就完了的,它还是有几个不同形式的,它们也对应了不同的功能,下面我们详细讲一讲

3.2.并集选择器

3.2.1.并集选择器介绍

功能:通过抽出重复代码,统一管理,实现减少代码冗余

先看代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   #txt1{
       color:blue;
   }
   #txt2{
       color:blue;
   }
</style>
<body>
  <div>
    div: 我是div
    <p id="txt1">p: 我是p1</p> 
    <p id="txt2">p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述
从css部分中我们可以看见#txt1和#txt2的样式是一样的,这里只是两个id选择器所以看不出啥,但要是有一百个一千个呢?那就显得臃肿了,所以为了减少这种冗余,并集选择器应运而生

3.2.2.并集选择器使用

其实很简单,也就是用“,”逗号把各个基础选择器分开而已。

.tx1,#txt2,ul,p,#{
	#样式
}

知道并集选择器后我们来优化一下上面的代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   #txt2,#txt1{
       color:blue;
   }
</style>
<body>
  <div>
    div: 我是div
    <p id="txt1">p: 我是p1</p> 
    <p id="txt2">p: 我是p2</p>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述
就像你看到那样,代码功能是一样的,但省了代码,看起来更舒服也更方便管理

3.3. 交集选择器

3.3.1.交集选择器介绍

所谓交集选择器即是两个或多个选择器共同指定的部分,为的是精确指定目标。

样式

选择器1选择器2选择器3{
	#样式
}

需要注意的是为了避免误会类选择器和id选择器一般不能放在最前面。如“#txtp”的实际含义就不是交集选择器,而是一个单纯的id选择器。


`<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
</style>
<body>
  <div>
    div: 我是div
    <p class="txt1">p: 我是p1</p> 
    <h6 class="txt1">p: 我是p2</h6>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

如上述代码所示,h6和p标签都有类名txt1,如何精确的类名为txt1的h6标签改变颜色呢?这里我们就可以用交集选择器。

3.3.2. 交集选择器使用

几种举例:

p#txt1{
	#样式
}
p#txt1.txt2{
	#样式
}
p#txt1{
	#样式
}

下面我们解决最开始的问题。


`<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   h6.txt1{
       color:blue;
   }
</style>
<body>
  <div>
    div: 我是div
    <p class="txt1">p: 我是p1</p> 
    <h6 class="txt1">p: 我是p2</h6>
    <ul>
      <li>li: 我是li1</li>
      <li>li: 我是li2</li>
      <li>li: 我是li3</li>
      <li>li: 我是li4</li>
      <li>li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

3.4.子选择器(后代选择器)

3.4.1.子选择器概念

这里子的意思不是儿子女儿,而是被元素包含在内的元素,处于包含别人地位的元素称之为父元素,处于被别人包含地位的元素称之为子元素,这里要做的就是精确选中父元素的“子”当然“孙”也是可以的

样式

xx yy zz{
	#样式
}

这里指定地点是xx下的yy下的zz
xx yy zz不好理解所以有更形象的

父元素 子元素 孙元素 曾孙元素{

}

3.4.2.子选择器使用

该讲的都讲了,来个实例吧

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
   .font .red{
       color:red;
       font-weight:block;
   }
   .font .blue{
       color:blue;
       font-weight:block;
   }
   .font .pink{
       color:pink;
       font-weight:block;
   }
   .font .brown{
       color:brown;
       font-weight:block;
   }
    .font .white{
       color:white;
       font-weight:block;
   }
    .font .yellow{
       color:yellow;
       font-weight:block;
   }
</style>
<body>
  <div class="font">
    div: 我是div
    <p class="red">p: 我是p1</p> 
    <p class="blue">p: 我是p2</p>
    <ul>
      <li class="pink">li: 我是li1</li>
      <li>li: 我是li2</li>
      <li class="brown">li: 我是li3</li>
      <li class="yellow">li: 我是li4</li>
      <li class="white">li: 我是li5</li>
      <li>li: 我是li6</li>
    </ul>
  </div>
</body>

在这里插入图片描述

3.5.伪选择器

伪选择器,也称伪元素选择器,没错它是假的选择器,很假但又不是那么假,它假就假在它不能实际改变元素的样式,而是做一些小修饰,只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于HTML来说不可见。当我们想要不通过HTML来设计,仅仅需要在某个标签前后做一点小小的装饰的时候,可以使用伪元素选择器。

div::before {
    content:"";   # 这个必须写,没有就赋空值 
    #content的属性
  ....         
}
div::after {
    content:"";   # 这个必须写,没有就赋空值 
    #content的属性
  ....         
}

伪选择器就像爬山虎,自己是没有骨头的,只能寄生在别的已经存在标签上才能显现,before和after则是表示它寄生的位置,在前还是在后
url可以设置图片,attr可以获取属性值

来个梨子(before和after):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
  div::before{
    content:"我是content";
  }
</style>
<body>
  <div>
    div: 我是div
    <p>p: 我是小明</p> 
    <p>p: 我是小兰</p>
    <p>p: 我是小樱</p>
  </div>
</body>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
  div::after{
    content:"你是个铲铲";
  }
</style>
<body>
  <div>
    div: 我是div
    <p>p: 我是小明</p> 
    <p>p: 我是小兰</p>
    <p>p: 我是小樱</p>
  </div>
</body>

在这里插入图片描述
来张图片的

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
  div::after{
    content:url(../image/OIP-CAXZZBDKG.jpg);
  }
</style>
<body>
  <div>
    div: 是猫猫我呀!
  </div>
</body>

在这里插入图片描述

来张取属性名的


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>
<style>
  div::after{
    content:attr(id);
  }
</style>
<body>
  <div id="喵喵!">
    div: 是猫猫我呀!
  </div>
</body>

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值