阅读目录

  • IMG元素你需要知道的两点知识
  • 实践
  • 兼容性

本片文章翻译自 Styling Broken Images 翻译过程中可能会在原意不变的基础上有些细微改动,望读者见谅

加载失败的图片是比较丑陋的,比如

但是我们可以让结果变得更美好。通过给元素设置CSS相关属性可以实现更美的呈现。

IMG元素你需要知道的两点知识

  1. 我们可以针对IMG元素设置排版相关的CSS样式(诸如font等属性)。一旦IMG的可替换文本(即alt属性)出现,则设置的CSS样式应用于这些文本;
  2. IMG元素属于可替换元素(可替换元素是指元素的外观和大小受外部源所影响,常见的可替换元素如IMG,OBJECT,INPUT,TEXTAREA等)。正由于可替换元素收外部源的影响,因此CSS中的伪元素::before、::after对它不起作用。但是,一旦图片加载失败,伪元素就可作用于图片之上

理解了上述两点,我们就可以用CSS实现一个特殊的功能:

当图片正常加载时无需处理,而当加载失败时让图片应用一些特殊的样式,以达到更好的用户体验效果。

实践

采用如下的实例代码:

<img src="http://nopic.jpg" alt="休要胡说"> 

添加CSS样式

一旦图片加载失败,我们需要向用户提供相关文案,这就用到了CSS的attr函数

示例代码:

img {font-family: 'STKaiti';font-weight: 300; line-height: 2; text-align: center; width: 100%; height: auto; display: block; position: relative; } img:before { content: "抱歉,图片加载失败 :("; display: block; margin-bottom: 10px; } img:after { content: "(url: " attr(src) ")"; display: block; font-size: 12px; }

替换alt文本

为了让加载失败的图片呈现更为美观,采用伪元素来进行绝对定位,更自由的控制表现。

img { /* Same as first example */ }img:after {content: "\f1c5" " " attr(alt); font-size: 16px; font-family: FontAwesome; color: rgb(100, 100, 100); display: flex; justify-content: center; align-items: center; position: absolute; z-index: 2; top: 0; left: 0; width: 100%; height: 100%; background-color: #ddd; }

添加额外的样式

利用伪元素可以添加更多的额外样式:

img {  /* Same as first example */min-height: 50px;
}img:before { content: " "; display: block; position: absolute; top: -10px; left: 0; height: calc(100% + 10px); width: 100%; background-color: rgb(230, 230, 230); border: 2px dotted rgb(200, 200, 200); border-radius: 5px; } img:after { content: "\f127" " Broken Image of " attr(alt); display: block; font-size: 16px; font-style: normal; font-family: FontAwesome; color: rgb(100, 100, 100); position: absolute; top: 5px; left: 0; width: 100%; text-align: center; }

正如第二节所说,如果图片正常加载,那么伪元素中设置的所有样式都不会被作用,因此这种方式作为一种backup,是非常有效的。

兼容性

不幸的是不是所有的浏览器都会这样处理应用在IMG元素上的伪元素。这是我整理的兼容性表格:

* alt文本自由在图片的宽度足够容纳下它时才会显示,如果图片没有宽度,alt文本压根不会显示

** 字体样式不会起作用

样式化加载失败的图片相关推荐

  1. linux系统css样式加载不出,Linux系统虚拟主机网站访问页面css样式文件加载失败或图片无法显示的分析解决...

    问题场景:客户使用Linux系统虚拟主机,网站程序上传之后访问发现页面排版有问题,css样式文件加载失败,部分图片显示不出来,以织梦CMS程序为例,如下图所所示: 问题原因: 1.Linux系统虚拟主 ...

  2. 美化加载失败的图片(Stying broken images)

    原文出处https://bitsofco.de/styling-broken-images/ 翻译:王浴昊 注明出处,本文可以转载. 加载失败的图片很丑陋. 事实上并不一定要如此.我们可以通过对< ...

  3. img标签图片加载失败显示图片

    img标签图片加载失败显示图片 onerror="οnerrοr=null;src='../../image/community/initialize_img.png'"

  4. htmlimg图片加载失败_img图片不存在显示默认图

    在项目中,我们使用img标签加载图片,有时候图片地址有可能失效,获取路径问题,导致图片加载失败,img标签就会显示alt内容.这时候用户体验不是很好,所以就需要显示一张默认图片. 第一种方式:使用jq ...

  5. vue本地项目配置图片加载失败_vue图片加载失败时用默认图片替换的方法

    vue图片加载失败时用默认图片替换的方法 前言 本文主要给大家介绍的关于vue实现图片加载失败时用默认图片替换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 原理 ...

  6. 图片加载失败替换图片解决方案

    图片加载失败在不同浏览器表现有差异,比如google可能会一片空白.img的宽高是0*0,ie会在图片位置会出现一个碎片图标,火狐会显示一个边框像这样: 一个页面如果很多这种好难看,一般会用默认图片替 ...

  7. element ui 图片加载失败_element图片懒加载的问题

    本来我这个人就很懒的,并不喜欢写说明博客之类,浪费时间浪费精力,学习的过程,遇到一些很小白的问题,百度搜索解决,然后在代码里注释下而已, 突然想到世界上是存在大多数像我这样的小白的,滴水之恩当涌泉相报 ...

  8. android图片资源加载失败,Android图片加载问题分析

    下图是一个客户端图片加载模块常见的处理流程. imagepipeline.png 本文以UniversalImageLoader为例分析了这一流程,然后分析了Fresco的优势和问题,最终推荐大家使用 ...

  9. img图片加载失败默认图片

    <img :src="item.goods_pic" οnerrοr="javascript:this.src='../static/images/default. ...

  10. img实现图片加载前默认图片,加载时替换真实图片,加载失败时替换加载失败图片

    文章目录 前言 一.加载前 二.加载成功 三.加载失败 总结 前言 开发过程中,我们希望图片在加载失败的时候会替换成加载失败的图片,同时为了更好的体验,加载前最好也要有一张占位图片,即实现加载前显示一 ...

最新文章

  1. 刚学习了linux的DHCP 配置.呵呵.自己上来总结下.
  2. frameset小结
  3. PetaPoco 快速上手
  4. linux命令之查看文件内容加上行号-nl
  5. Linux网络编程 | 多路复用I/O :select、poll、epoll、水平触发与边缘触发、惊群问题
  6. CXF整合Spring开发WebService
  7. java swing 帮助文档,在Java Swing应用程序中创建在线帮助-使用pdf用户文档
  8. 嵌入式系统——文件系统
  9. .NET现成程序给你用[四]
  10. 百度编辑器 UEditor 使用方法 及 如何设置固定高度且带滚动条及 如何设置修改传值的 name 属性
  11. Android Studio开发
  12. dnf修改服务器时间限制,DNF历史性革新,团本刷新时间改为周六,为黑鸦让路
  13. Springboot JPA日志输出打印SQL语句和传入的参数 高阶篇,java微服务架构视频下载
  14. Android 9(API级别28)特性总结
  15. bomb和mysql,Bmob
  16. 带你一步步破解亚马逊 淘宝 京东的反爬虫机制!
  17. K-Means聚类及调用sklearn库代码实现
  18. 基于数据结构和C语言实现公交管理系统(含文档和代码)数据结构课程设计
  19. Vue.js使用Echarts动态渲染多个图表
  20. 盛大陈天桥:当场训员工浪费粮食 辩论所向无敌

热门文章

  1. ASP.NET 3.5控件和组件开发技术之客户端回发/回调揭密
  2. 海量数据挖掘MMDS week4: 推荐系统之隐语义模型latent semantic analysis
  3. oracle的事物起始于,oracle 学习笔记(十) 事务控制语句
  4. pyqt5 显示更新进度条_python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能...
  5. 学生成绩互帮互助分组C语言,C语言实现—学生成绩管理系统(Linux下运行)
  6. Android 功能系列篇
  7. L1-001 Hello World (5 分)—团体程序设计天梯赛
  8. Android RadioButton(单选按钮)点击事件的两种方法
  9. mysql中explain使用
  10. 三周第二次课(4月3日)