css 选择器

一.基础选择器

* | div | . | #
<!-- 先建立一个用来试验选择器的 html 文件 -->
<!-- 04.html -->
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>基础选择器</title>
    <link rel="stylesheet" href="./04.css">
</head>
<body>
	<div></div>
	<div class="dd"></div>
	<div class="dd" id="d"></div>

	<div class="div"></div>
	<div class="div red r"></div>
	<div class="div"></div>
</body>
</html>
<!-- ******* -->
	<!-- 选择器: css 选择 html 标签的一个工具 => 将 css 与 html 建立起联系,那么 css 就可以控制 html 样式 -->
	<!-- 选择器就是给 html标签起名字 -->

1.通配选择器

/* * => 通配选择器 => html,body,body 下所有用于显示内容的标签 */
* {
    border: 1px solid black;
}

2.标签选择器

/* div => 标签名 => 就是标签选择器 : 开发过程中尽可能少的运用,运用范围为最内层的显示层 */
div {
    width: 200px;
    height: 200px;
    background-color: red;
}
匹配文档中所有与标签名匹配的标签: 如 div{}会匹配文档中全部 div,span{}会匹配文档中所有 span

3.类选择器

/* dd => class名 => 类选择器 : 布局的主力军 */
.dd{
    background-color: orange;
}
匹配文档中所有拥有class属性且属性值为dd的标签:如<sup class="dd"></sup> <sub class="dd"></sub>均会被匹配

4.id 选择器:

/* d => id 名 => id 选择器 : id 一定要为唯一的*/
#d{
    background-color: green;
}
匹配文档中所有拥有id属性且属性值为d的标签:如<div id="d"></div> <section id="d"></section>均会被匹配

二.基础选择器优先级

  • 基础选择器优先级大致与选择器匹配范围成反比,匹配范围越小,优先级越高
  • 基础选择器优先级大致与选择器匹配精度成正比,匹配精度越高,优先级越高
  • 基础选择器优先级: id 选择器 > 类选择器 > 标签选择器 > 通配选择器

v_hint: id 选择器必须保证单文档的唯一性

三.组合选择器

1.群组选择器

div, span, .red, #div {
    color: red;
}
  • 一次性控制多个选择器
  • 选择器之间以,隔开,每一个选择器位均可以为任意合法选择器与选择器组合

2.子代(后代)选择器

子代选择器用 > 连接
body > div {
    color:red;
}
后代选择器用空格连接
.sup .sub {
    color:red;
}
  • 一次性控制一个选择器(逻辑最后的那个选择器),前置位的选择器为修饰性选择器
  • 每一个选择器未均可以为任意合法选择器或选择器组合
  • 子代选择器必须为一级父子嵌套关系, 后代选择器可以为一级及多级父子嵌套关系

3.相邻(兄弟)选择器

相邻选择器+连接
.d1+.d2 {
    color: red
}
兄弟选择器~连接
.d1~.d3 {
    color: red;
}
  • 一次性控制一个选择器(逻辑最后的那个选择器),前置位的选择器为修饰性选择器
  • 每一个选择器位均可以为任意合法选择器或选择器组合
  • 相邻选择器必须为直接相邻关系,兄弟选择器可以为直接相邻或间接相邻关系

4.交集选择器

<div class="d" id="dd"></div>
div.d#dd {
    color: red;
}

<div class="d1 d2 d3"></div>
.d1.d2.d3 {
    color: red;
}

四.组合选择器优先级

  • 组合选择器优先级与权值相关, 权值为权重和
  • 权重对应关系
选择器权重
通配1
标签10
类\属性100
id1000
!important10000
  • 选择器权值比较, 只关心权重和,不更新选择器位置
  • 不同级别的选择器间不具备可比性: 1个类选择器优先级高于 n 个标签选择器的任意组合
// 优先级来源(操作的是同一标签的同一属性)
// 优先级取决于权重,其实就是比较个数
1.不同的修饰符(~ +)(后代/兄弟/交集...)均不影响权重
2.选择器的位置也不会影响权重
3.权重只和个数有关
4.id 的权重无限大于 class 无限大于标签
5.属性选择器与类选择器一样
.d5 {
    font-size: 20px;
}
/* 了解: 属性选择器 */
[aa="*b"] {
    font-size: 30px;
}
/* 两个类名的选择器大于一个类名的选择器与类名无关 */
.d4 .d5 {
    font-size: 40px;
}

