0

我想制作一个漂亮的导航栏,但由于某种原因,我无法将栏末端的单元格边框弄圆。如果您仔细观察角落,您应该能够看到背景发生了一些圆角,但由于某种原因,边框没有。

你可以在这里看到我的意思:http: //jsfiddle.net/7veZQ/299/

这是我的代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
table {
    border-collapse: collapse;
    border: none;
    box-shadow: 0px 5px 10px #BBB;
}
.nav tr td {
    width: 160px;
    height: 40px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    color: #666;
    border: 1px solid #999;
    vertical-align: middle;
    text-align: center;
    background: #eeeeee; /* Old browsers */
    background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* IE10+ */
    background: linear-gradient(to bottom, #eeeeee 0%,#cccccc 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
    text-shadow: 1px 1px 0px #FFFFFF;
    letter-spacing: 3px;
}
.nav tr td:hover {
    background: #F4F4F4; /* Old browsers */
    background: -moz-linear-gradient(top, #F4F4F4 0%, #E0E0E0 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E0E0E0)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* IE10+ */
    background: linear-gradient(to bottom, #F4F4F4 0%,#E0E0E0 100%); /* W3C */
}
.nav tr td#first {
    border-radius: 5px 0px 0px 5px; 
    -moz-border-radius: 5px 0px 0px 5px; 
    -webkit-border-radius: 5px 0px 0px 5px;
}

.nav tr td#last {
    color: #09C;
    border-radius: 0px 5px 5px 0px; 
    -moz-border-radius: 0px 5px 5px 0px; 
    -webkit-border-radius: 0px 5px 5px 0px;
}
</style>
</head>
<body>
<table class="nav" width="960" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td id="first">Home</td>
    <td>Options</td>
    <td>Prices</td>
    <td>Showcase</td>
    <td>Help</td>
    <td id="last">Order Now!</td>
  </tr>
</table>

</body>
</html>

那么我做错了什么?

4

4 回答 4

4

那么我做错了什么?

使用表格进行布局。

表格不是布局工具。一些浏览器不会在表格单元格上圆角。你有一个数据列表,使用 list markup

于 2012-07-13T16:09:40.810 回答
1

将您的表格 css 更改为

border-collapse: separate;
于 2012-07-13T16:20:34.463 回答
0

看这个:

http://jsfiddle.net/7veZQ/313/

该表被转换为div+ ul

查看line-height(此处用于将文本垂直居中)。

另外,我更改了firstand lastto be classes(而不是id's),因为它们是非常常见的名称,并且id's在文档中应该是唯一的。

最后,看看borders。我们没有border-collapse列表,因此该last项目与其他项目略有不同。

于 2012-07-13T17:25:28.460 回答
0

不幸的是,这不是跨浏览器 CSS。并非在所有浏览器中都找到 CSS3。话虽如此,我建议进行一些更改。首先,你不应该对任何东西使用精确的高度和宽度。

其次,您应该使用 DIV。 不错的论坛帖子,为什么...

无论如何,这是“修复”(我个人反对浮动任何东西,但是哦,好吧。有时会发生这种情况:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
.nav {
    float:left;
    width:960px;
    height:40px;
    border: 1px solid #999;
    border-radius: 5px; 
    -moz-border-radius: 5px; 
    -webkit-border-radius: 5px;
    box-shadow: 0px 5px 10px #BBB;
}
.nav a {
    float:left;
    display:inline-block;
    margin:0;
    padding:0;
    line-height:40px;
    text-decoration:none;
    width: 160px;
    height: 40px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    color: #666;
    text-align: center;
    background: #eeeeee; /* Old browsers */
    background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* IE10+ */
    background: linear-gradient(to bottom, #eeeeee 0%,#cccccc 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
    text-shadow: 1px 1px 0px #FFFFFF;
    letter-spacing: 3px;
}
.nav a:hover {
    background: #F4F4F4; /* Old browsers */
    background: -moz-linear-gradient(top, #F4F4F4 0%, #E0E0E0 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E0E0E0)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #F4F4F4 0%,#E0E0E0 100%); /* IE10+ */
    background: linear-gradient(to bottom, #F4F4F4 0%,#E0E0E0 100%); /* W3C */
}
.nav a#first {
    border-radius: 5px 0px 0px 5px; 
    -moz-border-radius: 5px 0px 0px 5px; 
    -webkit-border-radius: 5px 0px 0px 5px;
}

.nav a#last {
    color: #09C;
    border-radius: 0px 5px 5px 0px; 
    -moz-border-radius: 0px 5px 5px 0px; 
    -webkit-border-radius: 0px 5px 5px 0px;
}
</style>
</head>
<body>

<div id="main-menu" class="nav">
    <a href="#" id="first">Home</a>
    <a href="#">Options</a>
    <a href="#">Prices</a>
    <a href="#">Showcase</a>
    <a href="#">Help</a>
    <a href="#" id="last">Order Now!</a>
</div>

</body>
</html>

这应该是它工作所需要的一切......如果您在使用 CSS 布局时遇到问题,请查看 YUI3 Grids。我是 YUI 3 的粉丝,所以是的,这是一个可耻的插件。

YUI 库

于 2012-07-13T16:24:28.460 回答