第一個坑是不想背鍋的img標籤,明明是那時仍是菜鳥,今天依舊菜鳥的我本身,沒有逐字逐句認真看文檔(・。・)html
1. <img> 標籤建立的是被引用圖像的佔位空間。因此請務必爲img標籤設置width。這涉及到用戶體驗(嚴肅臉(..•˘_˘•..)),您老闆確定不想由於糟糕的網頁渲染性能而失去用戶。html5
特別是移動端,爲img設置一個em單位的寬度,圖片才能隨着用戶屏幕的尺寸彈性伸縮。chrome
1.1 昨天在PC端發現,同一個頁面,同一張圖,圖片有時候會出現寬度變形高度不變。 把設置的height取消掉就不會有這種bug出現。緣由不明,找不出是哪裏的樣式衝突。api
1.2 <img> 標籤建立的是被引用圖像的佔位空間。指定寬高尺寸可改善網站性能。一般狀況下,指定了img的寬度,高度也會隨之按比例縮放。瀏覽器
注意:若是提供了一個百分比形式的 width 值而忽略了 height,那麼無論是放大仍是縮小,瀏覽器都將保持圖像的寬高比例。這意味着圖像的高度與寬度之比將不會發生變化,圖像也就不會發生扭曲。dom
1.3 今天的一個移動端頁面,在chrome瀏覽器手機模式預覽下,有兩張圖由於只指定寬度,沒有指定height而產生變形。調試了一番,終於發現: 父容器佈局的樣式 display: flex, align-items 屬性。由於這個屬性的默認值致使圖片拉伸到容器高度:ide
stretch
(默認值):若是項目未設置高度或設爲auto,將佔滿整個容器的高度。而在火狐的手機模式下預覽,就沒有這個問題。無論怎麼說,既然有這個潛在風險,那就再指定下彈性高度,或者設置 align-items 屬性爲center。佈局
爲何要用display:flex 呢。水平居中的三個辦法,justify-content: center; text-align: center , margin: 0 auto; 區別和用法在哪裏呢。什麼狀況下會無效呢。性能
1.4 翻了MDN上的 img api 英文原文,沒有看到推薦只指定寬度的說法。點擊這個連接查看:MDN上的HTML element reference: imgflex
1.5 繼續翻w3上的英文教程:the-img-element。也並未推薦只寫寬度。
The IDL attributes
width
andheight
must return the rendered width and height of the image, in CSS pixels, if the image is being rendered, and is being rendered to a visual medium; or else the intrinsic width and height of the image, in CSS pixels, if the image is available but not being rendered to a visual medium; or else 0, if the image is not available. [CSS]
2. <a>包含的<img> 設置max-width:100%無效.
先來看下max-width可能的值%概念:
max-width:% 定義基於包含它的塊級對象的百分比最大寬度。
100%則是若是指定元素的寬度不超過父元素的寬度,則大小不變,若是超過了父元素的寬度,則將寬度收縮爲父元素的寬度。
max-width
overrideswidth
, butmin-width
overridesmax-width
.
因此,這個時候要給<a>加個 - "display:block;"- 等等這些樣式:能讓<a>從行內搖身一變,變爲塊狀元素。
ps:
img { max-width: 100%;}
這行代碼對於大多數嵌入網頁的視頻也有效,因此能夠寫成:
img, object { max-width: 100%;}
3. <img> 在不一樣瀏覽器下的表現差別。
這種差別,即使是像下面同樣初始化設置樣式也於事無補。有興趣能夠試試看。不得不說,chrome和FF這些瀏覽器,有時候有點貼心得過頭。
img{ margin: 0; padding: 0; }
解決方案有N種:
①. 簡單粗暴的:把<img>間的空格註釋掉,像這樣:
<div class='img-dad'> <img src="1.jpg" alt=""><!-- --><img src="2.jpg" alt=""><!-- --><img src="3.jpg" alt=""><!-- --><img src="4.jpg"> </div>
這種辦法能解決<img>左右邊距的問題,可是上下邊距還在呀,並且那麼多註釋標籤,看着也不美觀對吧~
②. 依舊給<img>設置樣式:
img{
vertical-align: top;
}
這個方法,和第一種同樣,也只能去掉上下邊距。
③. 給<img>他爸元素加個樣式:
辦法A: .img-dad{
font-size: 0;
}
啊,perfect!上下左右邊距都不見了,咱們能夠想要多少邊距就要多少邊距了。
④. 給<img>設置樣式:
方法A:img{
float: left;
}
方法B:img{
display: block;/table/box/list-item (等等這些可讓它變成塊的東西)
}
根據實際須要結合使用。
4. <img>的border-radius,在安卓機出現圓角變形,像是禿了一部分頭頂同樣。解決辦法:img外嵌套一層div,設定border-radius