为了给我的问题一些背景,我有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
您可以选择第一个.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