首先,如果这个问题太简单,我想道歉,当涉及到网页设计/开发时,我非常缺乏经验。
我试图让这些链接跨越导航栏的整个宽度,同时仍然为每一边的元素腾出空间,这两个元素都有不同的宽度。
将代码中的任何宽度设置为100%都不能做到这一点,但是将表格从导航栏中取出就可以了。
这是我的代码。
header {
position: fixed;
width: 100%;
height: 2.5em;
background-color: #202020;
}
#top-spacer {
height: 2.5em;
width: 100%;
}
#logo {
width: auto;
height: 2.5em;
}
#nav-container {
display: inline-block;
max-width: 100%;
}
nav {
display: block;
width: 100%;
background-color: blue;
height: 0.5em;
vertical-align: top;
padding: 0;
margin: 0 auto;
}
nav table {
display: inline-block;
width: 100%;
}
#menu-button {
display: inline-block;
width: auto;
height: 2.5em;
float: right;
opacity: 0.3;
transition: opacity 1s;
}
#menu-button:hover {
opacity: 1;
}
<html lang=en>
<head>
<meta charset="utf-8">
<meta name="Description" content="describey mcscriberson">
<meta name="keywords" content="a,b,c,d">
<link rel="stylesheet" href="css/normalize.css" type="text/css">
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<header>
<img src="img/logo.png" id="logo">
<div id="nav-container">
<nav>
<table width="100%">
<tr>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
</tr>
</table>
</nav>
</div>
<img src="img/menu.png" id="menu-button">
</header>
<div id="top-spacer"></div>
</body>
</html>
谢谢。
这就是你想要达到的效果吗?(运行代码片段查看)基本上,如果你想有一个标题有3个元素有不同的宽度,但填充整个宽度,那么你可以使用CSS设置父元素为display:table
,然后设置子元素为display:table-cell
。它适用于任何元素的动态宽度,而不需要任何浮动…
html, body {margin:0;padding:0}
header {
position: fixed;
width: 100%;
height: 2.5em;
background-color: #202020;
display:table;
text-align: center;
}
#top-spacer {
height: 2.5em;
width: 100%;
}
#logo {
width: auto;
height: 2.5em;
display:table-cell;
}
#nav-container {
display:table-cell;
max-width: 100%;
}
nav {
width: 100%;
height:100%;
background-color: blue;
}
nav table tr {
width: 100%;
color:#FFF;
}
nav table td {
height: 2.5em;
}
#menu-button {
width: auto;
display:table-cell;
height: 2.5em;
opacity: 0.3;
transition: opacity 1s;
}
#menu-button:hover {
opacity: 1;
display:table-cell;
background:red;
}
<html lang=en>
<head>
<meta charset="utf-8">
<meta name="Description" content="describey mcscriberson">
<meta name="keywords" content="a,b,c,d">
<link rel="stylesheet" href="css/normalize.css" type="text/css">
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<header>
<img src="img/logo.png" id="logo">
<div id="nav-container">
<nav>
<table width="100%">
<tr>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
</tr>
</table>
</nav>
</div>
<img src="img/menu.png" id="menu-button">
</header>
<div id="top-spacer"> </div>
</body>
</html>
相同大小的表格单元格,以填充保持表的整个宽度这个主题是解决类似的问题,这个想法是,你必须有在css的宽度%为td。这意味着如果你有6列,宽度将是100%/6但是我更愿意使用div元素作为链接而不是表格。
编辑:td取内部文本的宽度。为了更好地理解,请使用开发工具(F12)并检查表的元素(右键单击您想要查看它是如何生成的)并选择inspect element。你会看到表格的宽度是100%只是列没有展开因为在css中没有相关内容
一般来说,不建议使用表格进行这种布局,但一个简单的想法是将图像移动到表格中。
<table width="100%">
<tr>
<td><img src="img/logo.png" id="logo"></td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td>link</td>
<td><img src="img/menu.png" id="menu-button"></td>
</tr>
</table>
设置#nav-container
宽度为width: 100%;
此外,您应该提供一个没有任何不必要的代码(如meta
标记)的示例,并确保链接没有中断(例如图像链接)
我用列表项替换了表,这是出于SEO,响应性,可维护性原因的首选方法,而不是表。
虽然因为您需要列表均匀拉伸,使用%将意味着如果列表改变长度,则需要调整此数字。第一项和最后一项(images li items)可能需要使用n -child设置它们自己的% width,因为它们可能与其他列表项不同。希望能有所帮助:
http://jsfiddle.net/43r7L2fj/1/<header>
<div id="nav-container">
<nav>
<ul>
<li><img src="img/logo.png" id="logo"></li>
<li>link</li>
<li>link</li>
<li>link</li>
<li>link</li>
<li>link</li>
<li><img src="img/menu.png" id="menu-button"></li>
</ul>
</nav>
</div>