css - 使用 scss @extend 伪选择 CSS
问题描述
可以做@extend .foo
但显然不行@extend .foo:focus
。
我正在处理一个 3rd 方组件,focused
当它认为它是焦点时,它会添加它自己的类。用于应用@extend
Bootstrap 样式可以正常工作,但是因为第 3 方组件没有得到 a :focus
,.form-control:focus
所以永远不会匹配。
我的 SCSS 原则上是:
.thirdparty {
@extend .form-control;
}
.thirdparty.thirdparty-focused {
@extend .form-control:focus;
}
@extend .form-control:focus;
但是不编译。
.form-control:focus
目前,如果不将CSS复制到 中,我无法弄清楚如何做到这一点.thirdparty.thirdparty-focused
,这显然是相当不理想的。
是否有某种@extend .form-control:focus;
等价的可能,如果没有,有什么建议比复制 N 行 CSS 以匹配 Bootstrap 的其余部分更好?
解决方案
@extend .form-control:focus
will act as a selector, specifically looking for a rule named .form-control:focus
. 这是一个插图。
解决您的问题的最佳方法是:focus
使用 -selector 外包原始 Bootstrap 类的伪选择器,%
然后将其重新扩展到其中 - 这样您就可以单独调用它。
%focus {
color: #2196f3;
}
.base {
color: #000;
&:focus {
@extend %focus;
}
}
div {
@extend .base;
&.focus {
@extend %focus;
}
}
// Other Bootstrap components can still call `@extend .base;`
这将编译为:
.base:focus, div:focus, div.focus {
color: #2196f3;
}
.base, div {
color: #000;
}
推荐阅读
- java - 保持 JMS 会话始终处于活动状态
- shell - 使用 unix 命令或 shell 脚本查找 2 个 csv 文件之间的差异
- python - python中列表列表的排序
- mysql - 将记录表与负关系映射表连接起来
- xml - xml 模式中属性的默认类型是什么?
- angular - Angular 2 - 复选框列表 - 如何检查复选框的状态
- rx-java2 - Rxjava : Schedulers.io() 与 Schedulers.from(scheduledExecutorService)
- c# - 如何删除除某些文件夹以外的所有文件夹
- c# - 我在桌子附近遇到语法错误,它说不知道到底需要做什么
- javascript - 如何在不知道先执行哪个 then() 的情况下返回已解决的承诺