2013-02-19 17 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