是否有一个CSS网格属性可以在网格列之间添加一条规则(垂直线),在网格行之间添加一条规则(水平线),与列规则的工作方式相同或相似?
是否有一个CSS网格属性可以在网格列之间添加一条规则(垂直线),在网格行之间添加一条规则(水平线),与列规则的工作方式相同或相似?
没有这样的属性。
CSS 网格行和列完全是虚拟的,只为浏览器的布局引擎指示各自区域的起点和终点。
另一个选择是考虑网格和网格单元格的背景颜色。如果您可以为网格的背景着色并为元素应用中性白色,则网格背景将通过
grid-gap
渗透。这有效地让您获得网格规则。
示例:
.grid-container {
background-color: #111; /* color of the line between cells */
display: grid;
grid-gap: 1px; /* size of the line between cells */
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: minmax(min-content, max-content);
padding: 1px; /* size of the line around the grid */
}
.grid-item {
background-color: #fff; /* cells need a bg color for this to work */
min-height: 100px;
}
<section class="grid-container">
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
<div class="grid-item"></div>
</section>
缺点是,您仍然需要根据内容在网格周围进行大量手动填充调整,如果您的网格包含大量内容,背景将会渗透。
但是,对于简单的网格,这种方法比我想象的更有效。
正如@Paulie_D所说,不,没有。你必须做一些像这样可怕的事情才能得到一些东西甚至关闭它 - 如果你这样做,你甚至不能使用
grid-gap
:
#grid{
display: inline-grid;
grid-template-rows: auto 2px auto 2px auto;
grid-template-columns: auto 2px auto 2px auto;
}
.item{
width: 5rem;
height: 5rem;
background: red;
}
.rule{
background:black;
}
<div id="grid">
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
<div class="rule"></div>
<div class="item"></div>
</div>
您可以做的另一个选择是定位特定的 div 并通过使其跨越多个列来将其指定为水平线列。
.wrapper {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
.wrapper>div {
background-color: #eee;
padding: 1em;
}
.fullRow {
grid-column: 1/ 4;
}
<div class="wrapper">
<div>
first column
</div>
<div>
second column
</div>
<div>
third column
</div>
<div class="fullRow">
<hr>
</div>
<div>
first column
</div>
<div>
second column
</div>
<div>
third column
</div>
<div class="fullRow">
<hr>
</div>
</div>
没有纯粹的
grid-*
方式来做到这一点,但你可以在子div
上放置边框,只是不要使用grid-column-gap
(而是使用padding
)。显示一些仅限内部规则的第 n 个子级清理,以及一些自定义的每列文本对齐方式。
.container {
display: grid;
grid-template-columns:
.15fr
.20fr
.05fr
.15fr
.08fr
.1fr
.20fr;
/*grid-column-gap: 0*/
}
.container>div {
border-top: 1px solid gainsboro;
border-left: 1px solid gainsboro;
padding: .2rem .4rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* get rid of leading border (optional) */
.container>div:nth-child(7n+1) {
border-left: unset;
}
/* get rid of top -most border (optional) */
.container>div:nth-child(-n+7) {
border-top: unset;
/* this is could also be the "header" row, bolding etc. goes here*/
}
/* custom per-column text alignments */
.container>div:nth-child(7n+3),
.container>div:nth-child(7n+5) {
text-align: end;
}
<div class="container">
<div>2019-11-14</div>
<div>Nov 10 - 13, 2019</div>
<div>4</div>
<div>Sun - Wed</div>
<div>669</div>
<div>Likely</div>
<div>North Carolina</div>
<div>2019-11-14</div>
<div>Nov 10 - 13, 2019</div>
<div>4</div>
<div>Sun - Wed</div>
<div>627</div>
<div>Likely</div>
<div>Nevada</div>
<div>2019-11-14</div>
<div>Nov 1 - 7, 2019</div>
<div>7</div>
<div>Fri - Thu</div>
<div>347</div>
<div>Adults</div>
<div>North Carolina</div>
<div>2019-11-13</div>
<div>Nov 1 - 13, 2019</div>
<div>13</div>
<div>Fri - Wed</div>
<div>695</div>
<div>Likely</div>
<div>California</div>
</div>
仅使用 ::after 选择器和绝对位置怎么样
.grid-container {
display: grid;
grid-auto-flow: column;
grid-auto-columns: 1fr;
column-gap: 41px;
}
.column {
position: relative;
background: pink;
}
.column::after {
display: block;
content: "";
background: red;
width: 1px;
height: 100%;
position: absolute;
top: 0px;
right: -21px;
}
.column:last-child::after {
display: none;
}
<div class="grid-container">
<div class="column">
Bear claw gingerbread danish chocolate cheesecake icing shortbread.
</div>
<div class="column">
Bear claw gingerbread danish chocolate cheesecake icing shortbread.
</div>
<div class="column">
Bear claw gingerbread danish chocolate cheesecake icing shortbread.
</div>
<div class="column">
Bear claw gingerbread danish chocolate cheesecake icing shortbread.
</div>
</div>
我所做的如下,考虑到我使用了顺风(lo que hice fue lo siguiente,考虑使用顺风):
index.tsx:
<div className='grid grid-cols-5'>
<div className='grid place-content-center'>
<p> </p>
</div>
<div className='grid place-items-center'>
<div className='lineBetween'> </div>
</div>
<div className='grid place-content-center'>
<p> </p>
</div>
<div className='grid place-items-center'>
<div className='lineBetween'> </div>
</div>
<div className='grid place-content-center'>
<img src='' alt='' />
</div>
</div>
这是 css 中的 lineBetween 属性(este es la propiedad lineBetween en css):
.lineBetween {
width: 132%;
height: 0.075vh;
background-color: #2AC46C;
}
通过使用“hr”标签,您可以添加水平线,但要添加垂直线,您必须使用 CSS 给出边框。