【发布时间】:2014-12-18 13:47:47
【问题描述】:
根据我对this的理解,我编写了以下代码:
主机没有样式!!
var fonixDiv = Object.create(HTMLElement.prototype);
// Set up the element.
fonixDiv.createdCallback = function() {
// Create a Shadow Root
var shadow = this.createShadowRoot();
shadow.innerHTML = '<style>'+
':host { width:200px; height:200px; background: #b0c4de; }'+ // Not working
'p{color: red;}'+ // Working
'</style>'+
'<p>hi</p><button id="d">click</button>';
shadow.children.d.addEventListener('click', function(e) {
this.textContent = "you clicked me :(";
shadow.children[1].textContent="Shadow DOM content changed";
host.style.background = "green"; // working
alert("All: button, text and host should be change");
});
};
// Register the new element.
var Xfonix =document.registerElement('fonix-div', {
prototype: fonixDiv
});
更新 在html文件中,我称之为:
<fonix-div></fonix-div>
作为:
<div id='host'></div>
<script>
var host = document.querySelector('#host');
var el = new Xfonix();
host.appendChild(el);
<script>
任何帮助如何设置宿主元素的样式!
小提琴是here
没有任何东西适用于主机样式,无论是宽度、高度还是背景:(
【问题讨论】:
-
相同..不工作..
-
有趣的是它有效:: jsfiddle.net/yz4c0zhu/1 ...所以它必须与元素的创建方式有关
-
@cport1,在 html 文件中我将其命名为:
,我更新了我的问题以显示这一点。谢谢
标签: javascript css shadow-dom