html - 类不存在时如何选择选择器
问题描述
我对 CSS 的“兄弟选择器”有疑问。
这是这种情况:
如果在某些国家我们可以显示标题,但在其他国家不能显示标题,例如:
<!-- USA page -->
<div class="body">
<div class="header">HEADER</div> <!-- it exists -->
<div class="wrapper">BODY</div>
</div>
<hr>
<!-- Canada page --> <!-- does not have header -->
<div class="body">
<div class="wrapper">BODY</div> <!-- I want to modify this wrapper -->
</div>
我不确定这是否可能,因为我无法为<div class="wrapper">BODY</div>
唯一的加拿大创建新样式,因为它是所有国家/地区的一个模板。
这是一个树枝模板
<div class="body">
{% if show-header %} <!-- if true show -->
<div class="header">HEADER</div>
{% endif %}
<div class="wrapper">BODY</div>
</div>
<div class="wrapper">BODY</div>
所以...我需要一个纯 CSS 解决方案...如果<div class="header">HEADER</div>
在加拿大不存在,我该如何申请特定样式。让我们说改变颜色BODY
但不是为美国。
我认为使用 :not() 伪类的选择器是这样的:
:not(.printable) {
/* Styles */
}
但是,方法是什么?
解决方案
如果我理解你的问题,兄弟选择器仍然对你有用。您的兄弟选择器(存在.header
)将是一个覆盖。
所以是这样的:
.body .wrapper {
color: red; // Default color
}
.body .header + .wrapper {
color: blue; // Override default color when sibling exists
}
JSFiddle:https ://jsfiddle.net/fch3drve/
推荐阅读
- javascript - 当我在应用程序的多个部分重用的同一组件中使用相同的音频文件时,浏览器是否会缓存音频?
- list - SwiftUI .shadow blocks List scroll gesture for all but first List {}. Why?
- mysql - MySQL Workbench - 使用 CASE WHEN 语句时,SELECT 在此服务器版本的此位置无效
- android - ACTION_SHUTDOWN 未从 android Q (10) 及更高版本上的广播接收器调用
- qt - 将 QTableView 列水平调整为项目委托列的内容,该列在 Qt 中用新文本绘制
- node.js - 使用 Epic Games 按钮实现登录以检索用户配置文件
- c++ - c++强制选择或忽略对话框(消息框)与promt编程CertAddCertificateContextToStore
- php - 使用 if 语句处理 x2(多个)php $sql $results
- apache-spark - Spark流,套接字关闭后重新连接?
- typescript - 错误的功能分配