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有值,但是該圖片不存在的情況