pipe理内联列表项之间空白的最佳方法
我的HTML如下:
<ul id="nav"> <li><a href="./">Home</a></li> <li><a href="/About">About</a></li> <li><a href="/Contact">Contact</a></li> </ul>
和我的CSS:
#nav { display: inline; }
但是li之间的空格出现了。 我可以通过折叠它们来删除空白,如下所示:
<ul id="nav"> <li><a href="./">Home</a></li><li><a href="/About">About</a></li><li><a href="/Contact">Contact</a></li> </ul>
但这主要是由人手维持,我想知道是否有一个更清洁的方式来做到这一点。
在这里有几个选项,首先我会给你创build内联列表的时候的一些常规:
<ul id="navigation"> <li><a href="#" title="">Home</a></li> <li><a href="#" title="">Home</a></li> <li><a href="#" title="">Home</a></li> </ul>
然后,使CSS的function,你打算:
#navigation li { display: inline; list-style: none; } #navigation li a, #navigation li a:link, #navigation li a:visited { display: block; padding: 2px 5px 2px 5px; float: left; margin: 0 5px 0 0; }
显然,我忽略了hover和活动集,但是这创build了一个很好的块级导航,并且在遵循标准的同时,这是一个非常普遍的方法。 / *记得调整你的喜好,给背景添加颜色,等等* /
如果你想保持文本,只是内联,我相信你不想添加块的元素:
margin: 0 5px 0 0; /* that's, top 0, right 5px, bottom 0, left 0 */
意识到你想删除空白,只是相应地调整边距/填充。
消除空白的另一个有用的方法是将列表的font-size
属性设置为0
,将列表元素设置为所需的大小。
你真正想要的是CSS3 的空白崩溃:丢弃 。 但我不确定是否有浏览器实际上支持该属性。
一些替代解决scheme是让标签的尾部消耗空白。 例如:
<ul id="nav" ><li><a href="./">Home</a></li ><li><a href="/About">About</a></li ><li><a href="/Contact">Contact</a></li ></ul>
我见过的另一件事是使用HTML注释来消耗空白
<ul id="nav"><!-- --><li><a href="./">Home</a></li><!-- --><li><a href="/About">About</a></li><!-- --><li><a href="/Contact">Contact</a></li><!-- --></ul>
如果你可以使用浮动,请参阅thismat的解决scheme,根据需要,可能需要添加一个设置为clear: both;
的结尾<li>
clear: both;
。
但CSS3属性可能是最好的理论方法。
列表项目的更好的解决scheme是使用:
#nav li{float:left; width:auto;}
具有完全一样的没有头痛的视觉效果。
采用非基于XML的HTML并省略</li>
。
<ul id="nav"> <li><a href="./">Home</a> <li><a href="/About">About</a> <li><a href="/Contact">Contact</a> </ul>
然后将项目的显示属性设置为内联块而不是内联。
#nav li { display: inline-block; /display: inline; /* for IE 6 and IE 7 */ /zoom: 1; /* for IE 6 and IE 7 */ }
问题是UL中的字体大小。 将它设置为0,它会消失,但是你不希望你的实际文字被设置的很小,那么把你的LI字体大小设置为你想要的。
<ul style="font-size:0px;"> <li style="font-size:12px;"> </ul>
我有同样的问题,没有上述解决scheme可以解决这个问题。 但我发现这对我有用:
而不是这个:
<ul id="nav"> <li><a href="./">Home</a></li> <li><a href="/About">About</a></li> <li><a href="/Contact">Contact</a></li> </ul>
像这样构build你的html代码(链接文本之前和之后的空格):
<ul id="nav"> <li><a href="./"> Home </a></li> <li><a href="/About"> About </a></li> <li><a href="/Contact"> Contact </a></li> </ul>
<html> <head> <style> ul li, ul li:before,ul li:after{display:inline; content:' '; } </style> </head> <body> <ul><li>one</li><li>two</li><li>three</li></ul> <ul> <li>one</li> <li>two</li> <li>three</li> </ul> </body> </html>