前注:这不是重复的。我检查了几个问题,但我的细节有所不同。
我目前在网页上有这样的水平导航菜单:
菜单是一个 ul 元素。问题是目前我必须明确指定边距以获取 li 之间的间距。我希望间距尽可能为 60px,但只要浏览器缩小并且不再允许如此大的菜单间距,就缩小。
我怎样才能做到这一点?
我认为您正在寻找超级圣洁的 Uber-Grail。我可能错了,但我认为单独使用 CSS 是不可能的。这是因为没有像 max-width 这样的 max-margin 。如果你使用 JS(例如 jQuery)你会有一种定位的跳跃,因为 JS 必须等到页面加载并准备好然后开始计算宽度值。
如果你愿意做一些不同的事情。我建议您定义与窗口大小相结合的整个导航的最大宽度,然后在现代浏览器中使用 CSS flex。如果您使用 modernizr.com,您可以在 IE8 的 CSS 中进行分支,并改用 display:table、table-row、table-cell。对于 IE7,您只需使用浮点数。
为什么不在现代浏览器中使用 display:table?我可能看起来一样,但元素之间的边距增益在 flex 和 table 中不同。虽然在 flex 中元素之间的间隙是绝对相同的(意味着像素方面),但它们在表格中是相对相同的(意味着更宽的表格单元格比窄的单元格获得更多的空间)
table
+--------------------------------+---------+
| wide content in here | short |
+--------------------------------+---------+
6px 6px 2px 2px
flex
+----------------------------+-------------+
| wide content in here | short |
+----------------------------+-------------+
4px 4px 4px 4px