創建並使用自定義標簽
Web Components 標准非常重要的一個特性是,它使開發者能夠將HTML頁面的功能封裝為 custom elements(自定義標簽),本篇介紹使用 CustomElementRegistry 來管理我們的自定義標簽
1. 創建自定義標簽
<script>
class PopUpInfo extends HTMLElement {
constructor () {
super();
// 在此定義自定義標簽 我頂一個icon和text並列的
// Create a shadow root
let shadow = this.attachShadow({mode: 'open'});
// 創建我們需要的標簽
let wrapper = document.createElement('div');
let iconBox = document.createElement('div');
let textBox = document.createElement('div');
// 為標簽添加樣式
wrapper.setAttribute('class','wapper');
iconBox.setAttribute('class','icon');
textBox.setAttribute('class','text');
let text = this.getAttribute('text'); // 獲取標簽里面傳遞的值
textBox.textContent = text;
let imgUrl;
if(this.hasAttribute('img')) {
imgUrl = this.getAttribute('img');
} else {
imgUrl = 'default.png'; // 設置一個默認圖片
}
var img = document.createElement('img');
img.src = imgUrl;
iconBox.appendChild(img);
// 書寫樣式
var style = document.createElement('style');
let lStyleStr = '.wrapper { display: flex; justify-content: center; align-items: center; width: 100%; height: 50px;}'
lStyleStr += '.icon {margin-right: 10px; width: 50px; height: 50px;}'
lStyleStr += '.icon img { width: 100%; height: 100%;}'
lStyleStr += '.text { flex: 1; font-size: 14px; color: #333; line-height: 50px;}'
style.textContent = lStyleStr;
// 將樣式和dom元素掛載到頁面
shadow.appendChild(style);
shadow.appendChild(wrapper);
wrapper.appendChild(icon);
wrapper.appendChild(info);
}
}
</script>
2. 注冊自定義標簽
<script> customElements.define('popup-info', PopUpInfo); </script>
3. 使用自定義標簽
<body>
<popup-info img="you_picture.jpg" text="你的文字"></popup-info>
</body>