CSS 如何使我的 div 元素排列完美,以便它们共同构成一个完美的矩形?
CSS How do I make my div elements lineup perfectly so that collectively they make up a perfect rectangle?
虽然我对任何解决方案都持开放态度,但我非常感谢计算表、Bootstrap 和 Flexbox,仅使用 div 元素的纯 CSS 解决方案。
HTML
<div class="sentence-summary">
<div class="stat bookmarked">
<i class="fas fa-bookmark"></i>
<span class="count">999</span>
</div>
<div class="stat upvotes">
<i class="fas fa-thumbs-up"></i>
<span class="count">999</span>
</div>
<div class="stat downvotes">
<i class="fas fa-thumbs-down"></i>
<span class="count">999</span>
</div>
<div class="main">
<p>{{ $sentence->body }}</p>
</div>
</div>
SCSS
.sentence-summary {
div {
display: inline-block;
}
.stat {
width: 40px;
text-align: center;
span {
display: block;
font-size: 10px;
}
&.bookmarked {
background-color: red;
}
&.upvotes {
background-color: blue;
}
&.stat.downvotes {
background-color: pink;
}
}
.main {
background-color: green;
}
}
当前结果
想要的结果
我建议为此使用网格布局。您可以指定前三列(统计数据)的宽度应为 40 像素。然后用 '1fr' 表示 'main' 部分应该占用剩余的 space。使用网格意味着高度将保持不变。
您可以使用 'grid-column-gap' 指定每列之间的 space 数量。像这样:
.sentence-summary {
display: grid;
grid-template-columns: 40px 40px 40px 1fr;
column-gap: 5px;
grid-auto-rows: 40px;
}
确保使用适当的浏览器前缀,因为并非所有浏览器都支持此语法。我一般用this auto-prefixer.
更新: 添加网格自动行:40px;确保您的 'stats' 保持正方形!
虽然我对任何解决方案都持开放态度,但我非常感谢计算表、Bootstrap 和 Flexbox,仅使用 div 元素的纯 CSS 解决方案。
HTML
<div class="sentence-summary">
<div class="stat bookmarked">
<i class="fas fa-bookmark"></i>
<span class="count">999</span>
</div>
<div class="stat upvotes">
<i class="fas fa-thumbs-up"></i>
<span class="count">999</span>
</div>
<div class="stat downvotes">
<i class="fas fa-thumbs-down"></i>
<span class="count">999</span>
</div>
<div class="main">
<p>{{ $sentence->body }}</p>
</div>
</div>
SCSS
.sentence-summary {
div {
display: inline-block;
}
.stat {
width: 40px;
text-align: center;
span {
display: block;
font-size: 10px;
}
&.bookmarked {
background-color: red;
}
&.upvotes {
background-color: blue;
}
&.stat.downvotes {
background-color: pink;
}
}
.main {
background-color: green;
}
}
当前结果
想要的结果
我建议为此使用网格布局。您可以指定前三列(统计数据)的宽度应为 40 像素。然后用 '1fr' 表示 'main' 部分应该占用剩余的 space。使用网格意味着高度将保持不变。
您可以使用 'grid-column-gap' 指定每列之间的 space 数量。像这样:
.sentence-summary {
display: grid;
grid-template-columns: 40px 40px 40px 1fr;
column-gap: 5px;
grid-auto-rows: 40px;
}
确保使用适当的浏览器前缀,因为并非所有浏览器都支持此语法。我一般用this auto-prefixer.
更新: 添加网格自动行:40px;确保您的 'stats' 保持正方形!