当前位置: 首页 > news >正文

用 CSS 做个超酷的三角形开关按钮,纯前端就能实现!

您好,我是 Silvana,一名前端开发工程师菜鸟。

最近捣鼓了个超有意思的小前端效果,忍不住想跟大家分享。

不用一行 JS 代码,单靠 HTML+CSS 就能做出一个带三角形动效的开关按钮,切换的时候三角形会跟着移动,还会从绿色变成红色,文字也会同步切换显示 “ON” 和 “Off”,视觉感拉满,不管是做个人练习还是加到项目里当小开关都超合适。

这个效果的核心其实就是利用 CSS 的 skew 变形、checkbox 的:checked 伪类,还有 CSS 边框做三角形的小技巧,代码量不多,我给每一行都加了注释,新手也能轻松看懂,直接复制就能跑起来。

完整源码(附详细注释)

1. HTML 文件(index.html)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><!-- 适配移动端,保证效果在手机上正常显示 --><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>CSS自定义三角形形状复选框按钮</title><!-- 引入CSS样式文件 --><link rel="stylesheet" href="style.css" /></head><body><!-- 开关按钮容器,用label包裹实现点击交互 --><label><!-- 核心复选框,用于控制开关状态,隐藏原生样式 --><input type="checkbox"><!-- 关闭状态文字 --><text>Off</text><!-- 开启状态文字 --><text>ON</text><!-- 三角形装饰元素,随开关状态变化 --><span class="angle"></span></label></body>
</html>

2. CSS 文件(style.css)

/* 初始化全局样式,清除默认边距,统一盒模型 */
* {margin: 0;padding: 0;box-sizing: border-box;
}
/* 页面主体样式,让按钮居中显示,背景偏深色突出按钮 */
body{display: flex;justify-content: center;align-items: center;min-height: 100vh;background: #2b2b2b;
}
/* 开关按钮外层容器样式 */
label {position: relative; /* 作为子元素定位的参考 */width: 120px; /* 按钮宽度 */height: 60px; /* 按钮高度 */background: #222; /* 按钮背景色 */display: flex;justify-content: space-between;align-items: center;/* 内层阴影,营造立体质感 */box-shadow: inset 0 2px 15px rgba(0,0,0,0.2),inset 0 2px 2px rgba(0,0,0,0.2),inset 0 -1px 1px rgba(0,0,0,0.2);border-radius: 10px; /* 按钮圆角 */transform: skewX(330deg); /* 按钮整体倾斜,增加设计感 */cursor: pointer; /* 鼠标悬浮显示手型 */
}
/* 隐藏原生复选框样式 */
label input {position: absolute;appearance: none; /* 取消默认样式 */
}/* 三角形元素基础样式 */
label .angle{position: absolute;/* 利用边框透明特性制作三角形 */border-left: 35px solid transparent;border-right: 35px solid transparent;border-bottom: 60px solid #0f0; /* 初始绿色三角形 */transform: skewX(30deg) scale(0.6) translateX(-16px); /* 变形调整位置和大小 */filter: drop-shadow(0 0 10px #0f0) drop-shadow(0 0 30px #0f0); /* 绿色发光效果 */transition: 0.5s; /* 过渡动画,让切换更丝滑 */
}
/* 复选框选中时,三角形样式变化 */
label input:checked ~ .angle{border-bottom: 60px solid #f00; /* 切换为红色三角形 *//* 移动位置+旋转,模拟开关滑动效果 */transform: skewX(30deg) scale(0.6) translateX(108px) rotate(180deg);filter: drop-shadow(0 0 10px #f00) drop-shadow(0 0 30px #f00); /* 红色发光效果 */
}
/* 文字通用样式 */
label text{padding: 10px;color: #fff;transition: 0.5s; /* 过渡动画 */text-transform: uppercase; /* 文字大写 */
}
/* 初始状态下“ON”文字隐藏 */
label text:nth-child(2){color: #f00; /* 红色文字 */transform: skew(30deg) scale(0); /* 缩放隐藏 */filter: drop-shadow(0 0 10px #f00) drop-shadow(0 0 30px #f00); /* 红色发光 */
}
/* 复选框选中时,显示“ON”文字 */
label input:checked ~ text:nth-child(2){transform: skew(30deg) scale(1); /* 缩放显示 */
}/* 初始状态下显示“Off”文字 */
label text:nth-child(3){color: #0f0; /* 绿色文字 */transform: skew(30deg) scale(1); /* 缩放显示 */filter: drop-shadow(0 0 10px #0f0) drop-shadow(0 0 30px #0f0); /* 绿色发光 */
}
/* 复选框选中时,隐藏“Off”文字 */
label input:checked ~ text:nth-child(3){transform: skew(30deg) scale(0); /* 缩放隐藏 */
}

写着写着就到了结尾,祝您今晚有个好梦(代码少报错一点)。

本文由mdnice多平台发布

http://www.jsqmd.com/news/307353/

相关文章:

  • 分布式事务专题总结
  • 杭州研究生留学中介top10排名,性价比高机构推荐指南
  • 南京top10研究生留学机构,录取率高,为您留学保驾护航
  • 深圳硕士留学机构top10全解析,学员满意度高成核心优势
  • 苏州硕士留学中介top10排名出炉!无隐形消费让申请更安心
  • 天津研究生留学机构top10盘点,录取案例多,助力留学之路
  • 香港研究生留学中介哪个好?口碑排名揭晓,录取案例丰富!
  • 上海宠物牙科服务升级:2026年口碑医生推荐,猫咪口炎/狗狗牙结石/狗狗拔牙/宠物口腔溃疡诊疗,宠物牙科医生选哪个
  • 想知道北京最好的研究生留学机构吗?学员满意度高告诉你答案
  • 信息系统信创建设方案
  • 新加坡研究生留学中介口碑排名全面解析,稳定可靠机构详细推荐
  • 破解SQL性能瓶颈:索引优化核心策略
  • 百万级数据查询加速:SQL调优实战手册
  • 2026短视频爆梗音效大全:10个免费素材网站推荐
  • 免费音效素材打包下载避坑:2026年10个靠谱网站推荐
  • 免费音效合成器软件推荐 2026年十大高性价比工具盘点
  • 单北斗GNSS变形监测系统是什么?主要有怎样的应用与优势?
  • 【CDA干货】客户分群建模——RFM+K-Means用户画像——电商用户数据分析全流程:从数据到增长决策
  • 科技感UI系统音效哪里下?10个免费网站推荐!
  • 聊聊北京超市零售批发服务,哪家性价比高且口碑好?
  • 聊聊北京超市商品零售批发服务,哪家性价比高值得选
  • 2026年美国实惠展览工厂推荐,靠谱的厂家排名情况
  • 分析唐山口碑好的环保装修全屋定制公司怎么选择
  • 靠谱的双层24头小拉机生产厂家哪家强,2026年度排名揭晓
  • 说说上海装修装饰设计公司推荐,朗域装饰靠谱吗
  • AI短剧制作小程序源码系统,全智能创作系统源码全览
  • AI短剧创作系统源码,支持多用户角色与权限管理
  • 基于光学仿真的物理光学研究:傅立叶变换与衍射光场计算的深入探索
  • 模块化AI短剧创作源码系统,可插拔的剧本、音视频生成系统
  • 分析广东高性价比贴片太阳能板定制,0.8W、1.6W、1.5W定制怎么选