(转)CSS结合伪类实现icon

news2025/1/12 22:04:17

老规矩,还是先说说业务场景:有一个图片列表,可以添加、删除和更改,其中呢删除时设计给的设计稿时悬浮(hover)在图片上时显示删除的图标,所以就有了这个用before实现icon的场景
进入正文,首先我们有一张图片(这里我就用了一个随机200x200px的api):

<img src="https://source.unsplash.com/200x200" />

然后我们再到阿里巴巴矢量图标库找到一张删除的图标(我这里找了一个上传到了一个免费的图床上),接着我们用伪类把图标显示出来,值得注意的是由于img标签被认定为没有文本内容的标签,所以在给img添加伪类是无效的,所以我们需要在img外层添加一个容器,那么代码就变成下面这样了:

<div class="image-wrapper">
  <img src="https://source.unsplash.com/200x200" />
</div>

让我们加上伪类部分的内容:

.image-wrapper {
  position: relative;
  width: 200px;
  height: 200px;
}

.image-wrapper::before {
  content: "";
  width: 100%;
  height: 30%;
  position: absolute;
  display: block;
  bottom: 0;
  /* 图片来自阿里巴巴矢量图标库,仅作为学习用途,如有侵权,请联系删除 */
  background: url("https://z3.ax1x.com/2021/08/25/heU6sg.png") no-repeat
    rgba(0, 0, 0, 0.6) center/1rem 1rem;
}

下面说一下需要注意的点:

  • 伪类必须要有content(conten可以为空字符串),没有content的伪类元素是不会显示的;
  • content为空字符串时,伪类如果不设置display: block或者inline-block是不会显示的,因为伪类本身时inline元素,设置width和height都是无效的;
  • absolute布局是相对于最近的一个非static布局的元素,如果没有就会一直向上找,直到body,所以我们需要将image-wrapper设置为position: relative,这样图标才会相对于图片定位;

最后结合上hover,加上一个过渡动画,改变一下指针的样式:

.image-wrapper {
  position: relative;
  width: 200px;
  height: 200px;
  cursor: pointer;
}

.image-wrapper::before {
  content: "";
  width: 100%;
  height: 30%;
  display: block;
  position: absolute;
  bottom: 0;
  /* 图片来自阿里巴巴矢量图标库,仅作为学习用途,如有侵权,请联系删除 */
  background: url("https://z3.ax1x.com/2021/08/25/heU6sg.png") no-repeat
    rgba(0, 0, 0, 0.6) center/1rem 1rem;
  opacity: 0;
  transition: opacity ease-in-out .2s;
}

.image-wrapper:hover::before {
  opacity: 1;
}

最终效果如下:

在线代码及效果:https://codepen.io/axiliya/pen/OJgPvgq?editors=1100




链接:https://www.jianshu.com/p/f787f1b9c62a

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

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

相关文章

嵌入式系统开发笔记108:IO的使用方法与面向对象程序设计

文章目录前言一、IO引脚的基本概念二、映射层的设置1、映射层是原理图的直译层2、IO引脚的设置在hal.h 和 hal.cpp文件中完成&#xff08;1&#xff09;在hal.h中进行类定义&#xff08;2&#xff09;在hal.cpp中完成引脚映射三、面向对象程序设计思想1、程序设计分类2、举例3、…

DevExpress之C#界面+MATLAB动态链接库联合编程

MATLAB导出动态链接库 在MATLAB命令行中输入:deploytool,打开如下界面,选择Library Compiler 对于C#,选择.NET Assembly,点击右侧的“+”加号,添加要导出的函数 可添加多个函数 下面的类名中输入即为导出后类的名称 点击设置按钮,输入参数-C,参数的具体含义如下 …

简化MRO工业品供采交易路径,S2B2B商城助力企业构建业务一体化管理优势

在政策拉动、市场需求驱动及数字技术进步等多重力量共同作用下&#xff0c;近5年来&#xff0c;我国工业品B2B市场规模保持上升的态势。尽管2022年受疫情反复影响&#xff0c;但中国经济向好的局面并未改变&#xff0c;中国数字化经济依然会加快工业品B2B市场的发展&#xff0c…

绿色债券数据集2016-2021(含交易代码、债券简称、发行规模期限等多指标数据)

1、数据来源&#xff1a;wind 2、时间跨度&#xff1a;2016.01-2021.11年 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 部分指标如下&#xff1a; 交易代码 债券简称 发行起始日 缴款日 计划发行规模(亿) 发行金额上…

第四章. Pandas进阶—时间序列

第四章. Pandas进阶 4.9 时间序列 1.重采样&#xff08;resample&#xff09; 在Pandas中&#xff0c;对时间序列频率的调整称为重采样&#xff0c;即时间序列从一个频率转换到另一个频率的过程&#xff0c;由周统计变成月统计 1).语法&#xff1a; 4.8章 第4点 已介绍过&…

5G无线技术基础自学系列 | MIMO功能

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线通信的迅速发展对系统的容量和频谱…

天启星座(Tianqi)介绍

