【发布时间】:2019-03-04 16:20:09
【问题描述】:
我在尝试对齐大型菜单内的标题基线时遇到问题。
/* Presentational bits */
.add-divider {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
padding-bottom: 0.65em;
-webkit-box-align: baseline;
-ms-flex-align: baseline;
align-items: baseline;
}
.standard-list {
list-style-type: none;
padding-left: 0;
list-style: none;
}
/* Core Styling */
.mega-menu-wrapper {
list-style-type: none;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(23%, 1fr));
grid-gap: 10px;
align-items: baseline;
}
<nav>
<ul class="mega-menu-wrapper">
<li class="mega-menu-item">
<h5 class="add-divider">Typical Section Header</h5>
<ul class="standard-list">
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
</ul>
</li>
<li>
<h5 class="add-divider">Atypical Section Header with much longer content in it that breaks to another line</h5>
<ul class="standard-list">
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
</ul>
</li>
<li>
<h5 class="add-divider">How to accomodate different sized sections Headers?</h5>
<ul class="standard-list">
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
</ul>
</li>
<li><h5 class="add-divider">The section dividers should line up</h5>
<ul class="standard-list">
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
</ul></li>
<li>
<h5 class="add-divider">No matter the content of the headers</h5>
<ul class="standard-list">
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
<li><a href="#">Link to nowhere</a></li>
</ul>
</li>
</ul>
</nav>
如所见,我有一个导航,导航内部是一个无序列表,每个列表项内部都有一个标题,它是导航项的无序列表。每个标题都有自己的底部边框,出于美观目的,并将标题与链接分开。
问题是我无法对齐这些底部边框,它们是标题上的样式。我认为使用 CSS Grid 将是一项非常简单的任务,但也许我使用了错误的东西来设置这个菜单的样式,或者我不知道一些 CSS Grid 功能。
总而言之我只想对齐这些标题的基线,即使它们分成多行。
我查看了以下资源,但没有一个符合我的用例,但我不能是唯一一个遇到这个问题的人,或者它比我想象的更容易解决,我忽略了一些东西.无论哪种方式,这都是我尝试过的无济于事:
- HTML heading alignment issues
- CSS Vertical Align Baseline HTML Headings
- html - Horizontally aligning blocks on text baseline
- html - align headings to same baseline, regardless following text
- 我的 Google 搜索结果中还有更多紫色链接
非常感谢任何帮助。
更新
我希望能够支持可变数量的链接,因为这是一个超级菜单,我不知道用户会添加多少个链接。
我意识到这可能无法用我现在的 HTML 结构方式来完成。 我愿意探索构建 HTML 的新方法,只要我可以在第 5 次换行之前有 4 列菜单项。
【问题讨论】:
-
这在 any 布局方法中是不可能的。没有 CSS 属性来均衡不共享父元素的高度。您需要 Javascript 或对 HTML 进行根本性更改。
-
@Paulie_D 该 HTML 变化看起来会如何?我愿意重新组织 HTML 以使布局更加灵活。