在Angular 2中使用/ deep /和>>>

问题描述 投票:14回答:2

我一直在阅读这个选择器,并得到相互矛盾的答案。

在:What do /deep/ and ::shadow mean in a CSS selector?

我们看:

正如Joel H.在评论中指出的那样,Chrome已经弃用了/ deep / combinator,并且在IE中给出了语法错误。

在:https://github.com/Microsoft/vscode/issues/7002

我们看:

/深/不再存在,所以我认为我们不应该支持它。 >>>是新版本,应该可以支持

但是,在Angular 2文档中:https://angular.io/docs/ts/latest/guide/component-styles.html

我们看:

/ deep / selector也有别名>>>。我们可以互换使用两者中的任何一个。

显然,相信Angular 2文档是明智的,但由于所有这些相互矛盾的信息,我有点犹豫不决。

事实上,在最新版本的Microsoft Visual Studio Code中,BOTH /deep/>>>会创建错误,尽管它们都可以正常工作,尽管有错误。

我的问题是双重的:

  1. 是/深/这里留下来?我们是否有任何来源,报价或任何规范中的任何内容表明它将被采用?或者如果它已被正式弃用?
  2. 我们可以在没有全部禁用语法检查的情况下在Visual Studio代码中抑制此错误吗?
css angular css-selectors
2个回答
16
投票
  1. 是/深/这里留下来?我们是否有任何来源,报价或任何规范中的任何内容表明它将被采用?或者如果它已被正式弃用? /deep/语法已经过时,最后在css-scoping in 2014中出现过,而它的替代>>>大约半年前在Chrome 45中被弃用了。 阴影穿刺后代组合的整个概念是slated to be removed from the Shadow DOM entirely。实现可以将它完全删除或将其别名化为常规后代组合器(这取决于将来如何实现Shadow DOM可能有意义也可能没有意义)。
  2. 我们可以在没有全部禁用语法检查的情况下在Visual Studio代码中抑制此错误吗? 不幸的是。 为了兼容性目的,Angular允许在模拟视图封装中使用,但强烈建议作者继续使用>>>,因为/deep/现在技术上无效,因此在本机视图封装中不受支持。

5
投票

根据谷歌文档,所有主流浏览器都将弃用所述功能的所有功能。因此,不推荐使用阴影穿透后代组合器,并且正在从主要浏览器和工具中删除支持。

https://angular.io/guide/component-styles

可以使用更正式且不折旧的是:: host()和:: host-context

此外,根据谷歌:: ng-deep将不会被弃用,并将继续是一个可行的选择。所以使用:: ng-deep将是首选。

/ deep / combinator还有别名>>>和:: ng-deep。

仅对模拟视图封装使用/ deep /,>>>和:: ng-deep。模拟是默认和最常用的视图封装。有关更多信息,请参阅“控制视图封装”部分。不推荐使用阴影穿透后代组合器,并且正在从主要浏览器和工具中删除支持。因此,我们计划放弃Angular中的支持(对于/ deep /,>>>和:: ng-deep的所有3个)。在此之前:: ng-deep应该是首选,以便与工具更广泛地兼容。

© www.soinside.com 2019 - 2024. All rights reserved.