我希望实现以下布局:
这是我用网格对其进行拍照的方式:
这是我的起始HTML:
.title-container {
display: flex;
justify-content: center;
background: red;
}
.title-item {
flex-basis: 75%;
}
.data-container {
display: flex;
justify-content: center;
background: blue;
}
.column-items {
flex-basis: 70%;
display: flex;
flex-direction: row;
}
.column-1-item {
background: green;
flex-grow: 0.5;
}
.column-2-item {
background: yellow;
flex-grow: 0.1;
align-self: center;
}
.column-3-item {
background: orange;
flex-grow: 1;
}
<div class="title-container">
<div class="title-item">
<h2>Title</h2>
<p>This is some text</p>
</div>
</div>
<div class="data-container">
<div class="column-items">
<div class="column-1-item">
<p>Heading1</p>
<p>SomeText</p>
</div>
<div class="column-2-item">
<p>--></p>
</div>
<div class="column-3-item">
<p>Heading1</p>
<input type="text" name="lname">
</div>
</div>
</div>
我试图对此进行扩展,但是无论我尝试什么,我最终都离我的设计越来越远,使我认为我的初始设计(以及对灵活性的理解)有问题。如果添加其他“行”,则会破坏我的布局。我还认为我的data-container
设置错误,因为这将占用比我想要的空间还要多的空间
这里是code pen。
有人可以帮助我更接近我的设计吗?
答案 0 :(得分:0)
您的.data-container
只需要一个flex-direction: column;
,因为您想堆叠.column-items
。
答案 1 :(得分:0)
我会将整个html包装在wrapper
类中,以便您可以像这样获得页面的总体布局:
<div class="wrapper">
<div class="title-container">
<h2>Title</h2>
<p>
Subtitle should be aligned with title
</p>
</div>
<div class="form-container">
<div class="item">
<div class="column">
<p>Heading1</p>
<p>Some Text</p>
</div>
<div class="column">
<p>-></p>
</div>
<div class="column">
<p>Heading1</p>
<p>[ input textfield ]</p>
</div>
</div>
<div class="item">
<div class="column">
<p>Heading3</p>
<p>Some Text</p>
</div>
<div class="column">
<p>-></p>
</div>
<div class="column">
<p>Heading2</p>
<p>[ input textfield ]</p>
</div>
</div>
<div class="item">
<div class="column">
<p>Heading3</p>
<p>Some Text</p>
</div>
<div class="column">
<p>-></p>
</div>
<div class="column">
<p>Heading3</p>
<p>[ input textfield ]</p>
</div>
</div>
<div class="item">
<div class="column"></div>
<div class="column"></div>
<div class="column submit-button">
<p>[ Button ]</p>
</div>
</div>
</div>
</div>
然后,您可以使用title-container
属性为form-container
和width
指定宽度。通过使表单容器中的每个item
类具有display: flex
属性,可以将子column
类的格式设置为具有flex-grow: 1
,以便它们可以填充可用空间。然后,css如下所示:
.wrapper {
display: flex;
flex-direction: column;
align-items: center;
outline: 1px solid red;
}
.title-container {
width: 70%;
outline: 1px solid red;
}
.form-container {
width: 50%;
outline: 1px solid red;
}
.item {
display: flex;
outline: 1px solid red;
}
.column {
/* flex-grow: 1; */
flex: 1 1 0px;
outline: 1px solid red;
}
.submit-button {
display: flex;
align-items: flex-end;
justify-content: flex-end;
}
或者,您可以从flex-grow: 1
类中删除column
属性,并将justify-content: space-between
添加到item
类中,以得到与示例类似的结果。
这是codepen。