2009-08-25 109 views
4

假设我想制作一个带有五个链接的水平导航栏,并将宽度设置为20%。只要我给链接添加1px边框,它们就会变得比20%大,最后一个链接会移动到新的一行!我怎样才能解决这个问题?百分比边框的宽度

我希望CSS会允许我做一个负填充值,这样边框实际上会覆盖元素而不是围绕它,但是它不允许这样做。

回答

13

如果你需要IE6/7来玩,你可能需要额外的内部元素,或者你可以尝试负边距。我的建议是使用一个列表为您导航,并添加边框链接本身,因为这样的:

<ul id="nav"> 
    <li><a href="#">link</a></li> 
    <li><a href="#">link</a></li> 
    <li><a href="#">link</a></li> 
    <li><a href="#">link</a></li> 
</ul> 

无疑是 更新:用于在HTML5现在就可以。使用围绕列表nav元素)导航的最多语义标记。然后你的CSS很简单:

#nav li { 
    float: left; 
    width: 20%; 
} 

#nav li a { 
    display: block; 
    border: 1px solid #000; 
} 

OR:额外的乐趣,你现在可以尝试CSS3盒大小的声明相反,适用于所有现代浏览器(不是IE6/7)一些帮助:

#nav li { 
    /* Opera 8.5+ and CSS3 */ 
    box-sizing: border-box; 
    /* Firefox 1+ */ 
    -moz-box-sizing: border-box; 
    /* IE8 */ 
    -ms-box-sizing: border-box; 
    /* Safari 3+ */ 
    -webkit-box-sizing: border-box; 
2

nope,box模型添加边框到总数,所以我不会混合它们,如果它需要加上一个特定的宽度,在你的情况下100%,把一个div(或一些块元素)对象,需要20%,并使其具有边框的100%。

+0

这就是我说的在或者部分大声笑 – 2009-08-25 22:40:56

+0

看起来像我们可能在同一时间回答。 – 2009-08-25 23:20:59

+0

这就是我想知道为什么有人贬低我的帖子。 – 2009-08-26 00:33:52

2

-1px的边距可能会起作用。因人而异。