为了账号安全,请及时绑定邮箱和手机立即绑定

左,中和右对齐3个不相等的块

左,中和右对齐3个不相等的块

一只萌萌小番薯 2020-02-02 15:10:40
我正在尝试对齐包含3个内容块的顶部菜单。我想要实现的是:块1:左对齐块2:水平居中块3:右对齐如果所有3个块的大小都相同,则可以使用flexbox(如代码段中所示),但它们不是,所以不会产生我需要的输出。相反,flexbox在3个块之间放置了相等的空间-导致中间块偏离中心对齐。我想知道这是否可以使用flexbox来实现,如果不能,则可以采用另一种解决方案。这需要在生产中稳健地工作,因此由于支持不足,因此不适用“网格”解决方案。.container {  margin: 20px 0;}.row {  background-color: lime;  display: flex;  justify-content: space-between;}.item {  background-color: blue;  color: #fff;  padding: 16px;}<div class="container">  <div class="row">    <div class="item">left, slightly longer</div>    <div class="item">center, this item is much longer</div>    <div class="item">right</div>  </div></div>
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以考虑flex-grow:1;flex-basis:0%使用left和right元素,然后text-align在其中对齐内容。我添加了一个额外的包装程序,以仅在文本周围保留背景。


诀窍是通过仅删除中间内容并将其均分为左元素和右元素来计算可用空间。


.container {

  margin: 20px 0;

  padding-top:10px;

  background:linear-gradient(#000,#000) center/5px 100% no-repeat; /*the center*/

}


.row {

  background-color: lime;

  display: flex;

  color: #fff;

}


.item:not(:nth-child(2)) {

  flex-basis: 0%;

  flex-grow: 1;

}


.item:last-child {

  text-align: right;

}


.item span{

  background-color: blue;

  display:inline-block;

  padding: 16px;

  height:100%;

  box-sizing:border-box;

}

<div class="container">

  <div class="row">

    <div class="item"><span>left, slightly longer</span></div>

    <div class="item"><span>center, this item is much longer</span></div>

    <div class="item"><span>right</span></div>

  </div>

</div>

您也可以通过使元素保持关闭来执行相同的操作。只需调整文本对齐即可:


.container {

  margin: 20px 0;

  padding-top:10px;

  background:linear-gradient(#000,#000) center/5px 100% no-repeat; /*the center*/

}


.row {

  background-color: lime;

  display: flex;

  color: #fff;

}


.item:not(:nth-child(2)) {

  flex-basis: 0%;

  flex-grow: 1;

}


.item:first-child {

  text-align: right;

}


.item span{

  background-color: blue;

  display:inline-block;

  padding: 16px;

  height:100%;

  box-sizing:border-box;

}

<div class="container">

  <div class="row">

    <div class="item"><span>left, slightly longer</span></div>

    <div class="item"><span>center, this item is much longer</span></div>

    <div class="item"><span>right</span></div>

  </div>

</div>


查看完整回答
反对 回复 2020-02-02
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您能否给flex-grow:1作为商品类别并检查


.item {

background-color: blue;

color: #fff;

padding: 16px;

flex-grow:1;

}

希望这是您要寻找的


查看完整回答
反对 回复 2020-02-02
  • 2 回答
  • 0 关注
  • 549 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信