css - BEM:块的修饰符影响所有元素 - 最佳实践?
问题描述
如果修饰符影响块的所有元素,最佳实践是什么?
在我当前的项目中,我有一个标题。此标题更改为位置:如果用户滚动,则固定。
在标题中有主导航、徽标、语言切换器和电话链接:
<header class="header">
<div class="header__logo">...</div>
<nav class="nav nav_main">...</nav>
<nav class="nav nav_lang-switch">...</nav>
<div class="header__phone-link"></div>
</header>
在滚动时,标题得到修饰符header_fixed:
<header class="header header_fixed">
<div class="header__logo">...</div>
<nav class="nav nav_main">...</nav>
<nav class="nav nav_lang-switch">...</nav>
<div class="header__phone-link"></div>
</header>
如果它被固定,标题看起来完全不同:颜色改变,主导航变成汉堡图标导航,lang 开关的图标变小等等。
现在我可以在 CSS 中采用嵌套方式:
.header_fixed .nav_main {...}
.header_fixed .lang-switch__icon {...}
.header_fixed .header__phone-link {...}
...
或者每个改变的块或元素都可以获得它自己的修饰符类。
你对此有什么看法?
问候, 马库斯
解决方案
推荐阅读
- validation - Golang 验证器无效的内存地址或 nil 指针取消引用
- r - 如何让 geom_errorbar 在 ggplot2 的条形图上正确“闪避”?
- python - Scapy:使用 get_trace() 方法索引 traceroute 结果返回 TypeError
- javascript - 安全地将 Javascript 变量传递给 PHP
- python - 如何使用 tf.reshape()?
- java - 如何在arcore android应用程序中将一个3d模型覆盖在另一个上
- dart - 包:flutter/src/widgets/overlay.dart':断言失败:第 133 行 pos 12:'_overlay != null':
- gdb - 为什么使用 GDB 在 CodeBlocks 中添加和删除断点时会抛出 SIGTRAP 和 SIGILL?
- python - python/pandas 从开始日期+时间,创建日期时间索引
- ios - 将数据传递回 ViewController 时委托中的问题