Data Attributes
什麼是 Data Attributes
在 HTML5 可以在 HTML 元素上使用 data- 作為前綴來加上自定義的資料
用途
Data Attributes 主要用於在前端儲存一些只有 JavaScript 需要使用的相關資料,而這些資料又沒有合適的標準 HTML 屬性可以存放時。
怎麼用
- 在 HTML 上自定義資料
<div
id="product-card"
data-product-id="12345"
data-category="electronics"
data-in-stock="true"
>
商品名稱
</div>
- 屬性名稱只能小寫字母、數字、連字號
- JS 讀取時會將連字號後的字母轉成駝峰,例
productId
- JavaScript 讀取 (
dataset)
const productElement = document.querySelector('#product-card')
// 讀取資料
const productId = productElement.dataset.productId; // '12345'
const category = productElement.dataset.category; // 'electronics'
const inStock = productElement.dataset.inStock === 'true'; // 值都是字串
//修改資料
productElement.dataset.inStock = 'false';
注意事項
- 還是要使用正確的 HTML 標籤
- 在框架中使用率較低,但一些第三方套件可能還是用的到
- 可以用在 css 的額外狀態,例:
<button data-theme="dark">
其他
使用 Vue 的話怎麼呈現
收合卡片使用 JS 的話可能會使用
data-state="open"來處理,而vue的話則是使用ref來管理開關
<script setup>
import { ref } from 'vue';
const isOpen = ref(false);
const toggleCard = () => {
isOpen.value = !isOpen.value;
}
</script>
<template>
<div class="card" @click="toggleCard">
<div>
<h3>
產品資訊
<span>{{ isOpen ? '▲' : '▼' }}</span>
</h3>
</div>
<div v-show="isOpen">
<p>這是詳細的產品描述內容,只有當狀態為開啟 (isOpen: true) 時才會顯示。</p>
<p>產品編號: 1111</p>
</div>
</div>
</template>
CODE
連結到 Codepen