一想到替换图片,我们大部分人可能都会想到用background-image或用两个img元素控制显示隐藏来实现,其实还可以利用css的content属性来替换img中的内容来实现。

Part 1

1.首先我们使用content属性来生成一张图片,先写两个img标签

    <img src="img/qaq.jpg"><img>

2.第一个img用src引入一张图片,第二个img是个空标签,注意这里不要写src属性,就是一个单纯的< img >!然后写css

img {width: 200px;height: 200px;
}
img:not([src]) {content: url("img/qq.jpg");
}

3.用谷歌浏览器运行,可以看到这两个img标签的显示效果一模一样!


左边为img标签直接引入的图片,第二个是用content属性生成的图片。

Part 2

1.如果我们把上面的代码稍微修改一下,会发生怎样的变化呢

<img src="img/qaq.jpg">
<img>img {content: url("img/qq.jpg");
}

2.如下图所示,可以发现content属性把原来图片中的内容替换掉了!

Part 3

利用这个特点,我们可以使用hover图片让它变成另外一张图片

<img src="img/qaq.jpg">img:hover {content: url("img/qq.jpg");
}

注意⚠️:content改变的仅仅是视觉展现效果,当我们右键保存或打开这张hover之后的图片时,所保存的和看到的还是原来src对应的图片!

Part 4

content属性不仅可以替换img标签的图片,还可以替换普通标签的内容

举个例子,看如下代码:

<h1>陈仙生的头像</h1>h1 {content: url("img/qq.jpg");width: 200px;
}

运行结果就是一张图片,没有文字!


需要注意的是,这里的文字只是视觉上被替换了,屏幕阅读设备读取到的还是文字内容,SEO搜索引擎抓取的也还是原文字信息,所以对页面的可访问性没有任何影响。

此外,我们还可以配合before或after伪类给空标签生成文本,如下:

<h1></h1>h1:before {content: '我是content生成的内容';width: 200px;
}


这里需要注意的是用content生成的文本内容是不可以选中和复制的!把鼠标放到上面的文字上面你就会发现无法选中!

Part 5

我觉得content属性用的最常见的地方之一是清除浮动带来的影响:

.clear_fix:after {content: '';display: block;clear: both;
}

还有就是配合 @font-face 字体图标的实现:

.icon-xxxx:after {content: '\xxxx';
}

CSS小技巧之替换图片(content)相关推荐

  1. css 自动换行_前端必备!20个CSS小技巧

    在日常学习和工作中,你是否经常觉得时间不够用?为了帮助你提高效率,今天,就为大家分享一些CSS小技巧,如果你感觉有用,也可以收藏与分享给你的小伙伴们~ 1. 文字水平居中 将一段文字置于容器的水平中点 ...

  2. 日常开发CSS小技巧整理

    日常开发CSS小技巧整理 1.解决inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移 .wrap {display: inline-block;overflow ...

  3. 10 个不错的 CSS 小技巧

    本文为译文,采用意译. CSS 大约有两百个属性.很多属性都是相互关联的,理清楚每一个属性细节是不可能的.所以,本文分享一些有用的 CSS 小技巧,方便开发者和设计师参考. 1. 打字效果 Typin ...

  4. 12个你可能不知道的CSS小技巧

    本文整理出12个开发中你有可能没有用到过的CSS小技巧,一起来看看吧~ 1. 自定义光标(cursor) 首先来看一下CSS的内置光标样式.平时开发中用到的基本上就是default.pointer.n ...

  5. css文字换行时对不齐,css小技巧 - 换行对齐

    假如需要你实现换行对齐,你可能会想到ul标签和li标签自带这种功能 确实在使用li标签自带的项目符号的时候可以直接使用,但是有时可能会有不一致时 就需要我们动手写两行代码来实现一下,比如这种效果: 项 ...

  6. linux 文件转换ascii,linux 小技巧(查找替换文件中的ascii编码字符)

    这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理.最常用的就是替换文件中的某些字符.常见字符替换还是很容易完成.但是有些不可见字符以及ascii编码字符等等都无法直接 ...

  7. 前端开发者应该知道的 CSS 小技巧

    一些小技巧让你的CSS技术更专业 使用:not()去除导航上不需要的边框 为body添加行高 垂直居中任何元素 逗号分离的列表 使用负nth-child选择元素 使用SVG图标 文本显示优化 在纯CS ...

  8. CSS小技巧---线性渐变linear-gradient/径向渐变radial-gradient

    文章目录 前言 普通渐变 条纹 条纹重复 虚线 斜向条纹 三角形 进度条动画 progress 网格 圆点阵列 波点图案 前言 本文主要介绍linear-gradient的使用方法,既有普通的用法,也 ...

  9. CSS小技巧之两行文字两端对齐

    假如一个页面需要填写姓名和联系方式,为了使样式美观,通常需要文字两端对齐,即"姓"和"联"对齐,"名"和"式"对齐,通常 ...

最新文章

  1. DatagridView内容自动换行和换行符换行
  2. 如何跟踪log4j漏洞原理及发现绕WAF的tips
  3. 想知道你在网上的发言,被怎么分析么?
  4. Python Django 惰性查询(懒加载)
  5. python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)
  6. “许巍日”新歌提前曝光 《爱如少年》10/15温暖登场!
  7. 一维的Haar小波变换
  8. KAFKA介绍(分布式架构)
  9. Seata多微服务互相调用_全局分布式事物使用案例_Storage-Module 仓储微服务说明---微服务升级_SpringCloud Alibaba工作笔记0063
  10. PAT B1035 插入与归并 (25 分)
  11. 3.React学习笔记(完)----nodejs命令备份+跨域问题处理
  12. java开源规则引擎比较_几款常用规则引擎的简单对比及演示
  13. 中兴B860AV2.1-T非高安 /高安版本-通用线刷固件及教程
  14. C语言中文分号,问什么C程序里总是提示缺少分号;,而明明有分号?
  15. c语言程序算一元二次方程,以实例跟我学C语言:如何求解一元二次方程的根
  16. GMM Kmeans代码示例
  17. mac字体渲染精细处理
  18. 分布式架构设计中的CAP原理
  19. 达内学习的java类库01
  20. ubuntu源换成清华源_Ubuntu替换国内源(清华源)

热门文章

  1. Windows下如何硬盘安装Ubuntu
  2. 按例学construct2_滚动背景制作 (一)
  3. excel根据不同的条件模糊匹配,替换,做计算
  4. 阿里云GPU计算型gn6i服务器配置性能好不好用?
  5. 数据结构之树之不同种类篇
  6. 中兴网络设备交换机路由器查看BGP状态检查命令方法
  7. 使用idb操作IndexedDB
  8. 计算机网络(七):网络安全
  9. 转载:解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw
  10. JSON与properties文件的相互转换