html - BEM / ABEM 命名约定:修饰符位置清晰沟通的策略?
问题描述
我一直倾向于在我的 CSS 中采用 ABEM,这是一种基于流行的 BEM 的修改命名约定,适用于 Atomic Design。
问题:使用ABEM时,修饰符与基类结合使用,不能单独使用。例如,要修改卡片,您可以使用“card -blue”而不是“card card-blue”,定义结合两个类的 css,如下所示:(.card.-blue{}
为简单起见,省略了前缀。)
我经常需要限定修饰符以在特定页面中使用,例如一个页面中的蓝卡可能在一个页面中与另一个页面中的不同,从而在 html 中定义 css,如下所示:
class="card -blue -page1"
并且class="card -blue -page2"
page1 和 page2 范围修改/覆盖只是那些页面。
我的问题:如何清楚地显示是否在基类的 CSS 文件 (card.css) 或页面覆盖/命名空间文件 (page1.css) 中找到 ABEM 修饰符,例如“-blue”?
'-blue' 类有可能是一个标准的全局修饰符,像这样在 card.css 中应用:
.card.-blue{ style me }
但 '-blue' 修饰符也可能被 page1.css 中的页面特定覆盖潜在地应用,如下所示.page1.-blue { style me }
:或者在基类中应用标准修饰符,就像card -active
在card.css中应用一样,同时page1.css应用了特殊布局(例如-layoutGrid1),因此html显示2个修饰符,但它不是t 清楚 -active 是来自 cards.css 的标准,而 -layoutGrid1 来自 page1.css 在阅读此内容时:card -active -layoutGrid1 -page1.css
。
是否有某种修改过的 ABEM 语法可以清楚地向我的 CSS 的未来读者展示他们是否需要修改修饰符,是否查看基本/全局 css,或者是否查看特定于页面的覆盖 css?也许在来自页面级别的修饰符上使用双破折号,而在较低级别或其他东西上使用单破折号?
谢谢你。这是一个难以表达的问题。
2 ABEM 资源: https ://medium.com/@masacarvalho/atomic-design-system-with-abem-naming-convention-part-1-983d7d6ec3d7 https://css-tricks.com/abem-useful-adaptation-贝姆/
解决方案
推荐阅读
- css - 如何使用css在斜线旁边添加数字并做出反应?
- mysql - 无法将 Spring Boot Mysql 连接到 GCP 云
- flutter - 当文档ID等于Flutter中当前记录的用户ID时获取firestore数据?
- r - 在 R 中,我需要连接到公共 API -- http://www.omdbapi.com
- amazon-web-services - Bluehosting 的 CNAME 问题?使用 AWS 负载均衡器
- android - 我怎样才能避免像 JSON API 中的 html 实体?
- string - 有没有办法将包含 ABAP、SAP 中特定字符的字符串中的单词加倍?
- reactjs - UseReducer 改变状态
- java - 使用 RSA256 + 密码生成 JWT 令牌
- laravel - Laravel:添加分页查询