我正在制作flexbox员工ID卡布局。员工的图片将显示在左侧,员工的信息(姓名,员工ID,部门等)将以自上而下的列表格式显示在图片右侧。 / p>
我需要使用flexbox来做这件事。
这是我到目前为止所做的JSFiddle链接:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flexbox Example 1</title>
<style>
.flex-container {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row;
flex-direction: row;
-webkit-align-items: center;
align-items: center;
flex-wrap: wrap;
min-width: 320px;
max-width: 1220px;
}
.flex-item {
height: 120px;
width: 300px;
background-color: #e46119;
border: 1px solid #626262;
margin: 3px;
padding: 10px 0 0 10px;
}
span {
padding-left: 5px;
}
</style>
</head>
<body>
<div class="flex-container">
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
<div class="flex-item"><img src="http://placehold.it/100x100">
<span>Text fields will go here</span>
</div>
</div>
</body>
</html>
http://jsfiddle.net/Hopped_Up_Designs/3teLbqqf
非常感谢任何和所有帮助。谢谢,杰森
答案 0 :(得分:11)
我发现最不引人注目的方法是添加:
.flex-item {
display:flex;
align-items: center;
}
.flex-item img{
flex-grow:0;
flex-shrink:0;
}
如果你在img之后立即添加多个<span>
,他们将继续以行方式显示(如浮动)。但这可能不是你想要的。一个选项可能是将每个项目设置为固定宽度 - 但这会打破flexbox的精神。
但是如果你修改你的文本包装器以包含一个<div>
,我认为你会没事的。除非另有选择,否则<div>
将显示为块级元素。
<div class="flex-item">
<img src="http://placehold.it/100x100">
<div>
<ul>
<li>Text fields will go here</li>
<li>and here</li>
</ul>
</div>
</div>
这是我小提琴的一个分支,我这样做了。 http://jsfiddle.net/Paceaux/7fcqkb50/1/
答案 1 :(得分:2)
只需将您的信息包装在设置为display: inline-block
的容器中:
<强> HTML 强>
<div class="flex-item">
<img src="http://placehold.it/100x100"/>
<div class="info-container">
<p>Field 1</p>
<p>Field 2</p>
<p>Field 3</p>
</div>
</div>
<强> CSS 强>
.info-container{
display: inline-block;
vertical-align: top;
padding: 0 0 0 5px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.info-container p{
padding: 0;
margin: 0 0 10px;
}