Flex CSS - 列表项的 margin-left 而不仅仅是 last-child
Flex CSS - margin-left on list items not just last-child
我正在慢慢掌握 Flex,但它让我感到困惑,如何使 ul.list 中的所有 li 元素都正确浮动。我读过,为了让项目正确浮动,您只需使用 margin-left: auto
但这似乎只对最后一个项目有效,因为当我将视点调整到 1920px 以上或电子邮件和邮件之间的差距以上时电话号码增加...而顶部菜单的左侧但每个 li 元素之间的距离保持不变。
这是我的 HTML:
<header class="ProMenu">
<nav class="row align-middle expanded">
<div class="small-12 medium-4 columns Links">
<ul class="menu">
<li><a href="#" title="">Link 1</a></li>
<li><a href="#" title="">Link 2</a></li>
<li><a href="#" title="">Link 3</a></li>
</ul>
</div>
<div class="medium-4 columns Logo">
<a href="" title=""><img src="https://placehold.it/64x42" alt=""></a>
</div>
<div class="medium-4 columns Contact">
<ul class="menu">
<li><a href="tel:" title="">Phone: 0777123456</a></li>
<li><a href="mailto:" title="">Email: jog@blogs.com</a></li>
</ul>
</div>
</nav>
</header>
还有我的CSS:
.ProMenu {
background: #0071c5;
width: 100%;
}
.ProMenu .row {
min-height: 60px;
max-width: 100%;
}
.ProMenu ul li a {
color: #FFF;
}
.ProMenu .Logo {
text-align: center;
}
.Contact ul li{
margin-left: auto;
}
JSFiddle:
为了让事情更简单,我已经将代码上传到 online JSfiddle,复制使 window 变大并监控手机号码和电子邮件之间的距离增加......一些东西我想停下来。
从最后一个 child 中删除 margin-left: auto
。只放在倒数第二个child。这将迫使两个元素都向右移动。
当弹性项目 margin-left: auto
时,它会将自己推离其左侧的所有内容。在您的情况下,倒数第二个 child 是有意义的。但是对于最后的child.
没有意义
这就是为什么当您加宽屏幕时,两者之间的距离会更大。
通过仅在倒数第二个项目上使用 margin-left: auto
,您可以将两个项目打包在一起,一切都会向右移动。然后,如有必要,您可以使用常规(数字)水平边距在它们之间创建 space。
您想利用基础 .align-right
class,它将应用 justify-content: flex-end;
我正在慢慢掌握 Flex,但它让我感到困惑,如何使 ul.list 中的所有 li 元素都正确浮动。我读过,为了让项目正确浮动,您只需使用 margin-left: auto
但这似乎只对最后一个项目有效,因为当我将视点调整到 1920px 以上或电子邮件和邮件之间的差距以上时电话号码增加...而顶部菜单的左侧但每个 li 元素之间的距离保持不变。
这是我的 HTML:
<header class="ProMenu">
<nav class="row align-middle expanded">
<div class="small-12 medium-4 columns Links">
<ul class="menu">
<li><a href="#" title="">Link 1</a></li>
<li><a href="#" title="">Link 2</a></li>
<li><a href="#" title="">Link 3</a></li>
</ul>
</div>
<div class="medium-4 columns Logo">
<a href="" title=""><img src="https://placehold.it/64x42" alt=""></a>
</div>
<div class="medium-4 columns Contact">
<ul class="menu">
<li><a href="tel:" title="">Phone: 0777123456</a></li>
<li><a href="mailto:" title="">Email: jog@blogs.com</a></li>
</ul>
</div>
</nav>
</header>
还有我的CSS:
.ProMenu {
background: #0071c5;
width: 100%;
}
.ProMenu .row {
min-height: 60px;
max-width: 100%;
}
.ProMenu ul li a {
color: #FFF;
}
.ProMenu .Logo {
text-align: center;
}
.Contact ul li{
margin-left: auto;
}
JSFiddle:
为了让事情更简单,我已经将代码上传到 online JSfiddle,复制使 window 变大并监控手机号码和电子邮件之间的距离增加......一些东西我想停下来。
从最后一个 child 中删除 margin-left: auto
。只放在倒数第二个child。这将迫使两个元素都向右移动。
当弹性项目 margin-left: auto
时,它会将自己推离其左侧的所有内容。在您的情况下,倒数第二个 child 是有意义的。但是对于最后的child.
这就是为什么当您加宽屏幕时,两者之间的距离会更大。
通过仅在倒数第二个项目上使用 margin-left: auto
,您可以将两个项目打包在一起,一切都会向右移动。然后,如有必要,您可以使用常规(数字)水平边距在它们之间创建 space。
您想利用基础 .align-right
class,它将应用 justify-content: flex-end;