0

0

如何使用 CSS 实现复选框勾选后文本自动删除线效果

心靈之曲

心靈之曲

发布时间:2026-02-11 17:58:22

|

872人浏览过

|

来源于php中文网

原创

如何使用 CSS 实现复选框勾选后文本自动删除线效果

本文介绍一种纯 css 方案,通过 :checked + label 组合选择器为待办事项添加删除线样式,避免 javascript 操作 dom 的复杂性与兼容性问题,提升性能与可维护性。

在构建 To-Do 列表应用(如基于 Express + EJS 的服务端渲染项目)时,常需实现“勾选复选框即为任务完成,并视觉上呈现删除线效果”。虽然可通过 JavaScript 动态修改

元素的 text-decoration 或 webkitTextStroke 属性实现,但该方式存在明显缺陷:

  • 多个元素使用相同 name 属性(如 "checker" / "para")导致 getElementsByName() 返回 NodeList 无法按预期索引匹配;
  • webkitTextStroke 并非标准文本删除线方案,仅模拟描边效果,语义不正确、可访问性差,且在多数浏览器中不支持 text-stroke 控制删除线;
  • 事件监听绑定发生在脚本执行时,若 DOM 尚未完全加载或 EJS 渲染顺序异常,boxes.length 可能为 0,导致监听失效。

推荐方案:纯 CSS 驱动,语义清晰、零 JS、高可访问性

核心思路是将复选框与文本内容建立明确的 HTML 结构关系,利用 CSS 的相邻兄弟选择器(+)和 :checked 状态伪类实现样式联动:

✅ 正确 HTML 结构(EJS 模板中使用)

<% for (let i = listItems2.length - 1; i >= 0; i--) { %>
  
<% } %>
? 关键点: 每个 必须有唯一 id(如 task-0, task-1); 对应 必须设置 for 属性指向该 id; 使用 accent-color 统一复选框颜色(现代浏览器支持); label 默认包裹文本,语义正确,点击即可触发复选框切换。

✅ 推荐 CSS 样式(支持无障碍与视觉反馈)

/* 基础样式 */
label {
  color: #1f2937;
  font-size: 1.25rem; /* 替代 text-[32px],更可维护 */
  font-weight: 200;
  cursor: pointer;
  transition: all 0.2s ease;
}

/* 勾选后:删除线 + 灰色弱化 + 可选视觉提示 */
input[type="checkbox"]:checked + label {
  text-decoration: line-through;
  color: #6b7280;
  opacity: 0.85;
}

/* 【增强可访问性】隐藏但保留给屏幕阅读器的上下文提示(非必需,按需启用)*/
input[type="checkbox"]:checked + label::before {
  content: "[已完成] ";
  font-size: 0.8em;
  color: #6b7280;
}

? 为什么不用 webkitTextStroke?
text-stroke 是文字描边属性,用于艺术字体效果,不能替代 text-decoration: line-through。后者是 W3C 标准定义的语义化删除线,被所有主流浏览器原生支持,且对屏幕阅读器友好(配合 ARIA 或语义化标签可进一步增强)。

Slazzer
Slazzer

免费在线抠除图片背景

下载

立即学习前端免费学习笔记(深入)”;

⚠️ 注意事项与最佳实践

  • 不要重复使用 id:原代码中所有复选框 id="checkbox_id" 违反 HTML 规范(id 必须唯一),会导致 for 关联失效;
  • 避免 name="para" 等非标准用法:name 属性对

    无效,应使用语义化

  • 服务端状态同步:CSS 仅控制前端视觉。若需持久化完成状态(如提交到 Express 后端),应在表单提交时读取 checked 状态,或通过 AJAX 发送变更;
  • 移动端适配:确保
  • 渐进增强:即使 CSS 未加载,复选框仍可正常交互,符合渐进增强原则。

✅ 总结

用 input:checked + label 实现删除线,是兼顾简洁性、可访问性与健壮性的最佳实践。它消除了 JavaScript 绑定时机、DOM 查询匹配、跨浏览器兼容等潜在风险,同时使模板逻辑更清晰、样式更易维护。在 Express + EJS 项目中,只需调整 HTML 结构与少量 CSS,即可零 JS 实现专业级 To-Do 交互体验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

163

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

164

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

119

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

242

2024.09.24

Node.js后端开发与Express框架实践
Node.js后端开发与Express框架实践

本专题针对初中级 Node.js 开发者,系统讲解如何使用 Express 框架搭建高性能后端服务。内容包括路由设计、中间件开发、数据库集成、API 安全与异常处理,以及 RESTful API 的设计与优化。通过实际项目演示,帮助开发者快速掌握 Node.js 后端开发流程。

5

2026.02.10

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

939

2023.09.19

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

520

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

350

2023.07.28

2026春节习俗大全
2026春节习俗大全

本专题整合了2026春节习俗大全,阅读专题下面的文章了解更多详细内容。

68

2026.02.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.3万人学习

CSS教程
CSS教程

共754课时 | 30.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号