您可以在HTML的菜单栏上找到大量教程,但是对于这个特定的(虽然我是通用的)情况,我还没有找到任何像样的解决方案:

#  THE MENU ITEMS    SHOULD BE    JUSTIFIED     JUST AS    PLAIN TEXT     WOULD BE  #
#  ^                                                                             ^  #
  • 纯文本菜单项的数量各不相同,页面布局也很流畅.
  • 第一个菜单项应该左对齐,最后一个菜单项应该右对齐.
  • 其余的项目应该在菜单栏上以最佳方式展开.
  • 这个数字是不同的,所以没有机会预先计算出最佳宽度.

请注意,桌子在这里也不起作用:

  • 如果将所有TD居中,则第一项和最后一项不会正确对齐.
  • 如果您左对齐和右对齐第一个相应的.最后一项,间距将是次优的.

使用HTML和CSS没有明显的方式以干净的方式实现这一点,这不是很奇怪吗?

推荐答案

Modern Approach - Flexboxes!

现在CSS3 flexboxes个人有better browser support个,我们中的一些人终于可以开始使用它们了.只需添加more browser coverage的其他供应商前缀即可.

在本例中,您只需将父元素的display设置为flex,然后将justify-content property更改为space-betweenspace-around,以便在子flexbox项之间或周围添加空间.

Using 101-(example here):

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.menu {
    display: flex;
    justify-content: space-between;
}
<ul class="menu">
    <li>Item One</li>
    <li>Item Two</li>
    <li>Item Three Longer</li>
    <li>Item Four</li>
</ul>


Using 101-(example here):

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.menu {
    display: flex;
    justify-content: space-around;
}
<ul class="menu">
    <li>Item One</li>
    <li>Item Two</li>
    <li>Item Three Longer</li>
    <li>Item Four</li>
</ul>

Css相关问答推荐

为什么图像加载请求没有显示在我的网络请求中?

当滚动到页脚时,是否可以隐藏固定元素?

如何将div与图像维度进行zoom ?

当面板以Angular 上升时如何定位下拉面板

如何为多个背景和棋盘设置不同的大小

如何在Delphi的TMS Web Core上向窗体添加背景图像

为什么 KaTeX 的彩虹文本只能在 Firefox 上运行?

Next.js 条件样式

CSS:使用 Material Icon 作为 ::marker 或 ::before 使 li 元素不起作用

如何在不使用 sx props 的情况下从 Select 样式中定位 mui paper 组件?

如何在Bootstrap 5上使用移动设备居中内容?

基于高度的容器查询不起作用

如何在启动时滚动 div 的底部?

我在 ins 标签中有一个 img 标签,更改 ins 格式覆盖图像的视图

Adobe Illustrator 删除我在 svg 图像上的类名.我怎样才能防止这种情况?

如何在 nth-child 中正确传递 CSS 变量?

禁用输入的 CSS Select 器 type="submit"

如何隐藏 Chrome 中 HTML5
元素上默认显示的箭头?

了解 Bootstrap 3 中的网格类( col-sm-# 和 col-lg-# )

如何知道哪个 HTML 元素导致了垂直滚动条