前端可访问性:别让你的网站对某些人关闭大门

前端可访问性:别让你的网站对某些人关闭大门

毒舌时刻

这网站做的跟迷宫似的,正常人都找不到路,更别说有障碍的人了。

各位前端同行,咱们今天聊聊前端可访问性。别告诉我你还在忽略可访问性,那感觉就像在公共建筑里不建无障碍通道——能进,但不是所有人都能进。

为什么你需要关注可访问性

最近看到一个项目,按钮没有焦点状态,表单没有标签,屏幕阅读器根本无法正常工作。我就想问:你是在做网站还是在做密室逃脱?

反面教材

// 反面教材:忽略可访问性 function App() { return ( <div> <h1>我的网站</h1> <div> <input type="text" placeholder="用户名" /> <input type="password" placeholder="密码" /> <button>登录</button> </div> <div> <img src="logo.png" /> <a href="#">关于我们</a> <a href="#">联系我们</a> </div> </div> ); } export default App; 

毒舌点评:这代码,就像在黑暗中摸索,什么都看不见。

正确姿势

1. 语义化 HTML

// 正确姿势:语义化 HTML function App() { return ( <div> <header> <h1>我的网站</h1> </header> <main> <form> <div> <label htmlFor="username">用户名</label> <input type="text" aria-label="用户名" /> </div> <div> <label htmlFor="password">密码</label> <input type="password" aria-label="密码" /> </div> <button type="submit" aria-label="登录">登录</button> </form> </main> <footer> <img src="logo.png" alt="网站 logo" /> <nav> <ul> <li><a href="#">关于我们</a></li> <li><a href="#">联系我们</a></li> </ul> </nav> </footer> </div> ); } export default App; 

2. ARIA 标签

// 正确姿势:使用 ARIA 标签 function App() { const [expanded, setExpanded] = React.useState(false); return ( <div> <button aria-expanded={expanded} aria-controls="menu" onClick={() => setExpanded(!expanded)} > 菜单 </button> <nav aria-hidden={!expanded}> <ul> <li><a href="#">首页</a></li> <li><a href="#">关于我们</a></li> <li><a href="#">联系我们</a></li> </ul> </nav> </div> ); } export default App; 

3. 键盘导航

// 正确姿势:键盘导航 function App() { const [focused, setFocused] = React.useState(0); const items = ['首页', '关于我们', '联系我们', '服务']; const handleKeyDown = (e) => { if (e.key === 'ArrowRight') { setFocused((prev) => (prev + 1) % items.length); } else if (e.key === 'ArrowLeft') { setFocused((prev) => (prev - 1 + items.length) % items.length); } }; return ( <nav onKeyDown={handleKeyDown} tabIndex={0}> <ul> {items.map((item, index) => ( <li key={index}> <a href="#" tabIndex={-1} style={{ outline: index === focused ? '2px solid blue' : 'none', backgroundColor: index === focused ? '#e0e0e0' : 'transparent' }} onClick={() => setFocused(index)} > {item} </a> </li> ))} </ul> </nav> ); } export default App; 

4. 颜色对比度

/* 正确姿势:颜色对比度 */ /* styles.css */ body { color: #333333; /* 深色文本 */ background-color: #ffffff; /* 浅色背景 */ } a { color: #0066cc; /* 蓝色链接,对比度高 */ text-decoration: none; } a:hover { color: #004499; text-decoration: underline; } button { background-color: #0066cc; color: #ffffff; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; } button:hover { background-color: #004499; } 

毒舌点评:这才叫可访问性,让所有人都能平等地使用你的网站。

Read more

B站PC端web自动开启字幕脚本(2026新版适配)

B站自动字幕用户脚本:快捷键开关 + 自动开启字幕(2026新版适配) 作者:Apixus 更新日期:2026年3月5日 项目地址:GitHub仓库 一、脚本介绍 你是否经常在B站看视频时反复手动开启字幕?是否希望切换视频时字幕能自动开启? 这个用户脚本就是为了解决这些问题而开发的。 B站自动字幕脚本 提供了以下功能: * 🎯 快捷键控制:按 C 键快速开启或关闭字幕 * 🔄 自动开启:切换分P、点击推荐视频时自动打开字幕 * 🆕  2026新版适配:专为B站最新版播放器优化 * ⚡ 性能优化:智能监听,告别卡顿轮询 * 🛡️ 防冲突:自动识别输入框,避免误触 二、适用页面 * 普通视频页:https://www.bilibili.com/video/* * 播放列表页:https://www.bilibili.com/list/* 支持普通视频页、番剧页、播放列表页等常见场景。 三、

IDEA 创建 Spring Boot Web 项目完整教程

一、新建 Spring Boot 项目 1. 打开新建项目窗口 * 打开 IntelliJ IDEA → 点击 新建项目(或从欢迎页选择 New Project) * 在左侧生成器中选择 Spring Boot *          截图如下 * 选项填写内容说明服务器 URLstart.spring.ioSpring 官方初始化地址名称demo项目名位置D:\idea项目存放路径(建议不要含中文 / 空格)语言Java开发语言类型Maven项目构建工具组org.example项目组织标识工件demo项目模块名软件包名称com.example.demo根包名JDK21 Oracle OpenJDK 21.0.8你的 JDK 版本Java17源码兼容版本(Spring Boot 4.0.3 推荐 Java 17+)打包Jar可执行 Jar 包(Spring

33岁失业女前端程序员,可以转行干什么啊?

33岁失业女前端程序员,可以转行干什么啊?

33岁失业,既没有20+的精力无限,也还没到40+的稳定沉淀,加上前端行业技术迭代快、年轻化竞争激烈的现状,焦虑感扑面而来太正常了。 但作为一名深耕行业多年的观察者,我想先给各位姐妹吃颗定心丸:33岁的前端经验不是“包袱”,而是“宝藏”。咱们多年积累的逻辑思维、用户感知、跨团队沟通能力,以及对技术实现边界的把控,都是转行的核心优势。与其纠结“年龄大了怎么办”,不如聚焦“我的优势能迁移到哪里”。结合行业趋势和女性从业者的特质,整理了6个高适配、易落地的转行方向,供大家参考。 一、技术相关赛道:发挥积累,平稳过渡 如果对技术还有热情,不想彻底脱离IT圈,这类方向能最大化利用前端基础,转型成本最低,也是最容易快速上手的选择。 1. 测试开发工程师:细节控的“降维打击” 前端开发天天和界面打交道,最清楚用户会怎么操作、哪里容易出bug,这种对用户行为的敏感度,是测试开发的核心竞争力。而且咱们懂代码、懂开发流程,从“找bug”升级为“

【DGX Spark 实战】部署 vLLM + Open WebUI 运行 Qwen3-Coder-Next-FP8(CUDA 13.0 兼容版)-修订

【DGX Spark 实战】部署 vLLM + Open WebUI 运行 Qwen3-Coder-Next-FP8(CUDA 13.0 兼容版)-修订

感谢Qwen3-Coder-Next-FP8为本文进行润色,调整,绘制架构图。但是所有的文字及链接经过手工修订。需要SGLang推理框架,移步 【DGX Spark 实战】部署SGLang,千问3.5-27B模型初探 我们已严格按您提供的原始内容(包括 CUDA_VERSION=130、CPU_ARCH=aarch64、路径 ~/vllm、用户 admin 等)进行全量修正与标准化,确保所有命令与 DGX Spark 实际环境一致。 摘要本文详细记录在 NVIDIA DGX Spark(Grace Blackwell 架构)上部署 vLLM 推理服务并接入 Open WebUI 的完整流程,包含 FlashAttention 编译、vLLM wheel 安装、Qwen3-Coder-Next-FP8