简体   繁体   English

使用 CSS 将背景颜色添加到交替的“n”个元素集

[英]Adding background color to alternate set of 'n' number of elements using CSS

I'm trying to add background color to alternating set of 'n' number of elements.我正在尝试将背景颜色添加到交替的“n”个元素集。 Say for example, the first 'n' number of elements will be red and the next 'n' number of elements will be black and so on.. repeating the loop of red and black.例如,第一个'n'个元素将是红色的,下一个'n'个元素将是黑色的,依此类推......重复红色和黑色的循环。

Please ignore the number 4 in the grid-template-columns: repeat(4, auto) It is supposed to be dynamic请忽略grid-template-columns中的数字4 :repeat(4, auto) 应该是动态的

I can't change the HTML structure nor can I do it using <table>我无法更改 HTML 结构,也无法使用<table>进行更改

Can this be achieved only using css?这只能使用 css 来实现吗?

 .table { margin-bottom: 20rem; border: grey 0.5px solid; display: grid; width: 100%; border-collapse: collapse; }.table-cell { display: flex; align-items: center; padding: 1em; border: grey 1px solid; }.table-cell:nth-child(4n) { background-color: #e0e0e0; }.table-row { grid-template-columns: repeat(4, auto); display: grid; }
 <div class="table"> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> </div>

I would try dividing each row into a table-row then you can use the following styles to set your alternating background-color rule.我会尝试将每一行分成一个table-row ,然后您可以使用以下 styles 来设置您的交替background-color规则。

div.table-row:nth-child(even) {background: #ffd110}
div.table-row:nth-child(odd) {background: #e1e1e1}

I added another row to demonstrate.我添加了另一行来演示。

 .table { margin-bottom: 20rem; border: grey 0.5px solid; display: grid; width: 100%; border-collapse: collapse; }.table-cell { display: flex; align-items: center; padding: 1em; border: grey 1px solid; }.table-row { grid-template-columns: repeat(4, auto); display: grid; } div.table-row:nth-child(even) {background: #ffd110} div.table-row:nth-child(odd) {background: #e1e1e1}
 <div class="table"> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> </div>

Yes using Xn+y but in multiple selectors, this cannot be done with a single selector.是的,使用Xn+y但在多个选择器中,这不能用单个选择器完成。

 .table { margin-bottom: 20rem; border: grey 0.5px solid; display: grid; width: 100%; border-collapse: collapse; }.table-cell { display: flex; align-items: center; padding: 1em; border: grey 1px solid; }.table-cell:nth-child(8n+4), .table-cell:nth-child(8n+3), .table-cell:nth-child(8n+2), .table-cell:nth-child(8n+1) { background-color: #e0e0e0; }.table-row { grid-template-columns: repeat(4, auto); display: grid; }
 <div class="table"> <div class="table-row"> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> <div class="table-cell">content</div> </div> </div>

`.table {
  margin-bottom: 20rem;
  border: grey 0.5px solid;
  display: grid;
  width: 100%;
  border-collapse: collapse;
}

.table-cell {
 display: flex;
 align-items: center;
 padding: 1em;
 border: grey 1px solid;
}

.table-cell:nth-child(2n) {
  background-color: black;
}

.table-cell {
  background-color: red;
}

.table-row {
  grid-template-columns: repeat(4, auto);
  display: grid;
}`


<div class="table">
  <div class="table-row">
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
    <div class="table-cell">content</div>
  </div>
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM