【发布时间】:2018-06-28 17:02:30
【问题描述】:
我已经构建了 flexbox 网格,并且想知道设置在某个点重复的结构或某种模式的最佳实践是什么。现在我正在使用 :nth-child 选择器。但我想避免数百个仅用于网格的选择器。
这是我制作的一个简单示例:
代码:
main {
position: relative;
margin: 0 auto 0 auto;
width: 100%;
}
.row {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: center;
align-items: flex-end;
align-content: flex-end;
}
.item {
margin: 50px 20px;
text-align: center;
position: relative;
}
.item img {
width: 100%;
}
.projectTitle {
position: absolute;
width: 95%;
top: 100%;
}
.item:nth-child(1) {
width: 26%;
}
.item:nth-child(2) {
width: 27%;
}
.item:nth-child(3) {
width: 26%;
}
.item:nth-child(4) {
width: 29%;
}
.item:nth-child(5) {
flex-basis: 27%;
}
.item:nth-child(6) {
flex-basis: 26%;
}
.item:nth-child(7) {
flex-basis: 36%;
}
.item:nth-child(8) {
flex-basis: 36%;
}
.item:nth-child(9) {
width: 26%;
}
.item:nth-child(10) {
flex-basis: 29%;
}
.item:nth-child(11) {
flex-basis: 26%;
}
.item:nth-child(12) {
flex-basis: 75%;
}
.item:nth-child(13) {
width: 26%;
}
.item:nth-child(14) {
flex-basis: 29%;
}
.item:nth-child(15) {
flex-basis: 26%;
}
<main>
<div class="row">
<div class="item">
<img src="http://via.placeholder.com/875x1200">
<div class="projectTitle">
Hello<br><span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/480x655">
<div class="projectTitle">
Hello<br><span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/475x650">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/800x450">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/875x625">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/655x480">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/475x650">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/800x450">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/520x250">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/475x625">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/480x655">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/480x655">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/475x625">
<div class="projectTitle">
Hello<span>Title</span>
</div>
</div>
<div class="item">
<img src="http://via.placeholder.com/480x655">
<p>Title</p>
</div>
<div class="item">
<img src="http://via.placeholder.com/480x655">
<p>Title</p>
</div>
</main>
CODEPEN: https://codepen.io/Dennisade/pen/gzVZjL?editors=1100
如果能在这里得到一些建议会非常好:)
【问题讨论】:
-
这里的模式是什么?
-
我必须使用第 n 个子选择器一个接一个地重复网格。但我想避免这种情况。我希望它更像这样: 第一行: 3 个缩略图 第二行: 1 个缩略图 第 3 行:2 个缩略图 重复此 ^
-
但无需编写数百个选择器
-
你为什么不试试 Sass
-
你可以参考这个链接css-tricks.com/loops-css-preprocessors。希望对你有帮助
标签: html css sass css-selectors