带网格布局的边框和中心图标
Border gutters and center icon with grid layout
.hero__grid {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
}
.vertical-line {
height: 169px;
width: 0.5px;
background-color: red;
}
.horizontal-line {
width: 300px;
height: 0.5px;
background-color: red;
}
<div class="hero__grid">
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"><i class="far fa-heart"></i></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell"></div>
</div>
我正在尝试制作这种效果:
起初我只是想做:
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
并以某种方式将这些线条和图标放在那里,但它似乎最终不起作用。
我想做的是制作一个 3x3 的网格,这样就可以了:
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
在自动(第 2 个)行和列 div 中,只放置这些内容,但我觉得不合适。我知道 CSS 并不完美,所以也许这实际上是处理它的最佳方式?
如何在网格单元格之间制作边框(或线条)以达到这种效果?
我试过 border-bottom
但它需要完整的 width/height.
如何将心形图标放在边框中间的图标之间?
此方法使用 grid-gap
作为行和列之间的间距。
心形图标 positioned absolutely and transformed 向上和向左一半大小。
body {
font-family: sans-serif;
font-size: 10px;
}
.hero__grid {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
grid-gap: 2.4em;
width: 500px;
}
.vertical-line,
.horizontal-line {
background-color: #BBB;
}
.vertical-line {
height: 100%;
width: 0.5px;
}
.horizontal-line {
height: 0.5px;
}
.hero__grid-cell {
position: relative;
}
.cell-content {
padding: 0.8em 0;
}
.hero__grid-cell .far {
position: absolute;
top: 0;
left: 0;
transform: translate(-50%, -50%);
color: #e56260;
font-size: 2.4em;
}
h1 {
font-size: 1.5em;
margin: 0 0 0.3em;
}
p {
font-size: 1.3em;
margin: 0;
color: gray;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
<div class="hero__grid">
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Donec sollicitudin molestie malesuada.</p>
</div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Praesent sapien massa, convallis.</p>
</div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"><i class="far fa-heart"></i></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Cras ultricies ligula sed magna dictum porta.</p>
</div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Vivamus suscipit tortor eget felis porttitor.</p>
</div>
</div>
gap (grid-gap)
The gap CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for row-gap and column-gap.
.hero__grid {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
}
.vertical-line {
height: 169px;
width: 0.5px;
background-color: red;
}
.horizontal-line {
width: 300px;
height: 0.5px;
background-color: red;
}
<div class="hero__grid">
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"><i class="far fa-heart"></i></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"></div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell"></div>
</div>
我正在尝试制作这种效果:
起初我只是想做:
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
并以某种方式将这些线条和图标放在那里,但它似乎最终不起作用。 我想做的是制作一个 3x3 的网格,这样就可以了:
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
在自动(第 2 个)行和列 div 中,只放置这些内容,但我觉得不合适。我知道 CSS 并不完美,所以也许这实际上是处理它的最佳方式?
如何在网格单元格之间制作边框(或线条)以达到这种效果?
我试过border-bottom
但它需要完整的 width/height.如何将心形图标放在边框中间的图标之间?
此方法使用 grid-gap
作为行和列之间的间距。
心形图标 positioned absolutely and transformed 向上和向左一半大小。
body {
font-family: sans-serif;
font-size: 10px;
}
.hero__grid {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
grid-gap: 2.4em;
width: 500px;
}
.vertical-line,
.horizontal-line {
background-color: #BBB;
}
.vertical-line {
height: 100%;
width: 0.5px;
}
.horizontal-line {
height: 0.5px;
}
.hero__grid-cell {
position: relative;
}
.cell-content {
padding: 0.8em 0;
}
.hero__grid-cell .far {
position: absolute;
top: 0;
left: 0;
transform: translate(-50%, -50%);
color: #e56260;
font-size: 2.4em;
}
h1 {
font-size: 1.5em;
margin: 0 0 0.3em;
}
p {
font-size: 1.3em;
margin: 0;
color: gray;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
<div class="hero__grid">
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Donec sollicitudin molestie malesuada.</p>
</div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Praesent sapien massa, convallis.</p>
</div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell"><i class="far fa-heart"></i></div>
<div class="hero__grid-cell">
<div class="horizontal-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Cras ultricies ligula sed magna dictum porta.</p>
</div>
<div class="hero__grid-cell">
<div class="vertical-line"></div>
</div>
<div class="hero__grid-cell cell-content">
<h1>Heading</h1>
<p>Vivamus suscipit tortor eget felis porttitor.</p>
</div>
</div>
gap (grid-gap)
The gap CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for row-gap and column-gap.