当前位置: 首页 > news >正文

img标签添加::before ::after 伪元素无效,伪元素增加:hover伪类无效

1 问题

  • img标签添加::before ::after 伪元素无效
  • 伪元素增加:hover伪类无效

2 解决

  • 只能在img前后增加dom元素
  • 可以这样写:hover::before{} :hover::after{}

3 分析

3.1 定义

::before 创建一个伪元素,其将成为匹配选中的元素的第一个子元素。常通过 content 属性来为一个元素添加修饰性的内容。此元素默认是行级的。
::after 会创建一个伪元素,作为所选元素的最后一个子元素。它通常用于为具有 content 属性的元素添加修饰内容。默认情况下,它是行向布局的。

备注: ::before 和 ::after 生成的伪元素是行级盒子,就好像它们是应用它们的元素或“源元素”的直接子元素,因此不能应用于替换元素(如 <img>),它们的内容在不受当前文档样式的影响的情况下被替换。

3.2 可替换元素

在 CSS 中,可替换元素(replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。

简单来说,它们的内容不受当前文档的样式的影响。CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容。某些可替换元素,例如 <iframe> 元素,可能具有自己的样式表,但它们不会继承父文档的样式。

CSS 能对可替换元素产生的唯一影响在于,部分属性支持控制元素内容在其框中的位置或定位方式。

3.1.1 典型可替换元素
  • <iframe>
  • <video>
  • <embed>
  • <img>
3.1.2 特定情况下被作为可替换元素处理
  • <option>
  • <audio>
  • <canvas>
  • <object>

HTML 规范也说了 <input> 元素可替换,因为 “image” 类型的 <input> 元素就像 <img> 一样被替换。但是其他形式的控制元素,包括其他类型的 <input> 元素,被明确地列为非可替换元素(non-replaced element)。该规范用术语小挂件(Widget)来描述它们默认的限定平台的渲染行为。
用 CSS content 属性插入的对象是匿名的可替换元素。它们并不存在于 HTML 标记中,因此是“匿名的”。

详见MDN

4 探索其他伪元素在img上的使用

::selection CSS 伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)

只有以下css属性,可以在::selection设置

  • color
  • background-color
  • cursor
  • caret-color
  • outline and its longhands
  • text-decoration and its associated properties
  • text-emphasis-color
  • text-shadow
img{&::selection {background-color: orange;}
}

使用::selection之前

在这里插入图片描述

使用::selection之后

在这里插入图片描述

5 其他伪元素

5.1 ::first-letter

选中某块级元素第一行的第一个字母,并且文字所处的行之前没有其他内容

p{&::first-letter {color: orange;font-size:24px}
}

在这里插入图片描述

5.2 ::first-line

在某块级元素的第一行应用样式。第一行的长度取决于很多因素,包括元素宽度,文档宽度和文本的文字大小。

::first-line 伪元素只能在块容器中,所以,::first-line伪元素只能在一个 display 值为 block, inline-block, table-cell 或者 table-caption中有用.。在其他的类型中,::first-line 是不起作用的。

p{&::first-line {color: orange;font-size:24px}
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java项目之飘香水果购物网站(springboot+vue+mysql)
  • 树莓派4B 学习笔记1:TF卡系统盘烧录_初次启动_远程端连接配置
  • 【高阶数据结构(七)】B+树, 索引原理讲解
  • 多态(C++)
  • Ubuntu22.04之扩展并挂载4T硬盘(二百三十三)
  • 【typescript】omit和pick的好处,以及区别和用法
  • 怎么做好客户信息管理?
  • linux日常运维2
  • web前端三大主流框架
  • PHP preg_replace正则表达式涉及汉字乱码
  • c++——模板初始识
  • mysql内存和磁盘的关系
  • 数学建模——线性回归模型
  • Apache Doris 基础 -- 数据表设计(数据模型)
  • 充电器快充协议与PW6606快充电压诱骗芯片
  • 5、React组件事件详解
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Create React App 使用
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • java多线程
  • JDK 6和JDK 7中的substring()方法
  • oldjun 检测网站的经验
  • ubuntu 下nginx安装 并支持https协议
  • win10下安装mysql5.7
  • 从setTimeout-setInterval看JS线程
  • 复杂数据处理
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)56
  • 少走弯路,给Java 1~5 年程序员的建议
  • 树莓派 - 使用须知
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信小程序设置上一页数据
  • 系统认识JavaScript正则表达式
  • 用 Swift 编写面向协议的视图
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​secrets --- 生成管理密码的安全随机数​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #if 1...#endif
  • #每天一道面试题# 什么是MySQL的回表查询
  • #知识分享#笔记#学习方法
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (6)STL算法之转换
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (六)c52学习之旅-独立按键
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)setTimeout 和 setInterval 的区别