过去几周我花了一些时间来更新我的HTML / CSS知识。因此,我一直在学习如何实现我之前使用表格进行的布局,而不是使用DIV。
在大多数情况下一切都很好,但是我试图复制一种使用以下代码作为表格的导航菜单:
HTML:
<div class="navigation">
<table>
<tr>
<td><a href="index.php">home</a></td>
<td> </td>
<td><a href="about.php">about</a></td>
<td> </td>
<td><a href="music.php">music</a></td>
<td> </td>
<td><a href="geeking.php">geeking</a></td>
<td> </td>
<td><a href="contact.php">contact</a></td>
</tr>
</table>
</div>
CSS:
div.navigation{
text-align: center;
color: hsla(200,50%,45%,0.6);
margin: auto;
font-family: monospace;
letter-spacing: 2px;
position: relative;
top: -13px;
margin: 20px auto 20px auto;
width: 60%;
}
.navigation table{
height: 70px;
}
th{
text-align: center;
color: hsla(180,50%,45%,0.4);
font-size: 1.1em;
}
table{
border-collapse: collapse;
margin: auto;
margin-top: 0px;
}
table,th{
border: 0px solid black;
padding: 5px;
}
.navigation a{
text-decoration: none;
color: hsla(200,50%,45%,0.6);
background-color: transparent, white;
text-transform: lowercase;
font-size: 1.2em;
-webkit-transition: all 0.4s linear;
-moz-transition: all 0.4s linear;
-o-transition: all 0.4s linear;
-ms-transition: all 0.4s linear;
transition: all 0.4s linear;
letter-spacing: 0px;
width: 50px;
height: 100px;
}
.navigation a:hover{
color: white;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
transition: all 0.2s linear;
width: auto;
height: auto;
font-size: 2em;
font-weight: bold;
letter-spacing: 2px;
text-shadow: 0 0 20px hsla(180,50%,40%,.6),
0 0 40px hsla(200,50%,45%,.8);
}
您可以在此处观看此页:http://benjaminsherwood.co.uk/index.php 要清楚 - 这是我希望我的菜单的行为 - 一个悬停的元素增加大小和字母间距,并左右推动其他元素,但保持在同一垂直平原。这是我坚持的垂直平原部分。
以下是我用来尝试使用DIV创建相同菜单的代码:
HTML:
<div class="menu">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="">About</a></li>
<li><a href="">Music</a></li>
<li><a href="">Geeking</a></li>
<li><a href="">Contact</a></li>
</ul>
</div>
CSS:
.menu{
position: fixed;
left:0;
right:0;
top:0;
margin: auto;
text-transform: lowercase;
text-align: center;
}
.navigation table{
height: 70px;
}
.menu li{
list-style: none outside none;
display: inline;
}
.menu a{
text-decoration: none;
color: hsla(200,50%,45%,0.6);
font-size: 1.2em;
letter-spacing: 0px;
-webkit-transition: all 0.4s ease;
-moz-transition: all 0.4s ease;
-o-transition: all 0.4s ease;
-ms-transition: all 0.4s ease;
transition: all 0.4s ease;
}
.menu a:hover{
color: white;
font-size: 2em;
font-weight: 600;
letter-spacing: 2px;
-webkit-transition: all 0.2s ease;
-moz-transition: all 0.2s ease;
-o-transition: all 0.2s ease;
-ms-transition: all 0.2s ease;
transition: all 0.2s ease;
text-shadow: 0 0 20px hsla(180,50%,40%,.6),
0 0 40px hsla(200,50%,45%,.8);
}
您可以在此处观看此页:http://benjaminsherwood.co.uk/test.php
我一直试图在整个周末解决这个问题 - 我一直在寻找解决方案的高低,并采用不同的方法来创建水平菜单布局,甚至最终找到了一个非常善于使用CSS的朋友 - 但是,无论我尝试什么,我都无法弄清楚如何以与TABLE 1相同的方式实现基于DIV的布局。
这几乎就好像基于TABLE的布局正在从TD元素的中心应用对元素的更改,而基于DIV的布局从顶角应用它。因此,基于DIV的布局似乎只是向下增长,而不是扩散,因此,它的任何一侧的元素都不会在同一水平面上向左和向右流动,就像在TABLE布局,但是向左或向右推,也向下推。
我会说实话 - 我知道解决方案很可能只是接受它在DIV风格中的工作方式,或继续使用TABLE风格......但我确信它应该是可能的,并且我只是遗漏了一些东西。
用于执行类似操作的TABLE样式,直到我定义:
.navigation table{
height: 70px;
}
之后,它开始表现。我无法弄清楚是否在DIV布局中做同样的事情会解决问题...我已经尝试设置各种元素的高度,但似乎没有任何区别。
对超长问题感到抱歉。我真的避免不得不自己提问,但我真的只是打了一堵砖墙。
答案 0 :(得分:2)
.menu ul {
display: table;
text-align: center;
height: 70px;
padding: 0px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
width: auto;
}
.menu li {
display: table-cell;
list-style-image: none;
list-style-type: none;
text-align: center;
vertical-align: middle;
padding-right: 6px;
padding-left: 6px;
padding-top: 0px;
padding-bottom: 0px;
margin: 0px;
}
答案 1 :(得分:0)
您尚未设置锚点的高度,因此高度是从字体大小继承的。
如果你给锚点增加高度和线高,它几乎可以工作;尝试玩弄:
.menu a {
height: 50px;
line-height: 50px;
}
答案 2 :(得分:0)
.menu a {
vertical-align: middle;
}