当悬停 class 中的任何一个元素时,class 中的所有元素都会改变颜色
All elements in class change colour when any one element in class is hovered
http://jsfiddle.net/meh/tdmdunpn/1/
.c1:hover {background-color: #b00806}
我希望这个 flex table(不是实际的 table)的所有单元格都带有 class .c1,以便在任何一个时将背景颜色更改为浅红色带有 class .c1 的元素悬停。
我希望使用不含 JS 的纯 CSS,但如果有必要,我愿意使用。
请不要建议使用实际的 table,因为这对我来说很不方便。
你需要 Javascript 才能做到这一点。
如果您对 Jquery 感兴趣,我可能会根据现有选择器切换一个新的 class 来管理它。
.slide:hover, .slideHover {
background-color: rgba(176,8,6,0.45);
}
$( ".c1" ).hover(function() {
$(".c1" ).toggleClass("slideHover");
});
$( ".c1" ).hover(function() {
$(".c1" ).toggleClass("slideHover");
});
#slider {
clear: both;
width: 100%; margin-left: auto; margin-right: auto;
height: 250px;
display: flex;
flex: 0 1 auto;
flex-direction: column;
flex-wrap: no-wrap;
background-color: white;
box-sizing: border-box;
}
.slide {
height: 100%;
min-width: 100%;
width: 33.3%;
border: thin black solid;
border-right: medium black solid;
border-left: medium black solid;
flex-grow: 1;
display: flex;
flex: 0 1 auto;
flex-flow: no-wrap row;
box-sizing: border-box;
}
.slide:hover, .slideHover {
background-color: rgba(176,8,6,0.45);
}
.slide:first-child {
border-bottom: medium #b00806 solid;
border-top: medium black solid;
}
.slide:last-child {
border-bottom: medium black solid;
}
.row {
border-right: thin black solid;
flex-grow: 1;
box-sizing: border-box;
}
.row:first-child {
flex-grow: 3;
}
.row:nth-child(2) {
flex-grow: 2;
}
.row:nth-child(3) {
flex-grow: 2;
}
.row:last-child {
border-right: none;
}
.row:hover {
background-color: rgba(143,6,4,0.48);
}
.tab1text {
line-height: 100%;
width: 100%;
padding: 5px;
}
.row {
width: 1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="tab-content1" class="tab-content">
<div id="w1"><div id="slider">
<div class="slide">
<div class="row c1"><a class="tab1text" href=""></a></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
我认为使用纯 css 是不可能的。您可以使用以下 jquery 代码来实现此目的:
$(document).ready(function () {
$(".c1").hover(function () {
$(".c1").css("background-color", "rgba(176,8,6,0.45)");
}, function () {
$(".c1").css("background-color", "white");
});
});
说明:当我们将鼠标悬停在 ".c1"
上时,它会将 background-color
更改为任何颜色(例如浅红色),在 hover out
上它将更改为 'white'
再次按照 hover()
.
的第二部分指定
查看更新后的 fiddle:“http://jsfiddle.net/tdmdunpn/12/”
http://jsfiddle.net/meh/tdmdunpn/1/
.c1:hover {background-color: #b00806}
我希望这个 flex table(不是实际的 table)的所有单元格都带有 class .c1,以便在任何一个时将背景颜色更改为浅红色带有 class .c1 的元素悬停。
我希望使用不含 JS 的纯 CSS,但如果有必要,我愿意使用。
请不要建议使用实际的 table,因为这对我来说很不方便。
你需要 Javascript 才能做到这一点。
如果您对 Jquery 感兴趣,我可能会根据现有选择器切换一个新的 class 来管理它。
.slide:hover, .slideHover {
background-color: rgba(176,8,6,0.45);
}
$( ".c1" ).hover(function() {
$(".c1" ).toggleClass("slideHover");
});
$( ".c1" ).hover(function() {
$(".c1" ).toggleClass("slideHover");
});
#slider {
clear: both;
width: 100%; margin-left: auto; margin-right: auto;
height: 250px;
display: flex;
flex: 0 1 auto;
flex-direction: column;
flex-wrap: no-wrap;
background-color: white;
box-sizing: border-box;
}
.slide {
height: 100%;
min-width: 100%;
width: 33.3%;
border: thin black solid;
border-right: medium black solid;
border-left: medium black solid;
flex-grow: 1;
display: flex;
flex: 0 1 auto;
flex-flow: no-wrap row;
box-sizing: border-box;
}
.slide:hover, .slideHover {
background-color: rgba(176,8,6,0.45);
}
.slide:first-child {
border-bottom: medium #b00806 solid;
border-top: medium black solid;
}
.slide:last-child {
border-bottom: medium black solid;
}
.row {
border-right: thin black solid;
flex-grow: 1;
box-sizing: border-box;
}
.row:first-child {
flex-grow: 3;
}
.row:nth-child(2) {
flex-grow: 2;
}
.row:nth-child(3) {
flex-grow: 2;
}
.row:last-child {
border-right: none;
}
.row:hover {
background-color: rgba(143,6,4,0.48);
}
.tab1text {
line-height: 100%;
width: 100%;
padding: 5px;
}
.row {
width: 1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="tab-content1" class="tab-content">
<div id="w1"><div id="slider">
<div class="slide">
<div class="row c1"><a class="tab1text" href=""></a></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
<div class="slide">
<div class="row c1"></div>
<div class="row"></div>
<div class="row"></div>
<div class="row"></div>
</div>
我认为使用纯 css 是不可能的。您可以使用以下 jquery 代码来实现此目的:
$(document).ready(function () {
$(".c1").hover(function () {
$(".c1").css("background-color", "rgba(176,8,6,0.45)");
}, function () {
$(".c1").css("background-color", "white");
});
});
说明:当我们将鼠标悬停在 ".c1"
上时,它会将 background-color
更改为任何颜色(例如浅红色),在 hover out
上它将更改为 'white'
再次按照 hover()
.
查看更新后的 fiddle:“http://jsfiddle.net/tdmdunpn/12/”