css属性选择器*=和^=为何需要同时存在?

发布于 2022-09-12 03:35:34 字数 526 浏览 11 评论 0

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哥,最终变帅啦 2022-09-19 03:35:34

假如@{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"也能匹配, 这不是所希望的

离线来电— 2022-09-19 03:35:34

有个空格.
如果没有的话,可以认为包含

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文