2013-02-19 58 views
17

我遇到了我正在製作的菜單欄的問題。似乎菜單項和我的生活之間有差距,我不明白這是什麼原因。CSS/HTML - Horizo​​nal list - 清除列表項之間的這個神祕間隙? (見圖)

作爲對以下屏幕截圖的描述,第一個鏈接(home)是當前頁面,並且突出顯示。第二個鏈接(page1)是懸停效果,而我的光標在這個項目上。您會注意到這兩個項目之間存在差距(這是什麼造成的?!)顯示包含菜單的div的背景顏色。

可能值得注意的是,我使用的是最新版本的Firefox。

這裏是我的問題的截圖:

Mystery Gap

這裏是列表中的HTML:

<div class="nav"> 
    <ul> 
     <li class="selectedPage"><a href="#">HOME</a></li> 
     <li><a href="#">PAGE1</a></li> 
     <li><a href="#">PAGE2</a></li> 
    </ul> 
<!-- end .nav --></div> 

這裏是CSS:

div.nav { 
    width: 750px; 
    background: #52b5f0; /* Old browsers */ 
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */ 
    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSI1JSIgc3RvcC1jb2xvcj0iIzUyYjVmMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjQ5JSIgc3RvcC1jb2xvcj0iIzM2OTlkMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9Ijk1JSIgc3RvcC1jb2xvcj0iIzE5NjM4YSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=); 
    background: -moz-linear-gradient(top, #52b5f0 5%, #3699d0 49%, #19638a 95%); /* FF3.6+ */ 
    background: -webkit-gradient(linear, left top, left bottom, color-stop(5%,#52b5f0), color-stop(49%,#3699d0), color-stop(95%,#19638a)); /* Chrome,Safari4+ */ 
    background: -webkit-linear-gradient(top, #52b5f0 5%,#3699d0 49%,#19638a 95%); /* Chrome10+,Safari5.1+ */ 
    background: -o-linear-gradient(top, #52b5f0 5%,#3699d0 49%,#19638a 95%); /* Opera 11.10+ */ 
    background: -ms-linear-gradient(top, #52b5f0 5%,#3699d0 49%,#19638a 95%); /* IE10+ */ 
    background: linear-gradient(to bottom, #52b5f0 5%,#3699d0 49%,#19638a 95%); /* W3C */ 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#52b5f0', endColorstr='#19638a',GradientType=0); /* IE6-8 */ 
} 

div.nav ul { 
    list-style: none; /* this removes the list marker */ 
} 

div.nav li { 
    display: inline-block; 
} 

div.nav li.selectedPage { 
    background: #41ff5f; 
} 

div.nav li.selectedPage a { 
    color: #10653b; 
} 

div.nav a, div.nav a:visited { 
    padding: 5px; 
    display: block; 
    width: 120px; 
    text-decoration: none; 
    color: #FFFFFF; 
    font-weight: bold; 
    text-align: center; 
} 

div.nav a:hover, div.nav a:active, div.nav a:focus { 
    background: #41ff5f; 
    color: #10653b; 
} 

如果任何人都可以向我提供一些與此相關的意見,這將是gr不勝感激!

歡迎任何建議,建議,支持或反饋!非常感謝!

編輯:

我做的地方有這樣早些時候在CSS:

ul, li { 
    padding: 0; 
    margin: 0; 
} 

EDIT2:

的jsfiddle鏈接:

http://jsfiddle.net/Gbg7J/

+1

請提供的jsfiddle,以方便快速,準確地解答您的問題...... – henser 2013-02-19 13:26:52

+0

有時保證金:0是不夠的,嘗試設置李{margin-left:-1}或-2等.. – gaurav 2013-02-19 13:27:05

+0

@henser請參閱我最後編輯的JsFiddle鏈接 – 2013-02-19 13:31:33

回答

40

的間隙時通過分隔列表項目的製表符和換行符;內嵌塊元素(或任何參與inline formatting context的元素)對HTML中的結構敏感。

您可以remove the spaces completely

<ul> 
    <li class="selectedPage"><a href="#">HOME</a></li><li><a href="#">PAGE1</a></li<li><a href="#">PAGE2</a></li> 
</ul> 

使用註釋:

<div class="nav"> 
    <ul> 
     <li class="selectedPage"><a href="#">HOME</a></li><!-- 
     --><li><a href="#">PAGE1</a></li><!-- 
     --><li><a href="#">PAGE2</a></li><!-- 
    --></ul> 
<!-- end .nav --></div> 

獨自離開HTML和使用floatinstead(並清除容器):

.nav ul li { 
    float: left; 
    /*display: inline-block;*/ 
} 

.nav ul { 
    overflow: hidden; 
} 

或者設置父母和012上的在li

.nav ul { 
    font-size: 0; 
} 

.nav li { 
    display: inline-block; 
    font-size: 16px; 
} 

此外,看一看兩個:How to remove the space between inline-block elements? & http://css-tricks.com/fighting-the-space-between-inline-block-elements/

+1

O ...我的...單詞...我會一直與這個小時戰鬥,因爲我永遠不會認爲白色空間可能導致這樣的事情。我想這只是要注意的事情!非常感謝你的幫助!!!! – 2013-02-19 13:35:24

+0

在[csstricks](http://css-tricks.com/fighting-the-space-between-inline-block-elements/)上進一步閱讀 – skube 2013-11-15 18:01:18