解決img標簽間距問題


  關於img標簽間距問題:多個img之間有間距,包含img標簽的div之間有間距。

代碼如下:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>test</title>
 6     <link rel="stylesheet" type="text/css" href="css/test.css">
 7 </head>
 8 <body>
 9     <div>
10         <img src="images/1.png">
11         <img src="images/2.png">
12         <img src="images/3.png">
13     </div>
14     <div>
15         <img src="images/4.png">
16         <img src="images/5.png">
17         <img src="images/6.png">
18     </div>
19     <div>
20         <img src="images/7.png">
21         <img src="images/8.png">
22         <img src="images/9.png">
23     </div>
24 </body>
25 </html>

谷歌瀏覽器效果:

火狐瀏覽器效果:

  我們發現,不同div之間,上下有空白間隙,不同img之間,左右有間隙,而且,不同瀏覽器的左右間隙大小不同。

  經學習,我的解決辦法是,同一個div下不同img標簽之間不要留空格,並給img的父元素div標簽加上屬性font-size:0。這樣一來,所有的圖片就能夠無縫拼接了。

最終效果圖:

  下面來說一下為什么這樣做可以解決問題。

  塊級元素包含內聯元素如圖片文字等時,內聯元素默認是和父級元素的baseline(基線)對齊的,而baseline又和父級元素底邊有一定的距離(這個距離和font有關,不一定是5px),所以以上代碼的效果中不同div之間有間隙,這是因為圖片與父元素的底邊有距離。說到baseline呢,其實它是vertical-align屬性的默認值,vertical-align屬性是設置元素的垂直排列的,用來定義行內元素的基線相對於該元素所在行的基線的垂直對齊,除了baseline對齊方式之外,還可以是sub | super | top | text-top | middle | bottom | text-bottom |inherit(任何的版本的Internet Explorer (包括 IE8)都不支持屬性值 "inherit")。

  知道了問題產生的原因,就好對症下葯解決問題了,其實就是要消除baseline對齊方式產生的距離。

  所以方法一,很容易想到,把對齊方式改一下不就好了,於是設置img的vertical-align屬性為bottom;

  方法二就是上文說的給父元素加上font-size:0的屬性,既然這個距離和font有關,那么把字體大小設為0,總該沒有距離了吧;

  方法三可由方法二想到,既然為0可以,那把行高設的很小可不可以呢?經試驗發現,本例圖片大小為200px,設line-height不大於12就能夠消除間隙了,鑒於這個距離一般是5px,所以可以把line-height設為5px左右;

  另外一個間隙是多個img標簽的左右間隙,是由於img標簽是行內元素,而事實是當行內元素之間有“回車”、“tab”、“空格”時就會出現間隙。

  所以方法就是上文提到的,去掉img標簽之間所有的空格,如果又不想把所有連續的行內元素寫到一行,可以多行注釋,把空格回車什么的注釋掉,就像下圖這樣;當連續的行內元素不是img時,也可以通過設置父元素的font-size為0來消除左右間隙。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM