
data-status 是 HTML5 推出的自定义数据属性(data-*)之一,它允许在 HTML 元素上嵌入自定义数据,通常用于表示状态信息,如“active”“pending”“error”等。结合 CSS 属性选择器,可以灵活地为不同状态应用不同样式。
<div data-status="active">Active Status</div>
<div data-status="pending">Pending Status</div>
<div data-status="error">Error Status</div>[data-status]:选中所有带有 data-status 属性的元素。[data-status="active"]:选中 data-status 属性值完全等于 active 的元素。[data-status*="pen"]:选中属性值包含 pen 的元素。[data-status^="act"]:选中属性值以 act 开头的元素。[data-status$="ing"]:选中属性值以 ing 结尾的元素。div[data-status="active"] {
color: green;
}
div[data-status="pending"] {
color: orange;
}
div[data-status="error"] {
color: red;
}div[data-status*="pen"] {
background-color: #fff3cd;
}只要属性值包含
pen,就会被选中。
div[data-status]::after {
content: " (" attr(data-status) ")";
color: gray;
}会在元素后面动态显示
data-status的值,如“Active Status (active)”。
document.querySelector('div').setAttribute('data-status', 'error');通过 JS 动态修改属性值,CSS 会自动应用新样式。
如果 data-status 有多个值(用空格分隔),例如:
<div data-status="active primary">Active and Primary</div>可以用:
div[data-status~="active"] {
font-weight: bold;
}只要属性值中包含独立的
active,就会被选中。
attr() 函数说明attr() 函数目前只能用于 content 属性,用于在伪元素中显示属性值,如:
div::before {
content: attr(data-status);
}但无法直接用于
left、width等属性。如需动态控制这些属性,推荐使用 CSS 变量(--var)或 JS。
data-* 属性和 CSS 属性选择器。<!DOCTYPE>。attr() 目前仅能用于 content,未来 CSS 标准可能扩展。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Data-Status Example</title>
<style>
div[data-status="active"] {
color: green;
}
div[data-status="pending"] {
color: orange;
}
div[data-status="error"] {
color: red;
}
div[data-status]::after {
content: " (" attr(data-status) ")";
color: gray;
}
</style>
</head>
<body>
<div data-status="active">Active Status</div>
<div data-status="pending">Pending Status</div>
<div data-status="error">Error Status</div>
</body>
</html>data-status 是一种灵活的自定义属性,用于存储状态信息。[data-status="value"])能根据属性值精准匹配并应用样式。attr() 可在伪元素中动态显示属性值。