#javascript #html #polymer #shadow-dom
#javascript #HTML #polymer #shadow-dom
Вопрос:
У меня есть два элемента: один является <drop-down>
элементом, другой — <populated-drop-down>
element. populated-drop-down
extends
drop-down
, но, как вы, возможно, догадались, пытается предварительно заполнить его некоторыми параметрами. Предполагалось, что я мог бы просто поместить HTML внутрь <shadow></shadow>
тега, но это не работает:
<polymer-element name="drop-down" noscript attributes="label">
<template>
<style>
:host{display:inline-block;border:1px solid;padding:1rem}
#content{position:absolute}
#drop, #content {display:none}
#drop:checked #content {display:block}
</style>
<label for="drop">{{label}}</label>
<input type="checkbox" id="drop">
<div id="content"><content></content></div>
</template>
</polymer-element>
<polymer-element name="pop-drop-down" extends="drop-down" noscript>
<template>
<shadow>
<ul>
<li>Option1</li>
<li>Option2</li>
<li>Option3</li>
<li>Option4</li>
<li>Option5</li>
</ul>
</shadow>
</template>
</polymer-element>
<drop-down label="Working DropDown">
<ul>
<li>Option1</li>
<li>Option2</li>
<li>Option3</li>
<li>Option4</li>
<li>Option5</li>
</ul>
</drop-down>
<pop-drop-down label="Not working pre-populated dropdown">
</pop-drop-down>
Кажется, я могу обернуть дополнительные теги вокруг <shadow></shadow>
, но не помещать их внутрь <shadow></shadow>
Ответ №1:
IIRC, это поддерживалось в течение короткого периода времени в спецификации Shadow DOM и реализации Chrome. Однако это было удалено из-за проблем с реализацией.
Комментарии:
1. Извините, не видел сообщение Скотта. В любом случае, есть несколько соответствующих ссылок 🙂
Ответ №2:
Большая часть сообщества разработчиков хочет эту функцию, но разработчики браузера были обеспокоены созданием проблем с производительностью, поэтому она была исключена из самой последней спецификации.
Я подозреваю, что в скором времени это станет особенностью ShadowDOM, но технически решение еще не принято.