如何让水平多行导航菜单项左对齐?
How to get horizontal multi-line navigation menu items to left align?
我正在尝试在水平导航菜单中使用 flexbox,以使用管道分隔符使菜单项均匀分布。
我可以让项目换行到下一行,但是顶行的第一个项目缩进了,所以下一行的第一个项目从空白处更左边开始。
如何让菜单从左边距开始?
我有两个菜单,在第一个菜单中,竖线的间距不均匀。在第二个菜单中,管道看起来均匀分布。这就是我得到的。
两个不均匀环绕的导航菜单示例:
如何使用均匀间隔的管道使包装在顶行第一项下方对齐?谢谢
这是我试过的。
ul.container {
display: flex;
justify-content: space-between;
flex-flow: row wrap;
}
ul.container li {
list-style: none;
list-style-position: inside;
display: inline;
text-align: left;
margin: 0 0 0 -1em;
padding: 0.7em 0 0 0;
white-space: normal;
}
ul.container li.vertical-divider:before {
font-weight: normal;
content: " | ";
padding-right: 0.2em;
background-color: transparent;
}
<div id="inthissection">
<p class="inthissection">In This Section:</p>
<ul class="container">
<li class="vertical-divider"><a href="http://events.stcwdc.org/about-wdcb-events/">About WDCB Events</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/events">Events Calendar</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/speakers-handouts-and-presentations/">Speakers' Handouts and Presentations</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/first-timers-coupon/">First Timer's Coupon</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Submit an Event</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-an-article/">Submit an Article</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Event Announcement Form</a></li>
<li class="vertical-divider"><a href="http://www.stcwdc.org/events_past_archives.shtml">Archives of Past Events</a></li>
</ul>
</div>
更新:
根据@Abinthaha 的建议,我想出了一个接近的解决方案;但是,它仍然没有像在 codepen 示例中那样垂直左对齐。我仍然想解决这个问题。这是现在对我有用的东西:
/* ----Flexible Horizontal NAVIGATION LISTS */
ul.container {
list-style: none;
padding: 0;
max-width: 400px;
display: flex;
flex-flow: row wrap;
}
ul.container li.vertical-divider:first-child:before {
content: none;
margin: 0 0 0 -0.7em;
padding: 0;
flex-grow: 1
}
li.vertical-divider:not(:last-child) {
font-weight: normal;
content: " | ";
margin: auto;
}
ul.container li.vertical-divider:last-child {
flex: 0;
}
/* In this section --------------------------------- */
#inthissection {
background-color: transparent;
margin: -1em 0 0 0;
padding: 0 0 0.9em 0;
font-weight: bold;
width: auto;
}
p.inthissection {
margin: 0.9em 0 0 0;
padding: 0.9em 0 0 0;
font-size: 0.9em;
font-weight: bold;
}
#inthissection ul {
display: inline;
list-style-type: none;
font-size: 0.9em;
margin: 0;
padding: 0;
}
#inthissection li {
display: inline;
margin: -0.4em auto -1.2em -0.5em;
padding: 0.7em 0.8em 0.4em 0.8em;
}
#inthissection ul li:first-child:before {
content: none;
margin-left: -28px;
padding: 0;
}
#inthissection li:before {
font-weight: normal;
content: " | ";
background-color: transparent;
margin: 0 0 0 -0.7em;
padding: 0.7em 0.8em 0.4em 0.8em;
}
<div id="inthissection">
<p class="inthissection">In This Section:</p>
<ul class="container">
<li class="vertical-divider"><a href="http://events.stcwdc.org/about-wdcb-events/">About WDCB Events</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/events">Events Calendar</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/speakers-handouts-and-presentations/">Speakers' Handouts and Presentations</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/first-timers-coupon/">First Timer's Coupon</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Submit an Event</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-an-article/">Submit an Article</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Event Announcement Form</a></li>
<li class="vertical-divider"><a href="http://www.stcwdc.org/events_past_archives.shtml">Archives of Past Events</a></li>
</ul>
</div>
将以下内容放在 css 的底部,从左边距开始:
#first-divider:before {
content: "";
margin-left: -28px;
}
并找到下面的 link - 它很好地解释了您应该如何使用 flexbox 使用分隔线。
Flexbox 是一种简单的技术。我想这就是你要找的。 codepen。核实。元素左对齐,左边的任何行都没有白色 space。如果你想均匀对齐项目。然后就可以用flex-grow: 1
到li
了。这样每行中的 li
将占据整行 space 并在两者之间平分。
ul {
display: flex;
flex-wrap: wrap;
}
li {
padding: 2px 15px;
}
li:not(:last-child) {
border-right: 1px solid #000;
}
我正在尝试在水平导航菜单中使用 flexbox,以使用管道分隔符使菜单项均匀分布。
我可以让项目换行到下一行,但是顶行的第一个项目缩进了,所以下一行的第一个项目从空白处更左边开始。
如何让菜单从左边距开始?
我有两个菜单,在第一个菜单中,竖线的间距不均匀。在第二个菜单中,管道看起来均匀分布。这就是我得到的。
两个不均匀环绕的导航菜单示例:
如何使用均匀间隔的管道使包装在顶行第一项下方对齐?谢谢
这是我试过的。
ul.container {
display: flex;
justify-content: space-between;
flex-flow: row wrap;
}
ul.container li {
list-style: none;
list-style-position: inside;
display: inline;
text-align: left;
margin: 0 0 0 -1em;
padding: 0.7em 0 0 0;
white-space: normal;
}
ul.container li.vertical-divider:before {
font-weight: normal;
content: " | ";
padding-right: 0.2em;
background-color: transparent;
}
<div id="inthissection">
<p class="inthissection">In This Section:</p>
<ul class="container">
<li class="vertical-divider"><a href="http://events.stcwdc.org/about-wdcb-events/">About WDCB Events</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/events">Events Calendar</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/speakers-handouts-and-presentations/">Speakers' Handouts and Presentations</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/first-timers-coupon/">First Timer's Coupon</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Submit an Event</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-an-article/">Submit an Article</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Event Announcement Form</a></li>
<li class="vertical-divider"><a href="http://www.stcwdc.org/events_past_archives.shtml">Archives of Past Events</a></li>
</ul>
</div>
更新: 根据@Abinthaha 的建议,我想出了一个接近的解决方案;但是,它仍然没有像在 codepen 示例中那样垂直左对齐。我仍然想解决这个问题。这是现在对我有用的东西:
/* ----Flexible Horizontal NAVIGATION LISTS */
ul.container {
list-style: none;
padding: 0;
max-width: 400px;
display: flex;
flex-flow: row wrap;
}
ul.container li.vertical-divider:first-child:before {
content: none;
margin: 0 0 0 -0.7em;
padding: 0;
flex-grow: 1
}
li.vertical-divider:not(:last-child) {
font-weight: normal;
content: " | ";
margin: auto;
}
ul.container li.vertical-divider:last-child {
flex: 0;
}
/* In this section --------------------------------- */
#inthissection {
background-color: transparent;
margin: -1em 0 0 0;
padding: 0 0 0.9em 0;
font-weight: bold;
width: auto;
}
p.inthissection {
margin: 0.9em 0 0 0;
padding: 0.9em 0 0 0;
font-size: 0.9em;
font-weight: bold;
}
#inthissection ul {
display: inline;
list-style-type: none;
font-size: 0.9em;
margin: 0;
padding: 0;
}
#inthissection li {
display: inline;
margin: -0.4em auto -1.2em -0.5em;
padding: 0.7em 0.8em 0.4em 0.8em;
}
#inthissection ul li:first-child:before {
content: none;
margin-left: -28px;
padding: 0;
}
#inthissection li:before {
font-weight: normal;
content: " | ";
background-color: transparent;
margin: 0 0 0 -0.7em;
padding: 0.7em 0.8em 0.4em 0.8em;
}
<div id="inthissection">
<p class="inthissection">In This Section:</p>
<ul class="container">
<li class="vertical-divider"><a href="http://events.stcwdc.org/about-wdcb-events/">About WDCB Events</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/events">Events Calendar</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/speakers-handouts-and-presentations/">Speakers' Handouts and Presentations</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/first-timers-coupon/">First Timer's Coupon</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Submit an Event</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-an-article/">Submit an Article</a></li>
<li class="vertical-divider"><a href="http://events.stcwdc.org/submit-event-form/">Event Announcement Form</a></li>
<li class="vertical-divider"><a href="http://www.stcwdc.org/events_past_archives.shtml">Archives of Past Events</a></li>
</ul>
</div>
将以下内容放在 css 的底部,从左边距开始:
#first-divider:before {
content: "";
margin-left: -28px;
}
并找到下面的 link - 它很好地解释了您应该如何使用 flexbox 使用分隔线。
Flexbox 是一种简单的技术。我想这就是你要找的。 codepen。核实。元素左对齐,左边的任何行都没有白色 space。如果你想均匀对齐项目。然后就可以用flex-grow: 1
到li
了。这样每行中的 li
将占据整行 space 并在两者之间平分。
ul {
display: flex;
flex-wrap: wrap;
}
li {
padding: 2px 15px;
}
li:not(:last-child) {
border-right: 1px solid #000;
}