防止菜单“向下错位”

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

preventing-stepdown.png

如果您熟悉“浮动”的概念,您就会知道,如果将页面元素浮动到左侧,则下一个页面元素将尽可能地向上移动到该元素的右侧。但是您是否曾经见过浮动元素“向下错位”?

这是在创建水平菜单时可能会遇到的一个相当常见的问题。像大多数菜单一样,您创建了一个无序列表

<ul id="menu">
	<li><a href="#">My</a></li>
	<li><a href="#">Little</a></li>
	<li><a href="#">Menu</a></li>
</ul>

您希望菜单项成为大的可点击块,因此您编写了如下CSS

ul#menu li a {
	display: block;
	width: 130px;
	text-align: center;
	font-weight: bold;
	float: left;
	color: white;
	font-size: 1.2em;
	text-decoration: none;
	background: #600;
}

这些块浮动到左侧,因此它们应该全部排成一行,对吧?不,这会导致一些向下错位。问题在于包裹锚元素的列表元素。这些也是块级元素,但它们没有浮动。这会造成混乱,因为块级元素自然会在其后有一个断行(就像一个不可见的<br />)。这会将下一个元素向下推一个当前行高的距离,这就是导致向下错位的原因。

以下是解决方法

ul#menu li {
	display: inline; /* Prevents "stepdown" */
}

将这些列表元素设置为内联将消除这些断行,并确保您的菜单保持美观、整洁和笔直!

fixed.png