| | |
| | | <section> |
| | | <h3>Auf Attribute reagieren</h3> |
| | | <pre> |
| | | <code class="html" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | <hello-world my-attribute="a"></hello-world> |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers="2|8-10"> |
| | | <script type="text/template"> |
| | | class HelloWorldComponent extends HTMLElement { |
| | |
| | | <section> |
| | | <iframe data-src="/assets/html/hello-sayer.html"></iframe> |
| | | </section> |
| | | <section> |
| | | <h3>Elemente aus dem LightDOM platzieren mit <code><slot></code></h3> |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | this.root.innerHTML = ` |
| | | <span>Hello <slot></slot>!</span> |
| | | `; |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <h4>Beispiel</h4> |
| | | <pre> |
| | | <code class="html" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | <hello-sayer>Joe</hello-sayer> |
| | | <hello-sayer>Allie</hello-sayer> |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | <iframe data-src="/assets/html/hello-sayer-2.html"></iframe> |
| | | </section> |
| | | <section> |
| | | <h3>Mehrfache benannte <code><slot></code>s</h3> |
| | | <pre> |
| | | <code class=js data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | this.root.innerHTML = ` |
| | | <span> |
| | | first name: <slot name="first"></slot> | |
| | | last name: <slot name="last"></slot> |
| | | </span> |
| | | `; |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <h4>Beispiel</h4> |
| | | <pre> |
| | | <code class="html" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | <name-field> |
| | | <span slot="first">Leia</span> |
| | | <span slot="last">Organa</span> |
| | | </name-field> |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | <iframe data-src="/assets/html/name-field.html"></iframe> |
| | | </section> |
| | | <section> |
| | | <h3>Aufgabe</h3> |
| | | <p>Entwerfe eine <code>CardComponent</code> (Vorlage "card-component.html") in folgendem Stil und nutze dabei sinnvolle <code><slot></code>s:</p> |
| | | <pre> |
| | | <code class="html" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | <card-component> |
| | | <span slot="title">This is a title</span> |
| | | <span slot="content">...Lorem ipsum dolor sit amet, consetetur sadipscing elitr...</span> |
| | | </card-component> |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | <iframe data-src="/assets/html/exercise-card-component.html"></iframe> |
| | | </section> |
| | | <section> |
| | | <h3>Styling einer Web Component</h3> |
| | | <pre> |
| | | <code class="css" data-trim data-line-numbers> |
| | | <script type="text/template"> |
| | | :host { |
| | | display: block; /* inline, inline-block, flex, grid etc... */ |
| | | |
| | | color: red; |
| | | |
| | | font-family: Arial, Helvetica, sans-serif; |
| | | } |
| | | </script> |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | </section> |
| | | </div> |
| | | </div> |