我一直在阅读这个选择器,并得到相互矛盾的答案。
在: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/
和>>>
会创建错误,尽管它们都可以正常工作,尽管有错误。
我的问题是双重的:
/deep/
语法已经过时,最后在css-scoping in 2014中出现过,而它的替代>>>
大约半年前在Chrome 45中被弃用了。
阴影穿刺后代组合的整个概念是slated to be removed from the Shadow DOM entirely。实现可以将它完全删除或将其别名化为常规后代组合器(这取决于将来如何实现Shadow DOM可能有意义也可能没有意义)。>>>
,因为/deep/
现在技术上无效,因此在本机视图封装中不受支持。根据谷歌文档,所有主流浏览器都将弃用所述功能的所有功能。因此,不推荐使用阴影穿透后代组合器,并且正在从主要浏览器和工具中删除支持。
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应该是首选,以便与工具更广泛地兼容。