构建无障碍组件之Breadcrumb Pattern
2026年1月31日 16:32
面包屑导航展示层级路径,助用户定位。实现:nav + aria-label + aria-current。
建议缩进4个字符,在现代前端工程化,缩进4个字符比2字符更好的可读性。也不影响最终的结果
统一使用HTML5声明<!DOCTYPE html>
<meta charset="utf-8"/>
<!-- 网页标题 -->
<title>网页标题</title>
<!-- 页面关键词 -->
<meta name ="keywords" content =""/>
<!-- 页面描述 -->
<meta name ="description" content =""/>
<!-- 网页作者 -->
<meta name ="author" content =""/>
<meta http-equiv="X-UA-Compatible" content="IE = edge,chrome = 1"/>
<!-- device-width 是指这个设备最理想的 viewport 宽度 -->
<!-- initial-scale=1.0 是指初始化的时候缩放大小是1,也就是不缩放 -->
<!-- user-scalable=no 是指禁止用户进行缩放 yes 允许缩放-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
<meta name="format-detection" content="telephone=no"/>
pc端建议
<title>网页标题</title>
<meta charset="utf-8"/>
<meta name="keywords" content="your keywords"/>
<meta name="description" content="your description"/>
<meta name="author" content="author,email address"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
移动端建议
<title>网页标题</title>
<meta charset="utf-8"/>
<meta name="keywords" content="your keywords"/>
<meta name="description" content="your description"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
<meta name="format-detection" content="telephone=no"/>
<br/>后面的/不要省略,常用的自闭合标签:<br/>
<img/>
<input/>
<link/>
<meta/>
<base/>
<source/>
<html></html>
<body></body>
<head></head>
<script></script>
<style></style>
<iframe></iframe>
<noscript></noscript>
<title></title>
<!-- 普通标签 -->
<h1></h1>
<p></p>
<ul></ul>
<ol></ol>
<li></li>
<option></option>
<div></div>
<span></span>
<a></a>
<form></form>
<label></label>
<button></button>
<textarea></textarea>
<select></select>
<canvas></canvas>
<audio></audio>
<video></video>
<!-- 语义化标签 -->
<header></header>
<footer></footer>
<nav></nav>
<menu></menu>
<main></main>
<article></article>
<section></section>
<aside></aside>
<figure></figure>
<figcatption></figcaption>
<time></time>
<address></address>
-分割。且需要闭合标签<span>、<a>、等行内元素不要在嵌套其他块级元素。 空格<小于>大于&和"引号data-*,使用小写字符,避免使用特殊字符,多单词使用-分割js 使用
// 获取属性data-user-id="123"
let userId = userDiv.dataset.userId
userId = userDiv.getAttribute('data-user-id');
// 修改
userDiv.dataset.userId = "456";
userDiv.setAttribute('data-user-id', '789');
// 删除属性
delete userDiv.dataset.userRole;
userDiv.removeAttribute('data-user-id');
//访问所有data
const allData = element.dataset; // 返回一个 DOMStringMap 对象
css 使用
[data-role="admin"] {
background-color: #ffebee;
}
.tooltip::before {
content: attr(data-tooltip);
/* 其他样式 */
}
img必须(尽量)要使用alt属性form表单内<!-- Comment Text -->
<div>...</div>
<input type="text"
class="form-control"
id="exampleInputEmail1"
placeholder="Enter email"
data-attribute1="value1"
data-attribute2="value2"/>