新闻中心

如何用css :checked与::after实现切换图标效果

2025-10-13
浏览次数:
返回列表
答案是使用CSS的:checked与::after可实现无JS的图标切换,通过隐藏输入框,利用label的伪元素绘制三线图标,选中时用transform和box-shadow变化为叉形。

如何用css :checked与::after实现切换图标效果

使用 CSS 的 :checked::after 可以在用户点击复选框或单选按钮时实现图标的切换效果,常用于自定义开关、菜单图标(如汉堡变叉)等场景。核心思路是隐藏默认的输入框,用伪元素展示自定义图标,并根据选中状态改变样式。

1. 基本结构准备

先创建一个带 ID 关联的 checkbox 输入框和一个用于显示图标的标签:

<input type="checkbox" id="toggle-icon">
<label for="toggle-icon"></label>

这个 label 将作为图标的载体,通过 CSS 控制其 ::after 伪元素来显示不同图形。

2. 隐藏默认输入框并设置图标容器

隐藏 input 并为 label 设置基本样式,使其成为一个可点击的图标区域:

#toggle-icon {
  display: none;
}

label {
  display: block;
  width: 24px;
  height: 24px;
  position: relative;
  cursor: pointer;
}

3. 使用 ::after 定义默认图标(如“—”)

通过伪元素绘制一个简单的三线图标(类似汉堡菜单):

label::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 70%;
  height: 2px;
  background: #000;
  box-shadow: 0 6px 0 #000, 0 -6px 0 #000;
  transition: all 0.3s ease;
}

这里用 background 和 box-shadow 绘出三条横线。

秀脸FacePlay 秀脸FacePlay

一款集成AI换脸、照片跳舞等多种AI特效玩法的App

秀脸FacePlay 124 查看详情 秀脸FacePlay

4. 切换状态:利用 :checked 改变 ::after 样式

当 checkbox 被选中时,让图标变为“×”形状:

#toggle-icon:checked + label::after {
  background: transparent;
  box-shadow: none;
  transform: translate(-50%, -50%) rotate(45deg);
  width: 80%;
  height: 2px;
}

#toggle-icon:checked + label::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) rotate(-45deg);
  width: 80%;
  height: 2px;
  background: #000;
  z-index: -1;
}

因为 ::after 已被占用,可以添加 ::before 来画第二条斜线,组成“×”。未选中时只显示三横,选中后三横消失,两条斜线出现。

5. 添加动画更流畅

加上过渡效果让切换更自然:

label::after,
label::before {
  transition: all 0.3s ease;
}

基本上就这些。通过控制伪元素的 content、transform、background 等属性,配合 :checked 状态,就能实现无 J*aScript 的图标切换。

以上就是如何用css :checked与::after实现切换图标效果的详细内容,更多请关注其它相关文章!


# 已被  # 福建抖音seo团队  # 玉林强大seo营销  # 鱼虾网seo  # 信息科技网站建设  # 山西公司网站建设的释义  # 湖南网站建设小程序单价  # 搜索关键词排名优化分析  # 曲靖个人网站建设哪家好  # 南充网站托管推广服务  # 河间大型网站建设名称大全  # 中文网  # 相关文章  # css  # 就能  # 选择器  # 两种类型  # 中不  # 自定义  # 如何用  # 输入框  # 伪元素  # js  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法  React/Next.js中实现列表项的动态选择与移动  React Hooks最佳实践:动态组件状态管理的组件化方案  高德地图公交到站提醒失败如何解决 高德提醒权限设置  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  Composer如何在生产环境安全地执行composer update  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  Python实时数据流中的动态最值查找策略  使用Python高效删除Word宏并转换DOCM为DOCX格式  内存疯狂猛猛涨价:主板销量直接腰斩!  Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明  押井守高度称赞《辐射4》:玩了八年都停不下来!  AO3镜像入口大全 AO3网页版内容访问全集  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  抖音网页版怎么|直播|_抖音网页版开播操作指南  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  优化Log4j2控制台输出性能:解决异步日志瓶颈  Pandas DataFrame 多条件优先级排序与排名  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  铃兰之剑为这和平的世界希里技能组及加点推荐  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  WordPress插件开发:正确注册卸载钩子与避免常见陷阱  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  Pyrogram与g4f集成:异步编程实践与常见错误解决  网站内容防复制粘贴的实现策略与局限性  在Runstone环境中高效处理TasteDive API的JSON数据  j*a toString()的覆盖  ArrayList与LinkedList操作复杂度详解:遍历与修改  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  微信语音通话掉线如何解决 微信语音通话稳定优化方法  在Typer应用中优雅地处理和重组任意命令行参数  优化大型XML文件解析:基于Python流式处理的内存高效方案  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性  极兔快递快件信息查询系统 极兔快递官网运单号追踪  excel如何生成目录 excel一键生成工作表目录超链接  mc.js免安装版 mc.js一键畅玩入口  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  PDF文件体积过大处理_PDF压缩技巧详解  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  必由学网页版入口 必由学官方平台直接访问  夸克浏览器网页版最新地址 夸克浏览器官方入口合集 

搜索