CSS能不能一次性定义多个DIV的背景颜色?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS能不能一次性定义多个DIV的背景颜色?相关的知识,希望对你有一定的参考价值。

就像A盒子里面有4个小盒子abcd,CSS有没有像数组那样逐个定义的功能?
例子:
<div class="A">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>
</div>
.A逐个定义里面的背景颜色

这得看你设定的颜色是否存在规律,如果是杂乱无章的那就只能一个个来设定了。比方说第一个是红色,第二个是黄色,第三个是蓝色,第四个是红色,第五个是黄色,第六个是蓝色……也就是红黄蓝这样循环变化的,可以这样:

<style>
.A div:nth-child(3n+1) color:red
.A div:nth-child(3n+2) color:yellow
.A div:nth-child(3n+3) color:blue
</style>
<div class="A">
<div>111</div>
<div>222</div>
<div>333</div>
<div>444</div>
<div>555</div>
<div>666</div>
<div>777</div>
<div>888</div>
<div>999</div>
</div>

如果想再复杂一些的,那就只能通过js代码来实现了。

参考技术A css预编译工具可以。sass

如何更改在 ngFor 中单击的每个 div 的背景颜色?

【中文标题】如何更改在 ngFor 中单击的每个 div 的背景颜色?【英文标题】:How do I change the background color of every div clicked inside ngFor? 【发布时间】:2022-01-23 09:24:24 【问题描述】:

我目前在 ngFor 中有一些自定义过滤器芯片,目前我将它们设置为一次只允许一个芯片在您单击它时更改背景颜色。我想更改此设置,以便我可以选择多个芯片并让其中多个芯片在选择时更改背景颜色。我应该如何处理?

HTML:

<div *ngFor="let category of categories; let i = index" class=" filter-chips px-3"
    (click)="active = i; chipAdded(category)" [ngClass]="active === i ? 'chip-clicked': '' ">
      category
</div>

组件:

active: any;

CSS:

.filter-chips 
  min-width: 50px;
  height: 30px;
  background-color: grey;
  border: 1px solid $grey-04;
  box-sizing: border-box;
  border-radius: 24px;
  text-align: center;
  color: $grey-02 !important;
  cursor: pointer;


.chip-clicked 
  background-color: green;
  color: white !important;
  border-color: white !important;

【问题讨论】:

【参考方案1】:

试试下面的代码。

onChildSelect(Child)

    for (let myChild of this.children) 
        myChild.BackgroundColour = "white";
    

    Child.BackgroundColour = "red";
<li style="cursor: pointer" class="list-group-item" 
    *ngFor="let Child of children" (click)="onChildSelect(Child)" 
    [style.background-color]="Child.BackgroundColour" >

【讨论】:

【参考方案2】:

您可以将active 更改为一组数字,以跟踪所有选定的categories。然后你可以用active.includes(i)检查category是否被选中。

TypeScript 文件:

public categories = ['Category 1', 'Category 2', 'Category 3'];
public active: number[] = [];

chipAdded(index: number): void 
  if (this.active.includes(index)) 
    this.active = this.active.filter((item) => item !== index);
   else 
    this.active.push(index);
  

HTML 文件:

<div *ngFor="let category of categories; let i = index" class="filter-chips px-3"
  (click)="category.active = true; chipAdded(category)" [ngClass]="category && category.active ? 'chip-clicked': '' ">
    category
</div>

Working example

【讨论】:

以上是关于CSS能不能一次性定义多个DIV的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

DIV+CSS中复选框的背景颜色不显示,但是边框显示,为啥?

css怎样仅设置div元素背景透明度,而不设置div元素里面元素的透明度

jquery如何使css设定好背景颜色的div去掉背景颜色?

div背景颜色怎样渐变 css实现div层背景颜色渐变代码

透明背景div上的背景颜色过渡效果?

css中,div的background-image和img的图片可以放大或者缩小像素吗?