网站首页 > 技术文章 正文
问题的引出是这样的,在一个项目中有大量的页面主体是table做数据展示,所以就封装了一个table的组件,提供动态渲染的方案。有个问题是数据类型中有图片,对于图片的加载失败我们需要做容错。一般我们的思路都是对img绑定error事件,替换该图片为一个默认的图片。但是error事件是不会冒泡的,我们渲染是动态的,我们不能delegate事件到body上。如果将处理写在js里,那么每次渲染的时候都要去给图片绑定error事件,写在模板里拼接(内联事件)又会很麻烦(我采取的方案是用户编写基本th,td模板,所以需要使用者拼接,思考过走配置的方法初始化table这个问题可以忽略。。。)
博主也是个纠结的人,有没有更好的解决方案呢?下面介绍一个css黑魔法,用伪元素对图片加载失败做处理。
什么是伪元素?科普链接:
http://www.w3school.com.cn/css/css_pseudo_elements.asp
css知识扎实的人肯定会有个疑问,img是可替换元素(科普:
http://www.cnblogs.com/wkylin/archive/2011/05/12/2044328.html),是不能应用伪元素的啊?!
对,没错,是不能用,至于黑魔法嘛~img不能用,但是加载失败了能不能用呢?
哈哈哈,我们在chrome下测试看下:
有的!!!那我们后面可做的事情就思路了啊,哈哈哈
后面引入我写的一个demo
正常的图片:
容错后的:
至于为什么图片加载失败后,会可以使用伪元素,我的理解大概是这样的。当加载成功的时候img是没有任何子节点的,befor和after是在元素的内容前后插入内容。但当图片加载失败之后,是不是把替代文本作为字内容了呢?后面我会用一个伪元素标签是试验?你们猜到是哪个了么?
兼容性:
在ios的Safari和uc上不能实现,so 这个方案还是要考虑下的
╮(╯▽╰)╭,博主也是纠结啊,如果有更好的方案可以和我联系
额,不对,跑题了,我们今天是介绍这个伪元素的黑魔法的,哈哈哈~
猜你喜欢
- 2025-03-24 什么是伪类和伪元素?两者有什么区别?单一冒号和双冒号有何不同
- 04-27JavaScript注释:单行注释和多行注释详解
- 04-27贼好用的 Java 工具类库
- 04-27一文搞懂,WAF阻止恶意攻击的8种方法
- 04-27详细教你微信公众号正文页SVG交互开发
- 04-27Cookie 和 Session 到底有什么区别?
- 04-27教你一招,给你的店铺,网站,博客等添加“一键分享”功能
- 04-27按DeepSeek AI的规划,自学开发小程序第7天
- 04-27《JAVASCRIPT高级程序设计》第二章
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)