html - 是否可以同时使用 ~ 和 + 选择器?
问题描述
出于演示目的说我有 html 像:
<input type="checkbox" id='hi'>
<label for="hi"> hi </label>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
和相应的CSS为
ul {
display:none;
}
input[type='checkbox']:checked ~ul{
display:inline-block;
background-color:red;
}
input[type='checkbox']:checked +label {
background-color:red;
}
这个想法是,当复选框被选中时,我希望带有文本“hi”的标签具有红色的背景色,并显示一个具有红色背景色的 ul。
如上所示,我需要复制代码以在每个 :checked 之后有一个 ~ul 和 +label
很想知道这是否可以组合,即只使用 :checked 在上面一次而不是两次,以任何方式?
解决方案
不,当您需要将不同的属性应用于不同的选择器时,没有办法在纯 CSS 中的一条规则中做到这一点。这就是为什么人们有时会选择使用编译成 CSS 的语言,比如 Sass 或 Less。
input[type='checkbox']:checked {
& ~ ul, & + label {
background-color: red;
}
& ~ ul {
display: inline-block;
}
}
主要的好选择是更改您的 HTML 结构,使选择器更自然。
推荐阅读
- windows - 如何在 Windows 上使用 Microsoft Visual Studio 编译 GNU Radio 应用程序
- txt - 如何在冗长的文档中删除无效的 ASCII 码。请具体说明
- swift - 为什么有些人会继续显示工作表,而同一个故事板中的另一个人会显示工作表而不执行和编码
- php - 共享php源文件而不共享密码到SQL server
- python - 将“object”转换为“float”后,所有值都是 NaN - 如何解决这个问题?
- linux-kernel - 使用 KASLR 内核功能时,内核无法分配 crashkernel 内存
- php - PHPUnit 使用具有依赖关系的自定义验证器测试 Laminas 表单
- postgresql - Postgres upsert(更新和插入)从另一个表成功,但一个值的 id 值重复
- java - AsyncTask ProgressBar 更新中的多线程概念 wait() 和 notify()
- android - 如何解决“未解决的参考:ListView”。科特林