/* 每个选择器位也可以替换为一个组合选择器 */
body .d1 .d3 .d5 {
    font-size: 50px;
}
/* .d1 div .d3 .d5 优先级等于 body .d1 .d3 .d5 */
.d1 div .d3 .d5 {
    font-size: 100px;
}
#div {
    font-size: 200px;
}

五.属性选择器

  • [attr]: 匹配拥有 attr 属性的标签
  • [attr=val]: 匹配拥有 attr 属性,属性值为 val 的标签
  • [attr^=val]: 匹配拥有 attr 属性,属性值以 val 开头的标签
  • [attr$=val]: 匹配拥有 attr 属性,属性值以 val 结尾的标签
  • [attr*=val]: 匹配拥有 attr 属性,属性值包含 val 的标签

v_hint: 属性选择器权重等价于类选择器

/* 了解: 属性选择器 */
[class] {
    color: red;
}
[name="阿三"] {
    color: orange;
}
[aa^="a"] {
    color: black;
}
[aa$="b"] {
    color: blue;
}
[aa*="w"] {
    color: #eee;
}

六.伪类选择器

1. a标签四大伪类

  • :link : 未访问状态
/* 链接的初始状态(未被访问过) */
a:link {
    color: green;
}
  • :hover : 悬浮状态
/* 链接被鼠标悬浮 */
a:hover {
    color: yellow;
    /* 鼠标样式 */
    cursor: pointer;
}

cursor(鼠标状态) 属性值

描述
url(网址)需使用的自定义光标的 URL.
注释: 请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标
default(默认)默认光标(通常是一个箭头)
auto默认. 浏览器设置的光标
crosshair光标呈现为十字线
pointer光标呈现为指示链接的指针(一只手)
move此光标指示某对象可被移动
e-resize此光标指示举行框的边缘可被向右(东)移动
ne-resize此光标指示矩形框的边缘可被向上及向右移动(北/东
nw-resize此光标指示矩形框的边缘可被向上及向左移动(北/西)
n-resize此光标指示矩形框的边缘可被向上(北)移动
se-resize此光标指示矩形框的边缘可被向下及向右移动(南/东)
sw-resize此光标指示矩形框的边缘可被向下及向左移动(南/西)
s-resize此光标指示矩形框的边缘可被向下移动(北/西)
w-resize此光标指示矩形框的边缘可被向左移动(西)
text此光标指示文本
wait此光标指示程序正忙 (通常是一只表或沙漏)
help此光标指示可用的帮助 (通常是一个问号或一个气球)
  • :actice : 激活状态
/* 链接处于激活状态(鼠标按下) */
a:active {
    color: red;
}
  • :visited : 已访问状态
/* 链接已被访问过 */
a:visited {
    color: #ccc
}
扩展对其他标签也可以使用
/* 设置初始状态 */
.box {
    width: 200px;
    height: 200px;
    background-color: red;
}
/* 再确定第二状态 */
/* 悬浮状态 */
.box:hover {
    background-color: yellowgreen;
    cursor: pointer;
}
/* 激活状态 */
.box:active {
    background-color: greenyellow;
}

2. 内容标签

  • :before: 内容之前
  • :after: 内容之后
:before, :after {
    content: "ctn";
}

3. 索引伪类

  • :nth-child(n): 位置优先,再匹配类型
  • :nth-of-type(n): 类型优先,再匹配位置
/* 同一结构下的第几个,先确定位置再匹配类型 */
section:nth-child(3), section:nth-child(5) {
    background-color: green;
}

/* 同一结构下的某选择器的第几个,先确定类型再匹配位置 */
section:nth-of-type(1), section:nth-of-type(3) {
    background-color: cyan;
}

v_hint: 值可以为位置数, 也可以为2n,3n…, 代表2的倍数, 3的倍数, 且位置数从1开始

4. 取反伪类

  • :not(selector): 对 selector 进行取反
/* 取反 */
/* :not 前面不加类名 就是通配 */
section:not(:nth-of-type(2)) {
    background-color: pink;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值