2017-02-09 1 views
6

Я читаю этот селектор и получаю противоречивые ответы.Использование/deep/and >>> in Angular 2

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

Мы видим:

Как Joel H. указывает в комментариях, Chrome с тех пор осуждал /глубокий/комбинатор, и это дает синтаксическую ошибку в IE.

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

Мы видим:

/глубоко/больше не существует, так что я не думаю, что мы должны поддерживать его. >>> это новая версия, которая, вероятно, должна поддерживаться

Однако в угловом 2 Docs: https://angular.io/docs/ts/latest/guide/component-styles.html

Мы видим:

Параметр/глубокий/селектор также имеет псевдоним >>>. Мы можем использовать оба из два взаимозаменяемых.

Очевидно, было бы разумно доверять документам Angular 2, но я немного нерешительна из-за всей этой противоречивой информации.

Фактически, в последней версии кода Microsoft Visual Studio BOTH /deep/ и >>> создают ошибки, хотя оба они работают несмотря на ошибки.

Мой вопрос имеет два аспекта:

  1. Is/глубоко/здесь остаться? У нас есть какой-либо источник, цитата или что-либо из любой спецификации, в которой говорится, что она будет принята? Или если он официально устарел?

  2. Можем ли мы подавить эту ошибку в коде Visual Studio без одновременного отключения проверки синтаксиса?

ответ

9
  1. Is/глубоко/здесь остаться? У нас есть какой-либо источник, цитата или что-либо из любой спецификации, в которой говорится, что она будет принята? Или если он официально устарел?

    Синтаксис /deep/ устарел, последний раз видели в CSS-обзорного in 2014, и его замена >>> осуждался около полугода назад в Chrome 45.

    Вся концепция теневой прокалывания потомка комбинатора является slated to be removed from the Shadow DOM entirely. Реализации могут либо полностью удалить его, либо псевдоним его регулярному комбинатору-потомку (который в зависимости от того, как будет реализован Shadow DOM в будущем, может или не имеет смысла).

  2. Можем ли мы устранить эту ошибку в коде Visual Studio без одновременного отключения проверки синтаксиса?

    К сожалению, нет.

    Угловой разрешает использование в эмулированном виде инкапсуляции для целей совместимости, но авторам настоятельно рекомендуется использовать >>> в дальнейшем, поскольку /deep/ технически недействителен сейчас и, следовательно, не поддерживается в инкапсуляции собственного вида.

+1

Если мы не должны использовать тензор-пронизывающий комбинатор потомков, тогда как мы должны писать правила, где мы хотим пробить тень? –

+0

Либо не инкапсулируйте (инкапсуляция: ViewEncapsulation.None), либо не пробивайте :) – craigmichaelmartin

2

Согласно документации google, все основные браузеры будут обесценивать всю функциональность указанной функции. Таким образом, теневой пробивающий потоковый комбинатор устарел, и поддержка удаляется из основных браузеров и инструментов.

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

Что можно использовать, что более offiical и не deprecaed является :: хозяин() и :: хост-контекст

Кроме того, в соответствии с Google :: нг-глубоко не устареет и будет оставаться жизнеспособным вариантом. поэтому использование :: ng-deep будет предпочтительным.

The/deep/combinator также имеет псевдонимы >>> и :: ng-deep.

Использование/глубокий /, >>> и :: ng-deep только с эмулированным инкапсуляцией вида. Эмуляция - это стандартная и наиболее часто используемая инкапсуляция. Для получения дополнительной информации см. Раздел инкапсуляции представления управления. Комбинированный потомок-пронизывающий тени не рекомендуется и поддержка удаляется из основных браузеров и инструментов. Таким образом, мы планируем отказаться от поддержки в Angular (для всех 3 of/deep /, >>> и :: ng-deep). До тех пор :: ng-deep следует предпочесть для более широкой совместимости с инструментами.

+0

Я предполагаю, что в документах говорится, что ':: ng-deep' также будет устаревшим. Чтобы процитировать текст из вашего ответа (подчеркните мое): _ «Таким образом, мы планируем отказаться от поддержки в Angular (** для всех 3 ** of/deep /, >>> и :: ng-deep)». _ Или я что-то упускаю? –

Смежные вопросы