CSS 伪元素和伪类的用法和区别

伪元素

伪元素则基于元素的位置来添加内容或样式

在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。它们只在外部显示可见,但不会在文档的源代码中找到它们,因此,称为“伪”元素。

伪元素通常用双冒号::来表示 (在实际使用中,一些旧的伪元素如:before:after仍然被广泛接受)

常见的伪元素:

  1. ::before::after:用于在选定元素的内容之前和之后插入内容
    通常与content属性一起使用,可以插入文本、图像或其他内容。
    它们不占用DOM节点,使得CSS能够解决一部分JavaScript的问题,同时避免增加无意义的页面元素。

  2. ::first-line:用于选择元素的第一行文本
    允许开发者为元素的首行文本应用特殊的样式。

  3. ::first-letter:用于为块级元素的第一个字母设置样式
    常用于设计特殊的首字下沉或装饰性效果。

  4. ::selection:定义用户选择(或高亮)文本时的样式
    可以自定义选中文本的背景色、字体颜色等外观。

  5. ::placeholder:用于选择输入框的占位符文本
    允许开发者为占位符文本设置样式。

伪元素通常与其他选择器一起使用,以指定要应用样式的具体元素。

这些伪元素提供了在不增加实际DOM元素的情况下,为页面元素添加样式和内容的能力,使得CSS的设计更加灵活和富有创意。


伪类

伪类基于元素的状态来添加特殊效果

将特殊的效果添加到特定选择器上。它是已有元素上添加类别的,不会产生新的元素。

伪类通常用单冒号:来表示

常见的伪类:

  1. :hover:这个伪类用于鼠标悬停在元素上时改变元素的样式
    通常用于定义元素的悬停效果,如改变颜色、背景或显示额外的信息。

  2. :active:当元素被用户激活时(如鼠标点击但还未释放时),该伪类用于改变元素的样式
    它通常用于表示元素被点击的状态。

  3. :focus:用于元素获得焦点时的样式
    例如,在输入框中键入文本时,输入框会获得焦点,此时可以使用:focus来改变输入框的边框颜色或样式。

  4. :visited:用于已访问的链接
    可以改变其颜色或样式,以区分已访问和未访问的链接。

  5. :first-child:用于选择其父元素的第一个子元素,并为其应用特定的样式。

  6. :last-child:用于选择其父元素的最后一个子元素(与:first-child相反)

  7. :not():用于排除某些元素,只选择不符合特定条件的元素。

  8. :checked:用于表单元素,特别是单选框和复选框,当元素被选中时,会应用特定的样式。

  9. :nth-child(n):nth-of-type(n):用于选择父元素的第n个子元素或特定类型的第n个子元素
    例如,:nth-child(odd)和:nth-child(even)可以用于选择奇数和偶数行,实现表格的斑马线效果。

  10. :empty:这个伪类用于选择没有子元素的元素。

这些伪类通常与CSS类选择器和ID选择器一起使用,以实现更多的样式控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理机安装centos7并配置基本环境,网络配置,docker配置

1.首先下载镜像Download 2.下载UltraISO 安装docker 第1步:卸载当前版本docker yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \do…

前端和设计师 结果 差异化的原因

记得很久之前与我同住的室友经常加班到半夜三更才回家,我很是不解。后来闲聊才得知她们公司的设计师待前端开发完毕之后需要一点点的对稿走查,非常浪费时间。而且设计这边不但需要标注好给开发,然而开发照着做完依然存在诸多问题。 我也曾对接…

ACS712

这份文件是Allegro MicroSystems, Inc.生产的ACS712系列集成电路的数据手册。ACS712是一种集成的霍尔效应线性电流传感器,具有1600 VRMS的电压隔离和低电阻电流导体。以下是其核心内容的整理: 产品描述 ACS712 提供了一种经济且精确的交流或直流电流传…

关于赚钱上面的金句启发,一共12项100多条,值得收藏!

注意一:个人成长与自我实现 币圈有个词叫不要"mid curve",意思是在最傻和最聪明的人都能赚到钱,不要做中间那部分人。为什么会经常出现不配赚这么多的钱的感觉,主要还是见识少,当你亲眼见过一年赚上千万一个…

基于数据库现有表导出为设计文档

1.查询 SELECTCOLUMN_NAME 字段名,COLUMN_COMMENT 字段描述,COLUMN_TYPE 字段类型,false as 是否为主键 FROMINFORMATION_SCHEMA.COLUMNS wheretable_NAME region -- 表名2.查询结果 3.导出为excel

测绘管理与法律法规 | 测绘资质分类分级标准 | 学习笔记

目录 1. 申请条件 2.审批程序 3.专业技术人员的特殊规定 1. 申请条件 法人资格:申请单位必须具有法人资格。 专业技术人员:需拥有与测绘活动相适应的测绘专业技术人员和相关专业技术人员。 技术装备:具备与测绘活动相适应的技术装备和设…

