Что замените:: shadow и/deep/?

Два компилятора теневого пирсинга устарели, как указано в https://www.chromestatus.com/features/6750456638341120
Затем какая подстановка для достижения того же, или эта функция теневого пирсинга была полностью оставлена?

Ответы

Ответ 1

::shadow и /deep/ были удалены для нарушения инкапсуляции.

Замены являются:

Ответ 2

По сравнению с полимером 2:

  • ::shadow (селектор теневого пирсинга) - прямой замены не существует. Вместо этого должны использоваться пользовательские свойства CSS. Полимер 2: Пользовательские свойства CSS

  • /deep/ - существует какая-то замена, определяя :host > * { ... } (применяет набор правил для всех детей верхнего уровня в дереве теневого дерева хоста, который не противоречит правилу в основной документ).

Для получения более подробной информации проверьте Заметки по обновлению Polymer 2

Ответ 3

На момент написания статьи вы можете попробовать ::part and ::theme с Chrome 73 и выше:

https://www.chromestatus.com/feature/5763933658939392

<submit-form>
  #shadow-root
  <x-form exportparts="some-input, some-box">
    #shadow-root
    <x-bar exportparts="some-input, some-box">
      #shadow-root
      <x-foo part="some-input, some-box"></x-foo>
    </x-bar>
  </x-form>
</submit-form>

<x-form></x-form>
<x-bar></x-bar>

Вы можете стилизовать все входы с помощью:

:root::part(some-input) { ... }

Есть полная документация, как это работает:

https://github.com/fergald/docs/blob/master/explainers/css-shadow-parts-1.md

Это может как-то решить вашу проблему, но я все еще скучаю по тем дням, когда я разрабатывал встроенные твиты с помощью ::shadow.

Ответ 4

Боже, это ужасно Как мы получаем :: тень назад?

Ответ 5

":: V-Deep" работает на меня. Например:

    .menu {
        // stuff
    }
    /deep/.sub-menu {     // override submenu
        .sub-menu__mini {
                //stuff
            }
            a, a:hover {
                //stuff
            }
        }
    }

будет выглядеть так:

    .menu {
        // stuff
    }
    ::v-deep .sub-menu {     // override submenu
        .sub-menu__mini {
                //stuff
            }
            a, a:hover {
                //stuff
            }
        }
    }