Son aktivite 10 months ago

這段 HTML + Lit 程式碼建立了一個 自訂 Web Component <my-card>,用於顯示 標題 (title) 和內容 (content) 的卡片元件,並透過 Shadow DOM 確保內部樣式與外部頁面樣式相互隔離。它示範了 如何使用 Lit 定義 Web Components,並確保內部 CSS 只影響元件本身,適用於 可重用 UI 元件開發、獨立樣式管理、提升前端模組化,讓開發者能更輕鬆建立可組合的 UI 元件。

Revizyon 1bd228492491353f1f904f8f23cc02b91955f5b5

lit_card_example.html Ham
1<!DOCTYPE html>
2<html lang="zh-TW">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Lit 模組範例</title>
7 <script type="module" src="https://unpkg.com/lit@2.0.0/lit.min.js"></script>
8</head>
9<body>
10
11<my-card title="歡迎訊息" content="這是一張使用 Shadow DOM 的卡片。"></my-card>
12
13<style>
14 /* 這個樣式不會影響 Shadow DOM 內的元素 */
15 p {
16 color: red;
17 font-size: 24px;
18 }
19</style>
20
21<p>這是頁面上的一般段落,樣式不會影響到卡片內容。</p>
22
23<script type="module">
24 import { LitElement, html, css } from 'lit';
25
26 class MyCard extends LitElement {
27 // 定義樣式
28 static styles = css`
29 .card {
30 border: 1px solid #ccc;
31 border-radius: 4px;
32 padding: 16px;
33 margin: 16px;
34 font-family: Arial, sans-serif;
35 }
36 h2 {
37 color: #333;
38 font-size: 18px;
39 }
40 p {
41 color: #666;
42 font-size: 14px;
43 }
44 `;
45
46 // 定義屬性
47 static properties = {
48 title: { type: String },
49 content: { type: String },
50 };
51
52 // 元件渲染模板
53 render() {
54 return html`
55 <div class="card">
56 <h2>${this.title}</h2>
57 <p>${this.content}</p>
58 </div>
59 `;
60 }
61 }
62
63 customElements.define('my-card', MyCard);
64</script>
65
66</body>
67</html>
68