天启星座&#xff08;Tianqi&#xff09;由38颗卫星组网而成&#xff0c;提供全球短数据采集。致力于为全球物联网相关行业用户提供覆盖全球、准实时的物联网卫星数据服务&#xff0c;真正实现空中、海洋和地面的万物互联&#xff0c;构建天地一体化的卫星物联网生态系统&#…

stm32 笔记 UART读取及HAL库应用

基本流程图 由此图可知&#xff1a; 采用HAL库&#xff0c;中断方式接收串口&#xff0c;只有当RxXferCount 0 时&#xff0c;也就是调用这个函数&#xff0c;接收指定量的数据大小完成时&#xff0c;才会调用回调函数HAL_UART_RxCpltCallback()。 而且&#xff0c;RxXferCou…

技术资料:STM32F746NGH7,STM32L471ZGT6 IC MCU+FPU

描述&#xff1a;STM32F7 32 位 MCUFPU 基于高性能的 ARMCortex-M7 32 位 RISC 内核&#xff0c;工作频率高达 216MHz。Cortex-M7 内核具有单浮点单元(SFPU)精度&#xff0c;支持所有 ARM 单精度数据处理指令与数据类型。同时执行全套 DSP 指令和存储保护单元&#xff08;MPU&a…

ThreadLocal源码解析 2.ThreadLocalMap内核

ThreadLocal源码解析—ThreadLocalMap内核 简介 内部类 ThreadLocalMap 才是 ThreadLocal 的真正核心。 ThreadLocalMap 与 HashMap不一样&#xff0c;HashMap 中的数据结构有数组&#xff0c;链表还有红黑树&#xff1b;而 ThreadLocalMap 中的数据结构只有数组。HashMap 处…

反转链表与拓展【灵神基础精讲】

来源0x3f&#xff1a;https://space.bilibili.com/206214 文章目录反转链表[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[92. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[25. K 个一组翻转链表](https://leetcode.cn/proble…

[附源码]Python计算机毕业设计Django仓储综合管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

windows改linux

使用旧的windows电脑改成linux机器&#xff0c;不使用双系统&#xff0c;直接格式化 本次需要两个U盘或者两台电脑。 制作WINPE启动盘 使用U深度制作启动盘&#xff0c;制作完成后进入PE系统&#xff0c;然后使用diskGenius删除所有电脑的分区进行快速分区&#xff0c;格式选…

R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据...

原文链接&#xff1a;http://tecdat.cn/?p24152什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。• PCR是处理许多 x 变量的回归技术• 给定 Y 和 X 数据&#xff1a;• 在 X 矩阵上进行 PCA– 定…

力扣(LeetCode)116. 填充每个节点的下一个右侧节点指针(C++)

模拟 这题可以直接操作根节点&#xff0c;我们保存根结点&#xff0c;用作最终返回值。 填充每个结点的 nextnextnext 指针&#xff0c;其实是树的层序遍历。由于 nextnextnext 指针的存在&#xff0c;我们可以做到 O(1)O(1)O(1) 的空间复杂度。 算法: 从根结点出发&#xf…

自动驾驶专题介绍 ———— 动力传动系统

文章目录动力传动系统传统动力传动系统混合动力传动系统串联型并联型串并联型纯电动传动系统电机中央驱动电动轮驱动动力传动系统 汽车动力传动系统是位于发动机和驱动车轮之间的动力传动装置&#xff0c;其基本功用是将发动机发出的动力传输给驱动车轮&#xff0c;以保障汽车在…

JavaWeb简单实例——jQuery

简单介绍&#xff1a; 在之后的学习中&#xff0c;我们会接触到Ajax异步请求&#xff0c;这个异步请求需要我们在网页端使用JS来发送&#xff0c;而使用原生的Ajax请求比较复杂&#xff0c;所以我们就借用一个前端框架封装后的Ajax请求&#xff0c;这样可以简化我们的代码编写…

大坝安全动态监管预警系统 大坝安全监测平台 遥测终端机 水位雨量监测站

平升电子大坝安全动态监管预警系统/大坝安全监测平台/大坝安全监测系统根据SL551-2012《土石坝安全监测技术规范》的整编要求&#xff0c;设置了变形监测、渗流监测、环境量监测。借助该系统可及时了解大坝的工作性态和水库可能存在的事故隐患&#xff0c;为大坝安全管理与水库…

Linux 安装 ElasticSearch

注意事项&#xff1a; 内存不能太小&#xff0c;否则会启动失败JDK版本需要对应&#xff0c;es7 需要 Java 11不能以 root 用户启动 平台确认 大家可以自行安装虚拟机部署&#xff0c;有条件可以在服务器操作。 安装Java 安装 Elasticsearch 之前&#xff0c;你需要先安装一个较…

04. 组合总和

1.题目链接&#xff1a; 39. 组合总和 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给定一个“无重复数组candidates”和一个“目标和target” &#xff0c;要求在给定 数组candidates 的范围内&#xff0c;输出和等于 目标和target 的组合&#xff0c;此组合元素可重复…