【问题标题】:CSS Flexbox: Aligning Children of Flex ItemsCSS Flexbox:对齐 Flex 项的子项
【发布时间】:2018-09-20 19:40:21
【问题描述】:

我将 Flexbox 与 flex-wrap 一起使用,这样当 flex-items 的宽度相等时,项目将被包裹以使布局响应。

我希望实现姓名、电子邮件和电话水平对齐。

注意:虽然我可以将phone 变成另一个div 并应用justify between,但这不会使电子邮件对齐(以防名称太长)。我们有办法在保留环绕的同时保留网格吗?

#container {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}

.employee {
  flex: 1;
  width: 20em;
  flex-direction: column;
  align-items: center;
  word-wrap: break-word;
}

http://jsfiddle.net/9g41t4g8/

$( () => {
	fetch("https://randomuser.me/api/?results=10&nat=us&inc=name,picture,email,phone&seed=abc")
  	.then( r => r.json() )
    .then(
    	j => {
      	j.results.map( (e, i) => {
        	$("#employee").clone(true)
        		.appendTo($("#container"))
            .attr( 'id', "employee_"+i )
            .find("img").attr( "src", e.picture.thumbnail ).end()
            .find(".name").text( e.name.first + " " + e.name.last ).end()
            .find(".email").text( e.email.repeat(i) ).end()
            .find(".phone").text( e.phone ).end()
            .show()
        })
      	
      }
    )
})
#container {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}

.employee {
  flex: 1;
  width: 20em;
  flex-direction: column;
  align-items: center;
  word-wrap: break-word;
}

#employee {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="container">
  <div class="employee" id="employee">
    <img/>
    <div class="name">
      Name
    </div>
    <div class="email">
      Email
    </div>
    <div class="phone">
      Phone
    </div>
  </div>

</div>

【问题讨论】:

  • 尝试如下设置电子邮件、电话、标题的最小高度。
  • 抱歉,我不明白“关注”是什么意思。附带说明一下,对于员工姓名,它的范围可以从 1 行到 3 行,如果我将 min-height 设置为 3 行,那么会有 1 行名称的行,然后是 2 个空行,看起来不适合...
  • 是的,没有任何空格如何使所有电子邮件,电话在同一行。
  • 请参考这里:jsfiddle.net/7gvscLy0 所以如果min-height 的名字是3-line 那么可能有太多额外的空行。虽然table 可以实现我的目标,但它没有响应(它不会将每行 3 个数据变成 2 个)。我想知道这是否可以实现。
  • 显示:网格是一个选项吗?

标签: css flexbox alignment text-alignment


【解决方案1】:

稍微清理了您的代码。将flex-basis 和min-width 引入.employee 以保持员工大小以匹配不同的屏幕大小。 .employee 变为

.employee {
  min-width: 0%;
  flex-basis:30%;
  height:auto;
  border:1px solid;
  flex-direction: column;
  word-wrap: break-word;
}

首先,员工之间的数据不同。有些员工没有电话数据,但有几封电子邮件。清理数据将具有跨屏幕尺寸的预期输出。

如果您必须处理未清理的数据并希望将详细信息保留在同一行中?将flex: 1 引入更新的.employee 类。但是员工框看起来会变形

.employee {
  flex: 1;
  min-width: 0%;
  flex-basis:30%;
  height:auto;
  border:1px solid;
  flex-direction: column;
  word-wrap: break-word;
}

小提琴:http://jsfiddle.net/7qgnjj00/5/

【讨论】:

  • 谢谢。使用 Chrome,我看到它垂直对齐,但是对于第二行(jayden ferguson,rhonda henry,terra moore),电话号码(详细信息)不在同一行。我需要水平对齐,垂直只是一个加号。有什么想法吗?
  • 这是因为电子邮件内容而发生的。对于提到的名称,电子邮件内容各不相同。在同一行上实现的一种方法是为电子邮件设置一个水平滚动条。
猜你喜欢
  • 2018-12-03
  • 2017-09-30
  • 1970-01-01
  • 2018-12-23
  • 2016-09-08
  • 2018-07-05
  • 1970-01-01
  • 2022-01-26
  • 2021-10-29
相关资源
最近更新 更多