2014-07-10 68 views
0

我不知道爲什麼李標籤1px的身高超過了一個標記代碼更高如下 小提琴http://jsfiddle.net/9Wy8z/爲什麼李比一個子標籤

#nav { 
width: 100%; 
background-color: #5A9AFF; 
} 

#nav > #nav_container > ul{ 
    margin: 0; 
    padding: 0; 
    list-style: none; 
} 

#nav > #nav_container > ul > li { 
    display: inline-block; 
    padding: 10px 0; 
} 

#nav > #nav_container > ul > li > a { 
    padding: 10px; 
    text-decoration: none; 
    color: #1b1b1b; 
} 

#nav > #nav_container > ul > li > a:hover { 
    background-color: #e0e0e0; 
} 


<div id="nav"> 
     <div id="nav_container"> 
      <ul> 
       <li><a href="#">Home</a></li> 
       <li><a href="#">Home</a></li> 
       <li><a href="#">Home</a></li> 
       <li><a href="#">Home</a></li> 
      </ul> 
     </div> 
    </div> 

這導致了一個標籤爲38px和李39px,我不確定這是爲什麼?

+0

頭腦創造的jsfiddle? – deW1

回答

1

這是因爲a元素默認爲inline。這就是爲什麼你必須添加填充到li元素; li正在取其內容的高度,即inline(它不包括填充)。這種方法的問題是li元素也有一些固有的填充,它不等於你給a元素的填充。

a標籤設置爲display:block;以及除去li填充將由block而不是inline顯示a元素解決了這個問題,並導致li只取a元素的大小(而不是更多)減去你試圖補充的任何強制填充。

JSFiddle

#nav > #nav_container > ul > li { 
    display: inline-block; 
} 

#nav > #nav_container > ul > li > a { 
    padding: 10px; 
    text-decoration: none; 
    color: #1b1b1b; 
    display: block; 
} 
+0

謝謝你,這已經讓我厭煩了一下 – user3787751

+0

記得在你可以的時候接受標記;) –

+0

號李沒有固有的填充。你可以很容易地檢查這個在螢火蟲等。無論如何,如果它確實有填充,將一個元素從內聯更改爲塊不會刪除填充。 1px的差異在於文本的高度(上升高度= 16px +下降= 3px = 19px)與行高(Em height = 20px的1.25倍) – Alohci

相關問題