ãã®è¨äºã§ã¯ã<template>
㨠<slot>
è¦ç´ ã使ç¨ãã¦æè»ãªãã³ãã¬ã¼ãã使ãããããã¦ã§ãã³ã³ãã¼ãã³ãã®ã·ã£ã㦠DOM ã表示ããããã«ä½¿ç¨ããæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
ã¦ã§ããã¼ã¸ã§åããã¼ã¯ã¢ããæ§é ãç¹°ãè¿ãåå©ç¨ããå¿
è¦ãããå ´åãåãæ§é ãä½åº¦ãç¹°ãè¿ãããããä½ããã®ãã³ãã¬ã¼ãã使ç¨ããæ¹ãçã«ããªã£ã¦ãã¾ãã ããã¯ä»¥åããå¯è½ã§ããããHTML ã® <template>
è¦ç´ ã«ãã£ã¦ãããªã容æã«ãªãã¾ããï¼æè¿ã®ãã©ã¦ã¶ã¼ã¯ãã対å¿ãã¦ãã¾ãï¼ã ãã®è¦ç´ ã¨ãã®å
容㯠DOM å
ã§æç»ããã¾ããããJavaScript ã使ã£ã¦åç
§ãããã¨ã¯å¯è½ã§ãã
ç°¡åãªä¾ãè¦ã¦ã¿ã¾ãããã
<template id="custom-paragraph">
<p>My paragraph</p>
</template>
ããã¯ãã¼ã¸ä¸ã«è¡¨ç¤ºãããã以ä¸ã®ãããªã³ã¼ãã§ JavaScript ã§åç §ãåå¾ãã DOM ã«è¿½å ãããã¨ã§è¡¨ç¤ºããã¾ãã
let template = document.getElementById("custom-paragraph");
let templateContent = template.content;
document.body.appendChild(templateContent);
ã¤ã¾ããªãä¾ã§ããããã§ã«æç¨æ§ã¯è¦ãã¦ããã§ãããã
ã¦ã§ãã³ã³ãã¼ãã³ããç¨ãããã³ãã¬ã¼ãã®ä½¿ç¨ãã³ãã¬ã¼ãã¯ããèªä½ã§ã便å©ã§ãããã¦ã§ãã³ã³ãã¼ãã³ãã¨çµã¿åãããã¨ããã«å¹æçã§ãã ãã³ãã¬ã¼ããã·ã£ã㦠DOM ã®å
容ã¨ãã¦ä½¿ç¨ããã¦ã§ãã³ã³ãã¼ãã³ããå®ç¾©ãã¦ã¿ã¾ãããã åæ§ã« <my-paragraph>
ã¨å¼ã¶ãã¨ã«ãã¾ãã
customElements.define(
"my-paragraph",
class extends HTMLElement {
constructor() {
super();
let template = document.getElementById("custom-paragraph");
let templateContent = template.content;
const shadowRoot = this.attachShadow({ mode: "open" });
shadowRoot.appendChild(templateContent.cloneNode(true));
}
},
);
ããã§ããã³ãã¬ã¼ãã®å
容ã使ç¨ããããã« Node.cloneNode()
ã¡ã½ããã使ç¨ãã¦è¤è£½ãããã®ãã·ã£ãã¦ã«ã¼ãã«è¿½å ãã¦ãããã¨ã«æ³¨æãã¦ãã ããã
ã¾ãããã®å
容ãã·ã£ã㦠DOM ã«è¿½å ãã¦ããããããã³ãã¬ã¼ãå
ã®ã¹ã¿ã¤ã«æ
å ±ã <style>
è¦ç´ ã«å«ãããã¨ãã§ãããããã«ã¹ã¿ã è¦ç´ å
ã«ã«ãã»ã«åããã¾ãã ããã¯ãåã«æ¨æº DOM ã«è¿½å ããã ãã§ã¯æ©è½ãã¾ããã
ãããã£ã¦ãä¾ãã°æ¬¡ã®ããã«ããã¨ã
<template id="custom-paragraph">
<style>
p {
color: white;
background-color: #666;
padding: 5px;
}
</style>
<p>My paragraph</p>
</template>
HTML ææ¸ã«æ¬¡ã®ããã«è¿½å ããã ãã§å©ç¨ã§ããããã«ãªãã¾ããã
<my-paragraph></my-paragraph>
ã¹ãããã«ããæè»æ§ã®å¼·å
ããã¾ã§ã¯ããã®ã§ããããã®è¦ç´ ã¯ãã¾ãæè»ã§ã¯ããã¾ããã ä¸ã«ã¯é«ã
1 ã¤ã®ããã¹ãã表示ã§ããã ããªã®ã§ãç¾æç¹ã§ã¯éå¸¸ã®æ®µè½ãããæç¨ã§ã¯ããã¾ããã <slot>
è¦ç´ ã使ç¨ãããã¨ã§ãåè¦ç´ ã¤ã³ã¹ã¿ã³ã¹ã«ç°ãªãããã¹ãã表示ãããã¨ã宣è¨çã«è¡ããããã«ãããã¨ãã§ãã¾ãã
ã¹ããã㯠name
屿§ã§èå¥ããããã³ãã¬ã¼ãå
ã«ãã¬ã¼ã¹ãã«ãã¼ãå®ç¾©ãããã¨ãã§ãã¾ãããã®ãã¬ã¼ã¹ãã«ãã¼ã¯ããã®è¦ç´ ããã¼ã¯ã¢ããã§ä½¿ç¨ãããã¨ãã«ãä»»æã®ãã¼ã¯ã¢ãããã©ã°ã¡ã³ãã§åããããããã«ãªãã¾ãã
ã§ãããããã®äºç´°ãªä¾ã«ã¹ãããã追å ãããå ´åããã³ãã¬ã¼ãã®æ®µè½è¦ç´ ãæ¬¡ã®ããã«æ´æ°ãã¦ãã ããã
<p><slot name="my-text">æ¢å®ã®ããã¹ã</slot></p>
ãã¼ã¯ã¢ããã«è¦ç´ ãå«ã¾ããã¨ãã«ã¹ãããã®å
容ãå®ç¾©ããã¦ããªãå ´åãã¾ãã¯ãã©ã¦ã¶ã¼ãã¹ãããã«å¯¾å¿ãã¦ããªãå ´åã <my-paragraph>
ã¯ã«åã«ä»£æ¿å
容ã§ãããæ¢å®ã®ããã¹ãããå
¥ãã¾ãã
ã¹ãããã®å
容ãå®ç¾©ããããã«ã<my-paragraph>
è¦ç´ ã®ä¸ã« HTML æ§é ãå
¥ãã slot
屿§ã®å¤ãåãããã¹ãããã®ååã¨åãã«ãªãããã«ãã¾ããåã¨åãããã«ãããã¯å¥½ããªãã®ãæå®ã§ãã¾ãã
<my-paragraph>
<span slot="my-text">å¥ãªããã¹ããå
¥ãã¾ãããã</span>
</my-paragraph>
以ä¸ã®ããã«ãè¨å®ã§ãã¾ãã
<my-paragraph>
<ul slot="my-text">
<li>å¥ãªããã¹ããå
¥ãã¾ãããã</li>
<li>ãªã¹ãã®ä¸ã§ãã</li>
</ul>
</my-paragraph>
ã¡ã¢: ã¹ãããã«æ¿å ¥ãããã¨ãã§ãããã¼ãã¯ãã¹ãããå¯è½ (Slottable)ããã¼ãã¨å¼ã°ãã¾ãããã¼ããã¹ãããã«æ¿å ¥ãããã¨ãããã¹ãããããã¦ãããã¨è¨ãã¾ãã
ã¡ã¢: ç¡åã® <slot>
ã«ã¯ãã«ã¹ã¿ã è¦ç´ ã®ãããã¬ãã«ã®åãã¼ãã®ãã¡ slot
屿§ãæããªããã¹ã¦ã®ãã¼ããå
¥ãã¾ããããã«ã¯ããã¹ããã¼ããå«ã¾ãã¾ãã
ç°¡åãªä¾ã§ã®èª¬æã¯ä»¥ä¸ã§ãã ãã£ã¨å®è¡ãã¦ã¿ããå ´åã¯ã GitHub ä¸ã«ããã¾ãï¼ã©ã¤ãå®è¡çãããã¾ãï¼ã
ããè¸ã¿è¾¼ãã ä¾è¨äºã®æå¾ã«ãããå°ãæ¬æ ¼çãªãã®ãè¦ã¦ã¿ã¾ãããã
以ä¸ã®ä¸é£ã®ã³ã¼ãã¯ã <slot>
ã <template>
ã¨è¥å¹²ã® JavaScript ã¨çµã¿åããã¦ä½¿ç¨ããæ¹æ³ã示ãã³ã¼ãã¹ããããã§ãã
<element-details>
è¦ç´ ãååä»ãã¹ãããä»ãã§ã·ã£ãã¦ã«ã¼ãã®ä¸ã«ä½æãã<element-details>
è¦ç´ ããææ¸å
ã§ä½¿ç¨ãããã¨ããè¦ç´ ã®å
容ã¨ãã®ã·ã£ãã¦ã«ã¼ãã®å
容ãçµã¿åããã¦ã¬ã³ããªã³ã°ãããããã«è¨è¨ãã¾ããã¤ã¾ããè¦ç´ ã®å
å®¹ã®æçã¯ããã®ã·ã£ãã¦ã«ã¼ãã®ä¸ã§ååä»ãã¹ããããåããããã«ä½¿ç¨ããã¾ãããªãã <slot>
è¦ç´ ã¯æè¡çã«ã¯ã <template>
è¦ç´ ãªãã§ãä¾ãã°ãé常㮠<div>
è¦ç´ å
ã§ä½¿ããã¨ãå¯è½ã§ãããããã§ãã·ã£ã㦠DOM å
容ã«å¯¾ã㦠<slot>
ã®ãã¬ã¼ã¹ãã«ãã¼æ©è½ãæ´»ç¨ãããã¨ãã§ãã¾ãããããããã°ãæåã«ãã³ãã¬ã¼ãè¦ç´ ã® content
ããããã£ã«ã¢ã¯ã»ã¹ï¼ãã¦ãããè¤è£½ï¼ããå¿
è¦ãããã¨ããå°ããªãã©ãã«ãå®éã«é¿ãããã¨ãã§ãã¾ãã ããããä¸è¬çã«ã¯ <template>
è¦ç´ å
ã«ã¹ãããã追å ããæ¹ãããå®ç¨çã§ãããªããªããæ¢ã«ã¬ã³ããªã³ã°ãããè¦ç´ ã«åºã¥ãã¦ãã¿ã¼ã³ãå®ç¾©ããå¿
è¦ããããã¨ã¯ã»ã¨ãã©ãªãããã§ãã
ã¾ããã¾ã ã¬ã³ããªã³ã°ããã¦ããªãå ´åã§ãã <template>
ã使ç¨ãããã¨ã§ããã³ãã¬ã¼ãã¨ãã¦ã®ã³ã³ããã¼ã®ç®çãããæå³çã«æç¢ºã«ãªãã¯ãã§ããã¾ãã <template>
ã«ã¯ã <td>
ã®ãããªã <div>
ã«è¿½å ããã¨æ¶ãã¦ãã¾ããããªé
ç®ãç´æ¥è¿½å ãããã¨ãã§ãã¾ãã
ã¡ã¢: å®å ¨ãªä¾ã¯ element-details ã§ï¼ã©ã¤ãå®è¡çãï¼åç §ãããã¨ãã§ãã¾ãã
template ãã¹ãããã¨å ±ã«ä½æã¾ãæåã« <slot>
è¦ç´ ã <template>
è¦ç´ ã®ä¸ã«ä½æããååä»ãã¹ããããå«ãã æ°ãã "element-details-template" ã¨ããææ¸ãã©ã°ã¡ã³ãã使ãã¾ãã
<template id="element-details-template">
<style>
details {
font-family: "Open Sans Light", Helvetica, Arial;
}
.name {
font-weight: bold;
color: #217ac0;
font-size: 120%;
}
h4 {
margin: 10px 0 -8px 0;
}
h4 span {
background: #217ac0;
padding: 2px 6px 2px 6px;
}
h4 span {
border: 1px solid #cee9f9;
border-radius: 4px;
}
h4 span {
color: white;
}
.attributes {
margin-left: 22px;
font-size: 90%;
}
.attributes p {
margin-left: 16px;
font-style: italic;
}
</style>
<details>
<summary>
<span>
<code class="name"
><<slot name="element-name">NEED NAME</slot>></code
>
<span class="desc"
><slot name="description">NEED DESCRIPTION</slot></span
>
</span>
</summary>
<div class="attributes">
<h4><span>Attributes</span></h4>
<slot name="attributes"><p>None</p></slot>
</div>
</details>
<hr />
</template>
ãã® <template>
è¦ç´ ã«ã¯ããã¤ãã®ç¹å¾´ãããã¾ãã
<template>
ã«ã¯ <style>
è¦ç´ ãããã <template>
ãçæããææ¸ã®æçã ãã対象ã¨ãã CSS ã¹ã¿ã¤ã«ã®éåãæã¡ã¾ãã
<template>
㯠<slot>
ã¨ãã® name
屿§ãç¨ãã¦ã 3 ã¤ã®ååä»ãã¹ããã ãçæãã¦ãã¾ãã
<slot name="element-name">
<slot name="description">
<slot name="attributes">
<template>
ã«ã¯ååä»ãã¹ãããã <details>
è¦ç´ ã®ä¸ã«æã¡ã¾ãã
次ã«ã <element-details>
ã¨ããååã®æ°ããã«ã¹ã¿ã è¦ç´ ãçæãã¦ã Element.attachShadow
ã§ãã®ã·ã£ãã¦ã«ã¼ãã¨ãã¦è¿½å ããä¸è¨ã® <template>
è¦ç´ ã§çæããææ¸ã®æçãåãä»ãã¦ã¿ã¾ãããã ããã¯ãå
ã»ã©ã®ç°¡åãªä¾ã§è¦ãã®ã¨ã¾ã£ããåããã¿ã¼ã³ã使ã£ã¦ãã¾ãã
customElements.define(
"element-details",
class extends HTMLElement {
constructor() {
super();
const template = document.getElementById(
"element-details-template",
).content;
const shadowRoot = this.attachShadow({ mode: "open" });
shadowRoot.appendChild(template.cloneNode(true));
}
},
);
<element-details> ã«ã¹ã¿ã è¦ç´ ãååä»ãã¹ãããã¨å
±ã«ä½¿ç¨ãã
ã§ã¯ã <element-details>
è¦ç´ ãææ¸å
ã§å®éã«ä½¿ã£ã¦ã¿ã¾ãããã
<element-details>
<span slot="element-name">slot</span>
<span slot="description"
>A placeholder inside a web component that users can fill with their own
markup, with the effect of composing different DOM trees together.</span
>
<dl slot="attributes">
<dt>name</dt>
<dd>The name of the slot.</dd>
</dl>
</element-details>
<element-details>
<span slot="element-name">template</span>
<span slot="description"
>A mechanism for holding client- side content that is not to be rendered
when a page is loaded but may subsequently be instantiated during runtime
using JavaScript.</span
>
</element-details>
ãã®ã³ã¼ãã«ã¤ãã¦ä»¥ä¸ã®ç¹ã«æ³¨æãã¦ãã ããã
<element-details>
è¦ç´ ã 2 ã¤ãããã©ã¡ãã slot
屿§ã使ã£ã¦ <element-details>
ã®ã·ã£ãã¦ã«ã¼ãã«ç½®ããååä»ãã¹ãããã® "element-name"
㨠"description"
ãåç
§ãã¦ãã¾ãã<element-details>
è¦ç´ ã®ãã¡æåã®ãã®ã ãã "attributes"
ååä»ãã¹ããã ãåç
§ãã¦ãã¾ãã 2 çªç®ã® <element-details>
è¦ç´ 㯠"attributes"
ååä»ãã¹ããã ã¸ã®åç
§ãæ¬ ãã¦ãã¾ãã<element-details>
è¦ç´ 㯠"attributes"
ååä»ãã¹ããã ã <dl>
ããã³ãã®åè¦ç´ ã§ãã <dt>
㨠<dd>
ã使ã£ã¦åç
§ãã¦ãã¾ããæå¾ã«è¥å¹²ã® CSS ã¹ã¿ã¤ã«ããææ¸ä¸ã® <dl>
ã<dt>
ã<dd>
ã®åè¦ç´ ã«è¿½å ãããã
dl {
margin-left: 6px;
}
dt {
color: #217ac0;
font-family: Consolas, "Liberation Mono", Courier;
font-size: 110%;
font-weight: bold;
}
dd {
margin-left: 16px;
}
body {
margin-top: 47px;
}
çµæ
以ä¸ã®ã³ã¼ããç¹ãã¦ã©ã®ãããªçµæãã¬ã³ããªã³ã°ããããã確èªãã¾ãããã
ãã®ã¬ã³ããªã³ã°çµæã«ã¤ãã¦ã以ä¸ã®ç¹ã«æ³¨æãã¦ãã ããã
<element-details>
è¦ç´ ã®ã¤ã³ã¹ã¿ã³ã¹ã¯ <details>
è¦ç´ ãç´æ¥ä½¿ç¨ãã¾ãããã <details>
ãã·ã£ãã¦ã«ã¼ãã表示ããããã¨ã§ã¬ã³ããªã³ã°ããã¾ãã<details>
ã®åºåçµæã§ã<element-details>
è¦ç´ ã®å
容ã¯ååä»ãã¹ããããã·ã£ãã¦ã«ã¼ãããåãè¾¼ã¿ã¾ããè¨ãæããã°ã <element-details>
è¦ç´ ã® DOM ããªã¼ã¯ã·ã£ãã¦ã«ã¼ãã®å
容ã¨å
±ã«æ§æããã¾ãã<element-details>
è¦ç´ ããã¦ã Attributes ã®è¦åºãã¯ã·ã£ãã¦ã«ã¼ããã "attributes"
ååä»ãã¹ãããã®ä½ç½®ã®åã«ãèªåçã«è¿½å ããã¾ãã<element-details>
ã¯ã·ã£ãã¦ã«ã¼ãããååä»ãã¹ããããæç¤ºçã«åç
§ãã¦ãã <dl>
è¦ç´ ãæã¤ããã<dl>
ã®å
容㯠ã·ã£ãã¦ã«ã¼ããã "attributes"
ååä»ãã¹ããããç½®ãæãã¦ãã¾ãã<element-details>
ã¯ã·ã£ãã¦ã«ã¼ãããååä»ãã¹ããããæç¤ºçã«åç
§ãã¦ããªããããååä»ãã¹ãããã®å
容ã¯ã·ã£ãã¦ã«ã¼ãã®æ¢å®ã®å
容ãåãè¾¼ã¾ãã¾ããRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4