前言:我不是一般的 UI 人,如果我对 CSS 有严重的误解,请原谅我。请知道,这个问题是经过几个小时的研究/把我的头撞到墙上的:)
本质上,我要做的是将未知数量的元素拉伸到未知宽度的空间中,在两个已知宽度的元素之间,所有元素都在一个可变宽度的容器内,在页面内居中。
我意识到当我打字时这一切听起来多么疯狂,所以让我尝试以图形方式执行此操作:
html
|-------------------------------------------------------------------------|
| #container |
| |-----------------------------------------------------------------| |
| |#header | |
| ||---------------------------------------------------------------|| |
| || #logo | #menu | #social || |
| || | |---| |---| |---| |---| | || |
| || | | A | | B | | C | ... ... ... | N | | || |
| || | |---| |---| |---| |---| | || |
| ||---------------------------------------------------------------|| |
| | | |
| |#body | |
| ||---------------------------------------------------------------|| |
| || || |
| ||---------------------------------------------------------------|| |
|-------------------------------------------------------------------------|
在哪里:
#container
居中,占文档宽度的 80%#logo
,#menu
, 和#social
都包含在<div/>
s#logo
并且#social
具有已知的宽度;#menu
才不是| A |
...| N |
是 a 中未知数量的<li/>
元素<ul/>
HTML 看起来像:
<body>
<div id="container">
<div id="header">
<div id="logo">Logo here</div>
<div id="nav">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
</ul>
</div>
<div id="social"><a href="#">Link</a><a href="#">Link</a></div>
</div>
<div id="body"> </div>
</div>
</body>
尽我所能,我无法让菜单项延伸到元素A..N
之间的剩余空间。他们要么最终被挤在一起,要么占据了 80% 分配给他们的 100% 。#logo
#social
#container
我已经尝试过的一些事情:
我不能/不会考虑做的事情:
- 将菜单项存放在
<table/>
- 任何类型的 JavaScript 方法
- 使用 CSS
calc()
函数
最后一点:我不担心这些菜单项在分配给它们的空间中没有足够的空间。但是,如果它们确实溢出,我希望它们会溢出到内部的另一行#menu
(即A
菜单项下方)。
必须有一个纯 CSS 解决方案……它是什么?