• (转)CSS结合伪类实现icon


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

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

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

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

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

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

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

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

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

    1. .image-wrapper {
    2. position: relative;
    3. width: 200px;
    4. height: 200px;
    5. cursor: pointer;
    6. }
    7. .image-wrapper::before {
    8. content: "";
    9. width: 100%;
    10. height: 30%;
    11. display: block;
    12. position: absolute;
    13. bottom: 0;
    14. /* 图片来自阿里巴巴矢量图标库,仅作为学习用途,如有侵权,请联系删除 */
    15. background: url("https://z3.ax1x.com/2021/08/25/heU6sg.png") no-repeat
    16. rgba(0, 0, 0, 0.6) center/1rem 1rem;
    17. opacity: 0;
    18. transition: opacity ease-in-out .2s;
    19. }
    20. .image-wrapper:hover::before {
    21. opacity: 1;
    22. }

    最终效果如下:

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




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

  • 相关阅读:
    Java之运算符(4)
    黑*头条_第7章_kafka实战应用&文章自动审核
    HMS Core基于地理位置请求广告,流量变现快人一步
    基于JAVA师生交流平台计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    通过数据可观测性进行价值工程和数据成本优化
    dgl安装教程
    【JAVA版本】websocket获取B站直播弹幕——基于直播开放平台
    【Flink】Flink on Yarn 翻译 使用 hdfs jar yarn.provided.lib.dirs
    Visual_Studio_2019_Enterprise 下载地址
    操作系统:计算机系统概述
  • 原文地址:https://blog.csdn.net/caseywei/article/details/128095089