【css3】02-css3新特性之选择器篇

目录

[1 属性选择器](#1 属性选择器)

[2 结构伪类选择器](#2 结构伪类选择器)

[3 其他选择器](#3 其他选择器)

:target和::selection

::first-line和::first-letter

[4 伪类和伪元素的区别](#4 伪类和伪元素的区别)

伪类(Pseudo-classes)

伪元素(Pseudo-elements)

伪类和伪元素的区别


1 属性选择器

☞ 属性选择器:

  • 属性名=值 {}
  • 属性名 {} 匹配对应的属性即可
  • 属性名\^=值 {} 以值开头
  • 属性名\*=值 {} 包含
  • 属性名$=值 {} 以值结束

样例:

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		/* p 标签 class属性值以o结尾 */
		/* p[class$="o"] {
			color: red;
		} */

		/* p标签下匹配对应的属性class */
		/* p[class] {
			color: red;
		} */

		/* p标签下  class属性值以o开头 */
		p[class^="o"] {
			color: red;
		}

		/* p标签下  class属性值包含 */
		p[class*="o"] {
			color: red;
		}
	</style>
</head>

<body>
	<div class="one">文字</div>
	<p class="one">段落</p>
	<p class="two">段落2</p>
</body>

</html>

2 结构伪类选择器

☞ 结构伪类选择器:

  • :first-child {} 选中父元素中第一个子元素
  • :last-child {} 选中父元素中最后一个子元素
  • :nth-child(n) {} 选中父元素中正数第n个子元素
  • :nth-last-child(n) {} 选中父元素中倒数第n个子元素

样例说明:li:first-child {} 假若li不是父元素里的第一个元素,则不会生效

复制代码
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		/* li {
			color: red;
		}
		 */

		/* 第一个子元素是li */
		/* li:first-child {
			 color: red;
		}
		
		li:last-child {
			color: red;
		} */

		/* li:nth-child(3) {
			color: red;
		} */

		/* li:nth-last-child(3) {
			color: red;
		} */

		li:nth-child(odd) {
			color: red;
		}
	</style>
</head>

<body>

	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li>
		<li>6</li>
		<li>7</li>
	</ul>
</body>

备注:

1、n 的取值大于等于0时,n 可以设置预定义的值:

  • odd表示选中奇数位置的元素
  • even表示选中偶数位置的元素

2、 n 可以是一个表达式:

an+b的格式

3 其他选择器

☞ 其他选择器:

  • :target 被锚链接(a标签)指向的时候会触发该选择器
  • ::selection 当(文本...)被鼠标选中的时候显示该样式
  • ::first-line 选中第一行
  • ::first-letter 选中第一个字符

:target和::selection

效果:1 是run执行后的初始页面

2 是点击了"找第5行的p"触发了:target样式效果

3 是鼠标选中文字,触发::selection 样式效果

代码:

复制代码
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		/* 被锚链接指向的时候会触发该选择器 */
		p:target {
			color: red;
		}


		/* 当使用鼠标选中的时候样式 */
		p::selection {
			color: red;
			background-color: pink;
		}
	</style>
</head>

<body>

	<p>文字</p>
	<p>文字</p>
	<p>文字</p>
	<p>文字</p>
	<p id="test">文字</p>
	<p>文字</p>
	<p>文字</p>
	<p>文字</p>

	<a href="#test">找第5行的p</a>
</body>

::first-line和::first-letter

样例:第一行设置为红色;第一个字母设置为蓝色

代码:

复制代码
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		.one {
			width: 200px;
			height: 200px;
			border: 1px solid red;
			word-break: break-all;
		}

		.one:first-line {
			color: red;
		}

		.one:first-letter {
			font-size: 50px;
			color: blue;
		}
		
/* 
		.one::before {
			content: "";
			width: 100px;
			height: 100px;
			background-color: pink;
			display: block;
		}
 */

	</style>
</head>
<body>
	<div class="one">
		asdfadfafdasfasfdasdfafdasfdadsfasdfafdasdfasdfasdfafdadfafdasdfajsdflkajlfkjafdlkjaslfjalkdsfjalsjfalkdsjfalsfd
	</div>
</body>

4 伪类和伪元素的区别

在CSS3中,伪类(Pseudo-classes)和伪元素(Pseudo-elements)是两个不同的概念,尽管它们有时候在名称和用法上可能有些相似,但它们各自有不同的目的和功能。

伪类(Pseudo-classes)

伪类用于选择处于特定状态的元素。它们以冒号(:)开头,并且用于选择页面上处于特定状态的元素,而不是基于元素的名称、类、ID或属性。例如:

  • :hover:用户悬停在元素上时的样式。
  • :active:元素被激活(如鼠标点击但尚未释放)时的样式。
  • :visited:用户已访问的链接的样式。
  • :first-child:作为其父元素的第一个子元素的样式。
  • :nth-child(n):作为其父元素的第n个子元素的样式。
  • :odd:even:用于选择列表中奇数或偶数位置的元素(与 :nth-child(odd):nth-child(even) 类似)。

伪元素(Pseudo-elements)

伪元素用于在元素的内容前后插入内容,或者选择元素的特定部分。它们也以冒号(:)开头,但紧接着是一个双冒号(::),以区分伪类和伪元素。但在CSS2.1和更早的规范中,伪元素仅使用单冒号。为了向后兼容,大多数浏览器在单冒号和双冒号之间都有很好的支持。但在CSS3中,推荐使用双冒号来明确表示伪元素。

一些常见的伪元素包括:

  • ::before:在元素的内容之前插入内容。
  • ::after:在元素的内容之后插入内容。
  • ::first-letter:选择文本块的首字母。
  • ::first-line:选择文本块的第一行。
  • ::selection:用户用鼠标或其他指针设备选择的元素部分。

伪类和伪元素的区别

  • 用途:伪类用于选择处于特定状态的元素,而伪元素用于在元素的内容前后插入内容或选择元素的特定部分。
  • 语法 :虽然两者都以冒号开头,但伪元素通常使用双冒号(::),以与伪类区分。
  • 元素数量 :伪类可以应用于一个或多个元素,而伪元素(如::before::after)通常只与一个元素关联。
  • 对DOM的影响:伪类不添加新的元素到DOM树中,而伪元素则实际上在DOM树中添加了一个虚拟的元素。
相关推荐
小徐_23331 小时前
wot-ui-cli 1.1.0 发布:支持 OpenCode、Antigravity,wot-ui 图标迁移不再靠猜
前端
__zRainy__2 小时前
Node.js Web 框架选型指南:从 Express 到 Hono 的全景对比
前端·node.js·express·koa·nestjs·egg·fastify
西瓜有点饿2 小时前
PostCSS 和 UnoCSS 的作用和区别
前端·postcss
伟大的兔神3 小时前
我做了一个本地优先的 AI 图片工作台:Loomora v1.0.0 正式发布
前端·javascript·vue.js
90后的晨仔4 小时前
uni-app项目 Vue3 状态管理 Pinia 完全指南:从概念到实战的深度解析
前端
90后的晨仔4 小时前
uni-app 在 iOS 平台跳转页面时移除底部安全区域的完整技术指南
前端
用户938515635074 小时前
React + JWT 登录鉴权底层原理与工程化实践
前端·react.js
zww89491114 小时前
家政派单系统开发实战:架构设计与派单算法指南
前端·系统架构
fangzhanpeng1685 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript
赵广陆5 小时前
企业实战:web服务集成
前端·pycharm·fastapi