HTML 公牛上的插槽和奶头模板
HTML Templates Slots and Teats on a bull
有人可以确认主机元素的 "slot=" 指示符与模板的 <slot>
标签匹配的规则,或者向我指出建议的文档吗?
我非常希望这是一个简单的 NAME 匹配过程,而不考虑 depth/position 对应的 Slots in the Light DOM 与 Shadow DOM,但是,遗憾的是,血统似乎是一个压倒一切的因素。 IOW Light DOM 中的子插槽将 not 填充阴影 DOM 中的孙插槽,即使名称匹配.这是正确的吗?
这让我想起了 COBOL 关于关卡的 MOVE CORR 规则,但这个限制肯定是以主页作者对组件阴影的深入了解为前提的 DOM 渲染 SLOT 不适合目的?
浏览器:Chrome58.0.3029.96(64 位)
This 似乎是说只要根没问题,后代深度应该不是问题。还是我看错了?
示例:
<!DOCTYPE html>
<html>
<head>
<template id="contact-template">
<style>
:host { border: solid 1px #ccc; border-radius: 0.5rem; padding: 0.5rem; margin: 0.5rem; }
b { display: inline-block; width: 5rem; }
</style>
<b>HELLO</b><br/>
<b>Name</b>: <slot name="fullName"><slot name="firstName"></slot> <slot name="lastName"></slot></slot><br>
<b>Email</b>: <slot name="email">Unknown</slot><br>
<b>Address</b>: <slot name="address">Unknown</slot>
<slot></slot>
</template>
<script>
window.addEventListener('DOMContentLoaded', function () {
var contacts = document.getElementById('contacts').children;
var template = document.getElementById('contact-template').content;
alert("Hello"+contacts.length);
document.getElementById("d").attachShadow({mode: 'open'}).appendChild(template.cloneNode(true));
return;
for (var i = 0; i < contacts.length; i++)
contacts[i].attachShadow({mode: 'open'}).appendChild(template.cloneNode(true));
});
</script>
</head>
<body onload="load()">
<p id="demo">Click the button to change the text in this paragraph.</p>
<button onclick="myFunction()">Try it</button>
<div id="contacts">
<div id="d">
<span slot="email">span it</span>
<div name="removeToWork">
<div slot="fullName">Commit Queue</div>
(<a slot="email" href="mailto:commit-queue@webkit.org">commit-queue@webkit.org</a>)<br>
<span slot="address">One Infinite Loop, Cupertino, CA 95014</span>
</div>
</div>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Hello World";
}
function load() {
}
</script>
</body>
</html>
仅当 slotable(具有 slot
属性的元素)是阴影 DOM 的直接子元素时,才会插入阴影 DOM主机.
- For each slotable child of host, slotable, in tree order, run these substeps:
所以孙子不配。
<div id="host">
<div slot="s1">Can match</div>
<div slot="s2">Can match</div>
<div>
<div slot="s3">Won't match</div>
</div>
</div>
有人可以确认主机元素的 "slot=" 指示符与模板的 <slot>
标签匹配的规则,或者向我指出建议的文档吗?
我非常希望这是一个简单的 NAME 匹配过程,而不考虑 depth/position 对应的 Slots in the Light DOM 与 Shadow DOM,但是,遗憾的是,血统似乎是一个压倒一切的因素。 IOW Light DOM 中的子插槽将 not 填充阴影 DOM 中的孙插槽,即使名称匹配.这是正确的吗?
这让我想起了 COBOL 关于关卡的 MOVE CORR 规则,但这个限制肯定是以主页作者对组件阴影的深入了解为前提的 DOM 渲染 SLOT 不适合目的?
浏览器:Chrome58.0.3029.96(64 位)
This 似乎是说只要根没问题,后代深度应该不是问题。还是我看错了?
示例:
<!DOCTYPE html>
<html>
<head>
<template id="contact-template">
<style>
:host { border: solid 1px #ccc; border-radius: 0.5rem; padding: 0.5rem; margin: 0.5rem; }
b { display: inline-block; width: 5rem; }
</style>
<b>HELLO</b><br/>
<b>Name</b>: <slot name="fullName"><slot name="firstName"></slot> <slot name="lastName"></slot></slot><br>
<b>Email</b>: <slot name="email">Unknown</slot><br>
<b>Address</b>: <slot name="address">Unknown</slot>
<slot></slot>
</template>
<script>
window.addEventListener('DOMContentLoaded', function () {
var contacts = document.getElementById('contacts').children;
var template = document.getElementById('contact-template').content;
alert("Hello"+contacts.length);
document.getElementById("d").attachShadow({mode: 'open'}).appendChild(template.cloneNode(true));
return;
for (var i = 0; i < contacts.length; i++)
contacts[i].attachShadow({mode: 'open'}).appendChild(template.cloneNode(true));
});
</script>
</head>
<body onload="load()">
<p id="demo">Click the button to change the text in this paragraph.</p>
<button onclick="myFunction()">Try it</button>
<div id="contacts">
<div id="d">
<span slot="email">span it</span>
<div name="removeToWork">
<div slot="fullName">Commit Queue</div>
(<a slot="email" href="mailto:commit-queue@webkit.org">commit-queue@webkit.org</a>)<br>
<span slot="address">One Infinite Loop, Cupertino, CA 95014</span>
</div>
</div>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Hello World";
}
function load() {
}
</script>
</body>
</html>
仅当 slotable(具有 slot
属性的元素)是阴影 DOM 的直接子元素时,才会插入阴影 DOM主机.
- For each slotable child of host, slotable, in tree order, run these substeps:
所以孙子不配。
<div id="host">
<div slot="s1">Can match</div>
<div slot="s2">Can match</div>
<div>
<div slot="s3">Won't match</div>
</div>
</div>