【发布时间】:2019-08-18 01:02:23
【问题描述】:
我无法正确放置物品:
1 - 标题“App name”、“Title 1”和“Title 2”(h1 标签)位于单元格下方而不是上方。
2-div之间的垂直间距很大
我尝试使用几个元素中的属性“玩”:
align-itemsjustify-itemalign-selfjustify-selfmarginpadding
我的代码:
.grid-container {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas: "title1""title2""title3";
background-color: crimson;
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.title1 {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
grid-template-areas: "title1-subtitle1 title1-subtitle2""title1-subtitle3 title1-subtitle4";
grid-area: title1;
background-color: yellow;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title1>div {
background-color: orange;
}
.title1 div>h2,
p {
display: flex;
justify-content: center;
align-items: center;
}
.title1-subtitle1 {
grid-area: title1-subtitle1;
}
.title1-subtitle2 {
grid-area: title1-subtitle2;
}
.title1-subtitle3 {
grid-area: title1-subtitle3;
}
.title1-subtitle4 {
grid-area: title1-subtitle4;
}
.title2 {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-template-areas: "title2-subtitle1 title2-subtitle2";
grid-area: title2;
background-color: green;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title2>div {
background-color: lightblue;
}
.title2 div>h2,
p {
display: flex;
justify-content: center;
align-items: center;
}
.title2-subtitle1 {
grid-area: title2-subtitle1;
}
.title2-subtitle2 {
grid-area: title2-subtitle2;
}
.title3 {
grid-area: title3;
background-color: violet;
grid-column-gap: 15px;
grid-row-gap: 15px;
width: 95%;
align-items: center;
justify-items: center;
align-self: center;
justify-self: center;
margin: auto;
}
.title3>h1,
p {
display: flex;
justify-content: center;
align-items: center;
}
<div class="grid-container">
<h1>App name</h1>
<div class="title1">
<h1>Title 1</h1>
<div class="title1-subtitle1">
<h2>Title 1 - Subtitle 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
<div class="title1-subtitle2">
<h2>Title 1 - Subtitle 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae? Lorem ipsum, dolor
sit amet consectetur adipisicing elit. Eaque, odit aspernatur ea dolores dicta nisi, unde ut dolorem omnis iste blanditiis saepe, dolorum rerum quos consequuntur temporibus veritatis voluptatum accusantium? Lorem ipsum dolor sit amet consectetur
adipisicing elit. Quod qui, incidunt voluptas aperiam corrupti molestiae aut nostrum voluptatem ratione totam dicta, distinctio expedita quaerat magni repellendus aliquid, animi sapiente quo.
</p>
</div>
<div class="title1-subtitle3">
<h2>Title 1 - Subtitle 3</h2>
<p>Lorem
</p>
</div>
<div class="title1-subtitle4">
<h2>Title 1 - Subtitle 4</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
</div>
<div class="title2">
<h1>Title 2</h1>
<div class="title2-subtitle1">
<h2>Title 2 - Subtitle 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
<div class="title2-subtitle2">
<h2>Title 2 - Subtitle 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, nihil ducimus pariatur dolore voluptas repellendus et sed, debitis sit tempore nam blanditiis, accusantium aliquam iusto inventore officia aperiam quos repudiandae?
</p>
</div>
</div>
<div class="title3">
<h1>Title 3</h1>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. A velit in aperiam, expedita nesciunt nemo ea pariatur explicabo laudantium quasi commodi sed laboriosam obcaecati, libero nobis voluptas? Aliquam, possimus. Nemo.
</p>
</div>
</div>
这就是我想要的样子:
【问题讨论】:
-
我不会使用网格。只有使用 flex 才能完成这项工作。尝试 flex-direction: column,然后将标题居中: text-align: center 开始。
-
我用你指出的那些属性解决了两个问题(标题的位置和垂直空间),但现在项目(
h2项目)在另一个之下,而不是在X 行/列数(这是有道理的,因为我修改了 display: grid),我想不出只用 flex 怎么做。 jsfiddle.net/5qa7oxfd