Подтвердить что ты не робот

Внешние таблицы стилей для теневого dom в веб-компонентах

Я изучаю веб-компоненты с теневым корнем и не могу найти в google, если загрузка внешних таблиц стилей возможна с готовым кодом? Я НЕ использую полимер или любую другую библиотеку веб-компонентов (пока). Код ниже:

<script src="../../libs/jquery-2.1.1.min.js"></script>
<script>
    var hollaProto = Object.create(HTMLElement.prototype);
    hollaProto.createdCallback = function () {
        var shadow = this.createShadowRoot();
        var content = document.querySelector('link[rel=import]').import.querySelector("div");

        $("button[data-command=holla]", content).on("click", function () { alert("Holla!"); });

        shadow.appendChild(content);
    };
    var hollaWidget = document.registerElement("holla-back", {
        prototype: hollaProto
    });
</script>
<div class="holla-back">
    <button data-command="holla">Holla!</button>
</div>

Если я поместил свою ссылку вверху, над первым тегом script, я создаю весь веб-возраст, но не веб-компонент.

Если я положил его под div.holla-back, он ничего не создал.

Как вы используете внешние таблицы стилей с веб-компонентами?

4b9b3361

Ответ 1

Теги тегов являются инертными в Shadow DOM в соответствии со спецификацией. Однако вы можете использовать @import, хотя это имеет свои проблемы с производительностью.

Как работает Polymer, он просматривает теги link и использует xhr для загрузки этих стилей и их применения.

изменить

Люди, работающие над Shadow DOM, знают об этом недостатке и что его нужно исправлять. Надеюсь, в будущем мы сможем создать систему, поддерживающую внешние таблицы стилей.

Ответ 2

Shadow DOM не реагирует на теги ссылок. Infact, Chrome 41 выдает ошибку при использовании тегов ссылок. Мы ограничили это ограничение, введя CSS-классы во время сборки, используя вулканизацию. Это оказалось весьма удобным в разделении CSS и определения компонентов.