jsv*_*jsv 7 html css html5 css3 css-grid
这是我尝试创建伪表,使用<dl>
和display: grid
.
实际上,它的工作原理.唯一的问题是,我被迫使用丑陋的方式来定义行.这是完全手动的方式.因此,如果我在表格中有30行,那么dt + dd + ... + dd
对每一行重复都会非常愚蠢.
如何解决这个问题?
(我不想使用真正的表,因为它适用于Markdown).
dl {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
dt {
text-align: center;
}
dd {
margin-left: 0;
}
dt, dd {
border: 1px solid lightgray;
padding: 0 1em;
}
/* Ugly part
* (Red, yellow, and green colors are just for demo)
*/
dt {
grid-row-start: 1;
}
dt + dd {
grid-row-start: 2;
color: rgb(244, 67, 54);
}
dt + dd + dd {
grid-row-start: 3;
color: rgb(255, 152, 0);
}
dt + dd + dd + dd {
grid-row-start: 4;
color: rgb(76, 175, 80);
}
Run Code Online (Sandbox Code Playgroud)
<dl>
<dt><p>Term 1</p></dt>
<dd>
<p>Definition of term 1 long long long long</p>
<p>Lorem ipsum...</p>
<p>Lorem ipsum...</p>
<p>Lorem ipsum...</p>
</dd>
<dd><p>Definition of term 1</p></dd>
<dd><p>Definition of term 1</p></dd>
<dt><p>Term 2</p></dt>
<dd><p>Definition of term 2</p></dd>
<dd><p>Definition of term 2</p></dd>
<dd><p>Definition of term 2</p></dd>
<dt><p>Term 3</p></dt>
<dd><p>Definition of term 3</p></dd>
<dd><p>Definition of term 3</p></dd>
<dd><p>Definition of term 3</p></dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
假设......你使用的是Firefox或Chrome,而不是IE/Edge:p,这是一个有效的解决方案,每个术语包含任意数量的术语和任意数量的定义:
➡️ Codepen
说明:
grid-auto-flow: column;
dt { grid-row-start: 1 }
就像"下一栏请"grid-template-rows: repeat(50, min-content);
grid-auto-columns: 1fr;
dl {
display: grid;
grid-auto-flow: column;
/* doesn't assume 3 terms but N */
grid-auto-columns: 1fr;
grid-template-rows: repeat(50, min-content); /* doesn't assume 3 defs but M<50 */
}
dt {
grid-row-start: 1; /* reset, next column */
}
Run Code Online (Sandbox Code Playgroud)