首先,内联块会根据其内容进行收缩包装,并在水平方向上尽可能地伸展以容纳其子元素。如果您在内联块中有文本,则内联块将伸展,以便所有文本都可以在单行中显示。如果后一种行为使内联块伸展到无法与其他内联或内联块处于同一行的程度,则它将被移动到新行。
显式设置 .menu 的宽度不是一个好习惯。通过格式化 .menu 的子元素隐含地设置宽度。在此处查看示例:
http://jsfiddle.net/4Ueuh/。您可以通过字体大小、padding-left、padding-right 等来调整菜单的宽度,使其动态增长。
你所寻求的动态行为可以通过将包含
.menu
和
.content
的元素设置为表格来实现;
.menu
和
.content
将被显示为表格单元格。这样可以使
.menu
和
.content
横向排列。
HTML:
<div id = "#wrapper">
<div class = "menu">
<ul>
<li><a href = "">Home</a></li>
<li><a href = "">About</a></li>
<li><a href = "">Team</a></li>
<li><a href = "">Services</a></li>
<li><a href = "">Contact us</a></li>
</ul>
</div>
<div class = "content">
<h2>Lorem Ipsum</h2>
<p>
Duis auctor libero vel dignissim auctor. Vestibulum ac quam ut erat lacinia rhoncus ut non urna. Suspendisse ornare blandit orci, quis malesuada augue fermentum non. Nam feugiat, augue quis tristique blandit, lorem nunc faucibus elit, in tristique urna velit non nisi. Proin mauris eros, feugiat ac magna ut, aliquam dapibus neque. Integer lorem augue, condimentum non pellentesque a, facilisis ac mauris. Ut cursus elit justo, vel molestie lectus fermentum vitae. Etiam sed commodo orci. Aenean ullamcorper eros in orci pellentesque, sit amet dictum elit feugiat. Donec orci arcu, malesuada nec condimentum id, elementum at eros. Aenean pulvinar purus ac blandit dignissim. Curabitur condimentum augue vitae justo pharetra rhoncus. Nullam nisl arcu, feugiat a risus et, posuere varius erat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc eget lacus libero. Praesent blandit sollicitudin nisi eu posuere.
</p>
</div>
</div>
初始CSS:
* {
margin: 0;
padding: 0;
}
body {
padding: 20px;
}
#wrapper {
display: table;
}
.menu {
display: table-cell;
}
.menu ul {
list-style-type: none;
border-radius: 5px 5px 0 0;
border: 1px dotted #424242;
}
.menu ul li + li {
border-top: 1px dotted #ccc;
}
.menu ul a {
display: block;
padding: 5px 15px;
text-decoration: none;
font: bold 12px/2 Sans-Serif;
color: #151515;
white-space: nowrap;
}
.menu ul li:first-of-type > a {
border-radius: 5px 5px 0 0;
}
.menu ul a:hover {
background-color: #ccc;
}
.content {
display: table-cell;
padding: 0 20px;
}
.content > h2 {
font: normal 24px/2 Sans-Serif;
}
其他人说得很对。要将.menu
和.content
的水平堆叠转换为垂直堆叠,您需要一些媒体查询。但是,这种解决方案仅需要一个媒体查询来测试可用宽度是否足够小以证明需要进行垂直堆叠。
媒体查询CSS:
@media screen and (max-width: 500px) {
.menu, .content {
display: block;
}
.content {
padding: 0;
}
.menu ul {
display: table;
width: 100%;
}
.menu ul li {
float: left;
}
}
代码中的媒体查询部分已经完成,它处理了从水平到垂直堆叠的转换。我将把剩下的样式元素留给你去完成。
还有一个示例:http://jsfiddle.net/XZ3zq/。
干杯。
min-width
吗? - nullability