html - 基于父类中的数字样式 N 元素
问题描述
我目前正在构建一个仅使用 CSS 和 HTML 的网格,并且有点不稳定。
希望从 colHead 的每个实例中计数,并将负边距应用于以下 2 个 colSpan1 项目。这在第一个上效果很好,但在后面的任何一个都被忽略了。
有没有办法从每个 colHead 计数,而不管它们出现在容器中的什么位置?
循环是动态的,因此没有选项可以在 HTML 中添加额外的类来实现这一点。
可以通过以下方式做到这一点,但它有点混乱(特别是在引入更多列时)并且希望有一种更清洁的方式:
.colCount2 .colHead + .colSpan1, .colCount2 .colHead + .colSpan1 + .colSpan1 { 边距顶部:-2em; }
谢谢你的时间。
[class^="colCount"] { display: grid; grid-gap: 2em; grid-template-columns: repeat(12, 1fr); width: 90%; margin: 0 auto; }
.colCount2 .colHead { grid-column: span 12; }
.colCount2 .colHead ~ .colSpan1:nth-of-type(-n+2) { margin-top: -2em; }
.colCount2 .colSpan1 { grid-column: span 6; }
<div class="colCount2">
<span class="colHead">
<h2>Two Columns (colCount2)</h2>
</span>
<div class="colSpan1">
<p><strong>colSpan1</strong> <br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam aliquam sapien, non auctor orci iaculis sit amet.</p>
</div>
<div class="colSpan1">
<p><strong>colSpan1</strong> <br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam aliquam sapien, non auctor orci iaculis sit amet.</p>
</div>
<div class="colSpan1">
<p><strong>colSpan1</strong> <br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam aliquam sapien, non auctor orci iaculis sit amet.</p>
</div>
<span class="colHead">
<h2>Two Columns (colCount2)</h2>
</span>
<div class="colSpan1">
<p><strong>colSpan1</strong> <br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam aliquam sapien, non auctor orci iaculis sit amet.</p>
</div>
<div class="colSpan1">
<p><strong>colSpan1</strong> <br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam aliquam sapien, non auctor orci iaculis sit amet.</p>
</div>
</div>
解决方案
这听起来像是使用 CSS 预处理器高效编写这些规则的好案例。我不确定我是否正确推断了您想要的网格系统,但是使用SCSS,您可以编写以下内容-</p>
$cols: 2, 3, 4, 6, 12;
@each $col in $cols {
.colCount#{$col} .colHead {
$adjascentSelector: '';
@for $i from 1 through $col {
$adjascentSelector: $adjascentSelector + ' + .colSpan1';
& #{$adjascentSelector} {
grid-column: span (12 / $col);
}
}
}
}
—编译为—</p>
.colCount2 .colHead + .colSpan1 {
grid-column: span 6;
}
.colCount2 .colHead + .colSpan1 + .colSpan1 {
grid-column: span 6;
}
.colCount3 .colHead + .colSpan1 {
grid-column: span 4;
}
.colCount3 .colHead + .colSpan1 + .colSpan1 {
grid-column: span 4;
}
.colCount3 .colHead + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 4;
}
.colCount4 .colHead + .colSpan1 {
grid-column: span 3;
}
.colCount4 .colHead + .colSpan1 + .colSpan1 {
grid-column: span 3;
}
.colCount4 .colHead + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 3;
}
.colCount4 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 3;
}
.colCount6 .colHead + .colSpan1 {
grid-column: span 2;
}
.colCount6 .colHead + .colSpan1 + .colSpan1 {
grid-column: span 2;
}
.colCount6 .colHead + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 2;
}
.colCount6 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 2;
}
.colCount6 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 2;
}
.colCount6 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 2;
}
.colCount12 .colHead + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
.colCount12 .colHead + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 + .colSpan1 {
grid-column: span 1;
}
推荐阅读
- snaplogic - 为什么路由到错误输出的文档在通过 ULTRA 任务使用时会导致管道失败?
- javascript - 如何将变化推送到属性 href
- git - Git:从命令行使用 merge=ours 策略
- javascript - 数据绑定到 *ngFor 内的 mat-slide-toggle 值
- java - 如何在 Eclipse 中将 Spring Boot 应用程序转换为 Dynamic Web 项目?
- python - 如何改进我的代码,使其不显示超时错误
- python - Pandas 将 CSV 中的空单元格识别为 EMPTY SPACE 而不是 nan
- python - 使用 ctypes 传递可变数量的自定义类型参数
- python - 使用未观察到的组件模型模拟时间序列
- angular - Angular:如何使用 agggrid 和 HttpClient delete 从我的 json 服务器中删除用户?