1. 程式人生 > >[前端]如何寫一個水平導航欄?(浮動、inline-block+消除間距)

[前端]如何寫一個水平導航欄?(浮動、inline-block+消除間距)

lock 解決 包含 mov html標簽 http 全部 lis ont

在看W3school時,看到一個很好的例子,如何制作一個水平的導航欄?沒有任何要求,只需要達到下面的效果:

技術分享圖片

我認為這個例子包含了很多css布局需要了解的知識,因此單獨寫一下。

W3school上面的方法是這樣的——全部設置浮動:

<!DOCTYPE html>
<html>
<head>
<style>
ul
{
list-style-type:none;
margin:0;
padding:0;
overflow:hidden;
}
li
{
float:left;
}
a
{
display:block;
width:60px;
background-color
:#dddddd; } </style> </head> <body> <ul> <li><a href="#home">Home</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> </
ul> </body> </html>

這個涉及到浮動的知識,這裏不詳述了。但是,還有沒有其他方法呢?我想到另外一種方法,不用ul,直接把a設置為inline-block不就行了嗎(原本的inline顯然不行,因為不能設置長度,會導致大小不一)?

於是,我把代碼改成了下面:

<!DOCTYPE html>
<html>
<head>
<style>
a
{
display:inline-block;
width:60px;
background-color:#dddddd;
}
</style>
</head
> <body> <a href="#home">Home</a> <a href="#news">News</a> <a href="#contact">Contact</a> <a href="#about">About</a> </body> </html>

但是,得出來的結果不如人意:

技術分享圖片

中間的間隙並不是我想要的(雖然實際開發中這些間隙也許會使布局更加美觀),但這些間隙是因何而來?我上網查了一下,發現原來inline-block之間出現間隙的原因是標簽之間的空格:

</a>
<a href="#news">

像這裏兩行之間就會被視作一個空格了,我們只需要消除HTML標簽之間的空格就可以解決這個問題了。

這個網址很好地概括了消除inline-block元素間間距的方法:

http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/

其中,我認為第一種方法是最好的:

像這樣:

<body>
<a href="#home">
Home</a><a href="#news">
News</a><a href="#contact">
Contact</a><a href="#about">
About</a>
</body>

或者:

<body>
<a href="#home">Home</a
><a href="#news">News</a
><a href="#contact">Contact</a
><a href="#about">About</a>
</body>

再或者使用註釋:

<body>
<a href="#home">Home</a><!--
--><a href="#news">News</a><!--
--><a href="#contact">Contact</a><!--
--><a href="#about">About</a>
</body>

這樣,我們就有兩種方法寫水平導航條了。當然方法還有很多,這篇博客最主要還是用來提及消除inline-block元素間間距的方法。

[前端]如何寫一個水平導航欄?(浮動、inline-block+消除間距)