我在div里面有一个复选框。div类名称是main。当我选中复选框时,我试图将背景颜色设置为main classname。但无法将背景颜色设置为.main classname。
如果我选中了复选框,它将看起来像下面。
如果我取消选中复选框,它将看起来像下面。
超文本标记语言:
<div class="main">
<input type="checkbox" id="maincheck">{{item.title}}
</div>
CSS:
.main input[id='maincheck']:checked:after{
background-color: #ccc;
}
如何使用CSS实现?演示:https://stackblitz.com/edit/angular-checkbox-example-mhvnkb?file=app%2Fapp.component.html
2条答案
按热度按时间7fhtutme1#
听起来你想改变复选框的父元素的背景颜色。这可以重新表述为'*if .main contains a checked checkbox then..'。在CSS中,你可以使用
:has()
伪类来选择一个元素,该元素有一个特定的子元素:但请注意,在撰写本文时,Firefox还不支持此功能。(见https://caniuse.com/css-has)
另一种方法是将复选框移动到其父复选框之前。然后,您可以使用next-sibling combinator(
+
)来选择直接跟随复选框的div:axzmvihb2#
你不能只使用CSS直接改变父元素的样式,所以你必须使用JavaScript或jQuery。
下面是一个JavaScript方法:
当你选中这个复选框时,.main div的背景颜色将变为#ccc,当你取消选中它时,背景将恢复为透明。