数仓建模—数据架构

数仓—数据架构 为了在企业决策中使用数据,数据必须经过整个数据平台的各个阶段。整个过程是什么样子的,从开始到结束?原始形式的数据是如何转化为可导致商业决策的见解的?这些问题可以通过数据架构来回答。 数据架构是指记录组织所有数据资产的模型、规则和标准。它映射…

sql-labs靶场的搭建

1.下载一个sql-labs GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 2.下载 phpstudy(小皮) https://www.xp.cn/download.htmlhttps://www.xp.cn/download.html 3. 4. 5. 6. 7.http://127.0.0.1/sqli-labs…

Qt 窗⼝

Qt 窗⼝ 菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项在菜单项之间添加分割线综合⽰例 ⼯具栏创建⼯具栏设置停靠位置设置浮动属性设置移动属性综合⽰例状态栏状态栏的创建在状态栏中显⽰实时消息在状态栏中显⽰永久消息 浮动窗⼝浮动窗⼝的创建设置停靠的位置 对话框对话框介…

再生龙(Clonezilla)网络克隆linux系统实现迁移——筑梦之路

官方网站:Clonezilla - 簡介 环境说明 源端:CentOS 7 操作系统的虚拟机,硬盘大小为 40GiB,分为 1GiB 的 /boot(启动)分区、4GiB 的 swap(交换)分区和 35GiB 的 /(根&…

【解决去除springboot-内嵌tomcat的异常信息显示】去掉版本号和异常信息

调用这个,能复现tomcat的报错 http://localhost:8182/defaultroot/DownloadServlet?modeType2&pathhtml&FileName…\login.jsp&name123&fiewviewdownload2&cdinline&downloadAll2 springboot项目如何隐藏? springboot内嵌了to…

2024年Q1季度冰箱行业线上市场销售数据分析

Q1季度冰箱线上市场表现不如预期。 根据鲸参谋数据显示,2024年1月至3月线上电商平台(京东天猫淘宝)冰箱累计销量约410万件,环比下降11%,同比下降21%;累计销售额约98亿元,环比下降31%&#xff0…

好用的 with as

简介 with as 相当于视图,是子查询的另一种写法,原理是将建立一个临时表。在做分析时如果需要多次使用到某些中间表可以使用该方法,格式如下: with SQL_1 as (SELECT ***),SQL_2 as (SELECT ***) select * from XXX where XXX a…

spring-数据处理及跳转

结果跳转方式 ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前缀} viewName {视图解析器后缀} <!-- 视图解析器 --> <bean class"org.springframework.web.servlet.view.InternalResourceViewRes…

C++多重继承解决方法

eg1&#xff1a;解决方法&#xff1a;添加作用域标识符&#xff0c;消除成员限定的二义性 #include <iostream> #include<iostream> #include<vector> using namespace std; class A { public: void f() { cout << "A::f()&quo…

Golang:GORM使用First查询日志中出现大量record not found

感觉是作者故意留下的坑吧&#xff0c;用了很多编程语言的orm实现&#xff0c;第一次发现这个问题&#xff0c;好在作者已经解决了 通过配置日志参数IgnoreRecordNotFoundErrortrue实现忽略数据不存在的日志 完整配置示例 newLogger : logger.New(log.New(os.Stdout, "…

vue页面跳转后,再次返回原页面,不清空查询条件

需求说明 通过查询条件查询到对应的结果&#xff08;页面A&#xff09;&#xff0c;点击某一条列表数据&#xff0c;跳转到对应的详情页面&#xff08;页面B&#xff09;&#xff0c;点击返回按钮&#xff0c;再次返回页面A&#xff0c;之前的页面A查询条件和页面需要保持原始…

python中socket详解使用教程(结尾有案列)

socket 是 Python 中用于网络通信的一个标准库。它提供了创建网络套接字并进行网络通信的接口。下面我会详细解释 Python 中 socket 的基本概念和使用方法。 简单列程&#xff0c;在文章后面&#xff0c;可以自行翻阅 基本概念 套接字&#xff08;Socket&#xff09;&#xf…

Vue源码解读学习

Vue源码 观察者模式 & 发布订阅 观察者模式&#xff1a;中心一对多 系统单点间的灵活和拓展&#xff08;广播的方式&#xff09; 发布订阅&#xff1a;将注册列表遍历发布给订阅者 initInject initState initProvide他们挂载顺序为什么这样设计&#xff1f; initstate…

大数据运维应用场景面试题汇总及参考答案(持续更新)

描述大数据环境下的数据备份和恢复策略。 在大数据环境下,数据备份和恢复策略是确保数据安全和业务连续性的关键措施。首先,备份策略需要根据数据的重要性、更新频率和业务需求来设计。对于关键数据,可能需要实施实时或近实时的备份,而对于不太重要的数据,则可以采用定期备…