CSS 中 `data-status` 的使用详解

简介: `data-status` 是HTML5自定义属性,用于存储元素状态(如active、error),结合CSS属性选择器可动态应用样式,支持精确匹配、模糊匹配及伪元素内容插入,提升前端状态管理灵活性。

@TOC

概述

data-status 是 HTML5 推出的自定义数据属性(data-*)之一,它允许在 HTML 元素上嵌入自定义数据,通常用于表示状态信息,如“active”“pending”“error”等。结合 CSS 属性选择器,可以灵活地为不同状态应用不同样式。

1. 语法与基础

HTML 示例

<div data-status="active">Active Status</div>
<div data-status="pending">Pending Status</div>
<div data-status="error">Error Status</div>

CSS 属性选择器匹配

  • [data-status]:选中所有带有 data-status 属性的元素。
  • [data-status="active"]:选中 data-status 属性值完全等于 active 的元素。
  • [data-status*="pen"]:选中属性值包含 pen 的元素。
  • [data-status^="act"]:选中属性值以 act 开头的元素。
  • [data-status$="ing"]:选中属性值以 ing 结尾的元素。

2. 实际应用示例

示例 1:根据状态设置颜色

div[data-status="active"] {
   
    color: green;
}
div[data-status="pending"] {
   
    color: orange;
}
div[data-status="error"] {
   
    color: red;
}

示例 2:根据部分属性值匹配

div[data-status*="pen"] {
   
    background-color: #fff3cd;
}

只要属性值包含 pen,就会被选中。

示例 3:结合伪元素动态显示内容

div[data-status]::after {
    
    content: " (" attr(data-status) ")";
    color: gray;
}

会在元素后面动态显示 data-status 的值,如“Active Status (active)”。

3. 高级用法

结合 JavaScript 动态修改状态

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,就会被选中。

4. 伪元素 attr() 函数说明

attr() 函数目前只能用于 content 属性,用于在伪元素中显示属性值,如:

div::before {
   
    content: attr(data-status);
}

但无法直接用于 leftwidth 等属性。如需动态控制这些属性,推荐使用 CSS 变量(--var)或 JS。

5. 兼容性与注意事项

  • 所有现代浏览器均支持 data-* 属性和 CSS 属性选择器。
  • IE8 及以上支持,但需声明 <!DOCTYPE>
  • attr() 目前仅能用于 content,未来 CSS 标准可能扩展。

6. 实战代码示例

<!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>

7. 参考来源

总结

  • data-status 是一种灵活的自定义属性,用于存储状态信息。
  • CSS 属性选择器(如 [data-status="value"])能根据属性值精准匹配并应用样式。
  • 配合 attr() 可在伪元素中动态显示属性值。
  • 适合用于组件状态管理、表单校验、交互反馈等场景。
    如需更复杂的动态样式,可结合 CSS 变量或 JavaScript。
相关文章
|
27天前
|
安全 算法 Java
Android APK签名机制的工作原理、结构差异、安全局限与优势
本文深入解析Android APK的v1与v2签名机制,涵盖工作原理、结构差异、安全局限及最佳实践。详述身份认证、完整性保护等核心目标,对比各版本优劣,并提供签名生成、验证流程与生产环境建议,助力开发者构建安全可信的应用。
381 1
|
27天前
|
SQL JSON 分布式计算
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第六篇,MaxCompute SQL语法及函数功能增强。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
238 20
|
27天前
|
SQL 分布式计算 DataWorks
【跨国数仓迁移最佳实践7】基于 MaxCompute 多租的大数据平台架构
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第七篇,基于MaxCompute 多租的大数据平台架构。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
209 27
|
27天前
|
小程序 JavaScript 关系型数据库
基于微信小程序的民宿预定系统
本项目设计并实现基于微信小程序的民宿预订管理系统,结合MySQL、Vue、Django等技术,整合民宿资源,优化预订流程,提升用户与经营者效率,推动民宿行业信息化发展。
|
27天前
|
数据采集 运维 数据可视化
Python时间序列数据分析与可视化实战指南
本文以贵州茅台股价为例,详解Python时间序列分析全流程:从数据获取、清洗预处理到可视化与异常检测,涵盖移动平均、季节性分解、自相关分析等核心技术,并结合Plotly实现交互式图表,助你挖掘金融数据中的趋势与规律。
244 0
|
20天前
|
SQL 关系型数据库 MySQL
MySQL从入门到精通:系统性学习路径
“MySQL从入门到精通”系统梳理了从基础到高阶的完整学习路径,涵盖安装配置、SQL语法、数据库设计、事务锁机制、性能优化、主从复制及分库分表等核心内容,结合实战任务帮助开发者由浅入深掌握MySQL,助力成为数据库高手。
145 13
|
22天前
|
消息中间件 Java 调度
深入探讨进程、线程和协程之间的区别和联系
本文深入解析进程、线程与协程的核心区别与联系,涵盖资源分配、调度机制、通信方式及性能对比。结合代码示例与实际场景,阐明三者在高并发系统中的协同应用,助你掌握现代并发编程设计精髓。(239字)
134 11
|
28天前
|
JavaScript 前端开发 安全
JavaScript 数组扁平化:四种方法详解与最佳实践
本文详解JavaScript数组扁平化的四种主流方法:`flat()`、扩展运算符+`concat`、`reduce`和`for...of`循环,从语法、性能、兼容性等维度对比分析,结合适用场景与最佳实践,助你高效处理嵌套数组。
228 9
|
29天前
|
Rust Java Go
Go、Rust、Kotlin、Python 与 Java 从性能到生态,全面解读五大主流编程语言
本文系统对比Go、Rust、Kotlin、Python与Java五大主流语言,从性能、并发、类型系统到生态、学习曲线等维度深入分析,结合代码示例与应用场景,助你精准选型,把握技术趋势。
326 6
|
18天前
|
自然语言处理 JavaScript 前端开发
全面解析 i18n:从概念到实践,再到底层原理
本文系统讲解国际化(i18n)的核心概念与实现原理,涵盖多语言文本、日期、数字、复数等处理方式,结合 i18next 与 Vue I18n 实战案例,深入剖析资源分离、环境识别与动态替换三大机制,并分享插值、格式化、CI/CD 集成等最佳实践,助力构建可扩展的全球化应用。
243 14

热门文章

最新文章