什么是:: shadow和/ deep /的替代品?

Zhe*_*Bai 28 web-component web shadow-dom

https://www.chromestatus.com/features/6750456638341120中所述,这两个穿孔阴影的组合器已经被弃用了.
那么实现同样的东西是什么,或者这个阴影穿透功能已被完全抛弃了?

Mar*_*rcG 17

问题是,::shadow/deep/破坏封装.我很高兴他们走了.

好的替代品是:

  • 我不同意“问题是`::shadow`和`/deep/`破坏了封装。我很高兴它们已经消失了。”。虽然它们破坏了封装,但如果您使用 3rd 方组件并且它们没有 css 变量来按照您想要的方式设置样式,那么您很简单,没有选项,除了要求他们创建您想要的变量(永远无法创建),或者因为支持`/deep/`,你可以应用一些琐碎的css而不得不分叉组件并自己维护它。我宁愿永远不必使用`/deep/`,但我希望能够在需要时使用它。 (7认同)
  • @MarcG 是的,它们破坏了封装,并且只要有可能**应该避免**。我明白你的观点,我部分同意,但**我不同意删除 `/deep/` 是件好事**。在理想的世界中,每个库都会提供每个预期的 css 变量,以便不需要使用诸如 `/deep/` 之类的 hack。不幸的是,他们是资源和时间有限的人,并且由于 shadow DOM,预计他们的组件将具有消费者无法通过 css 覆盖的 css 属性。使用`/deep/` 可以大大缓解此类问题。 (7认同)
  • 对于无法在渲染之前访问阴影dom的情况,无法避免`:: shadow` (3认同)
  • 只是有一种情况,第三方自动完成输入显示它是我元素背后的自动完成建议。应该是一个简单的修复,只是一个 z-index。但不,这是很难解决的。我终于偶然发现了 /deep/ 它有效,但我看到它已经贬值了。我不知道当它完全删除时你会如何解决这个问题。我认为我们仍然需要这样的功能,但覆盖需要显式而不是隐式。 (3认同)
  • @MarcG如果没有破坏封装的机制,如何覆盖框架样式? (2认同)
  • 这里的问题不在于封装可能被破坏——问题在于任何人的狂妄自大决定没有人应该以 X 方式编码。让好的代码破坏没有封装,让坏代码成为,不要试图对每个人强制执行“好” . 你以这种方式制造问题并引发仇恨和愤怒。我认为会有起义。 (2认同)