css属性选择器*=和^=为何需要同时存在?
在Ant.Design的源码中看到一段样式代码:
// Config global less under antd
[class^=~'@{ant-prefix}-'],
[class*=~' @{ant-prefix}-'] {
// remove the clear button of a text input control in IE10+
&::-ms-clear,
input::-ms-clear,
input::-ms-reveal {
display: none;
}
&,
*,
*::before,
*::after {
box-sizing: border-box; // 1
}
}
疑惑点在于[class*=~' @{ant-prefix}-']
是否已包含[class^=~' @{ant-prefix}-']
覆盖的部分?为何这两个selector需要共存,或许有其他方面的考虑?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假如@{ant-prefix}的值为antd
[class*=~' @{ant-prefix}-']
注意前面有个空格能匹配class="aaa antd-a"
但是不能匹配class="aaa bbbantd-a"
[class^=~'@{ant-prefix}-']
能匹配class="antd-a bbb"
假如只写
[class*=~'@{ant-prefix}-']
那么上面的class="aaa bbbantd-a"也能匹配, 这不是所希望的
有个空格.
如果没有的话,可以认为包含