У меня есть пользовательский элемент Polymer, который я хочу стилизовать определенным образом и предоставить в качестве плагина на множество разных веб-сайтов. Я хотел бы иметь возможность инкапсулировать стили моих пользовательских компонентов таким образом, чтобы они выглядели одинаково на всех веб-сайтах, на которых они встроены. Вот пример того, как директива шрифта на веб-странице родительского конфликтует со стилем моего компонента:Как предотвратить внешний CSS от переопределения стилей веб-компонентов
<style>
* {
font-size: 18px;
}
</style>
<script src="http://www.polymer-project.org/webcomponents.js"></script>
<link rel="import" href="http://www.polymer-project.org/components/polymer/polymer.html">
<polymer-element name="polymer-css-test">
<template>
<style>
:host {
font-size: 12px;
}
</style>
<div>
Please tell me how to make this 12pt.
</div>
</template>
<script>
Polymer('polymer-css-test', {
ready: function() {
}
});
</script>
</polymer-element>
<polymer-css-test></polymer-css-test>
Заранее спасибо за вашу помощь.
Спасибо @ timo-d. Я немного смущен, потому что Shadow DOM должен помешать внешнему CSS помешать стилям моих компонентов. См. Эту статью: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/. Вы знакомы с веб-компонентами? – cayblood
Верно, что теневая DOM является каким-то собственным пространством с точки зрения стилей DOM и CSS, и верно, что вы не можете применять стили CSS к элементам в Shadow DOM ** напрямую ** без использования ':: shadow' или '/ глубоко /'. Однако существуют некоторые свойства CSS, такие как «font-size», которые могут быть унаследованы от родителя, даже если правило стилирования не относится к самому дочернему элементу. И я думаю, что это то, что здесь происходит. Я признаю, что это довольно странно, и я не могу найти источники, подтверждающие мою теорию. –
Я думаю, что вы правы. Вот подтверждение вашей теории: https://groups.google.com/forum/#!topic/polymer-dev/06zYBZ_IMjc – cayblood