1. `<img/>`标签边框问题
当img没有src属性或者图片资源不存在时,img会出现边框,但是通过盒模型观察后发现,盒模型上根本就没有标识出border,所以所谓的边框根本就不是盒模型的边框,而是规范中规定当img不能正常加载时,浏览器需要提供一种显示效果来表明这个位置其实是一个图片元素,只是图片没有正常加载。
所以,当图片不能加载出来的时候,我觉得这个效果是合理的;如果非要改变的话,我能想到的是用js,监听img的onerror事件,当图片加载失败的时候,做一些其他操作,如添加默认图片,或者在失败的时候把图片的透明度设置为0。
,这个边框特别丑,想去掉时border:none或者border:0都是不好使的(亲测)。img默认为width:16px;height:16px;的一个方框。
解决办法有以下几种,适用场景自行匹配:
1. 外层包裹一层,然后给img设置如下css
```
img{
max-width:100%;
max-height:100%;
}
```
优点:简单
缺点:容器占位是问题,当图片小于容器时,图片不能占满容器
2. 图片出错时使用一个默认的图片来代替(占位)
```
<img src="error.jpg" onerror="whenError(this)">
<script>
function whenError(a){
a.onerror = null;
a.src = 'http://avatar.csdn.net/1/E/E/1_qq_27080247.jpg';
console.log('图片出错的时候调用默认的图片');
}
</script>
```
优点:解决了占位的问题
缺点:麻烦,需要写js;需要加载一张空白图片
3. 图片出错时将图片透明度设置为0
```
<img src="error.jpg" onerror="whenError(this)">
<script>
function whenError(a){
a.onerror = null;
a.style.opacity = 0;
}
</script>
```
优点:解决了占位的问题,不需要加载空白图片,相对来说比方案2好
缺点:麻烦,需要写js
4. 使用css
```
img[src=""],img:not([src]){
opacity:0;
}
```
优点:简单,使用css就可以搞定,不需要js
缺点:解决不了src有值,但是该图片不存在的情况