当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在两个兄弟姐妹之间应用CSS样式?

如何解决《有没有办法在两个兄弟姐妹之间应用CSS样式?》经验,为你挑选了1个好方法。

为了给我的问题一些背景,我有12个兄弟div,每个代表一年中的一个月.可以在给定时间选择这些div中的0,1或2.选中后,会将一个"有效"类应用于该div.当选择两个div时,我想将样式应用于所选的两个div之间的所有div.

例如.

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

因此,在上面的代码片段中,我想将CSS样式应用于活动月份,以及介于两者之间的所有月份.这在CSS中是否可行,或者我最好使用JS?

编辑:

这不起作用,但我认为它可能在正确的轨道上.

.month.active ~ .month {
    background-color: $color-lighter-text;
    color: #fff;
}

.month.active:nth-child(2) ~ .month {
    background-color: #fff !important;
    color: $color-muted-text !important;
}

Josh Crozier.. 7

您可以选择第一个.month元素后面的所有.active元素,然后通过选择.month第二个元素后面的所有元素来覆盖该样式.active:

.month.active ~ .month,
.active {
  color: #f00;
}
.month.active ~ .month.active ~ .month {
  color: initial;
}
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

但是,如果你想要一个更干净的解决方案,我建议使用JS并.active为你想要定位的所有元素添加一个类.

如果你正在使用jQuery,你可以简单地使用这个.nextUntil()方法:

$('.month.active:first').nextUntil('.active').addClass('active');

$('.month.active:first').nextUntil('.active').addClass('active');
.month.active {
  color: #f00;
}

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec



1> Josh Crozier..:

您可以选择第一个.month元素后面的所有.active元素,然后通过选择.month第二个元素后面的所有元素来覆盖该样式.active:

.month.active ~ .month,
.active {
  color: #f00;
}
.month.active ~ .month.active ~ .month {
  color: initial;
}
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有