那些你不知道的炫酷开关交互效果(12种)1

简介: 那些你不知道的炫酷开关交互效果(12种)

本文将继续更新那些炫酷交互效果系列文章,今天带来的是有关 toggle 开关相关的组件。以下是本次文章涉及到的开关组件总览图,总计收集12款不同交互效果,相信总有一款适合你。

那些你不知道的炫酷交互效果系列:

效果1


基于普通的开关效果增加了向内部延伸的3D效果,核心是通过设置内阴影box-shadow: inset实现,除开对元素本身增加阴影,还设置了两个伪元素提升3D效果,以下是核心实现代码:

label {
    background: #af4c4c;
  border: .5px solid rgba(117, 117, 117, 0.31);
  box-shadow: inset 0px 0px 4px 0px rgba(0,0,0,0.2), 0 -3px 4px rgba(0,0,0,0.15);
    &::before {
      border: none;
      width: 40px;
      height: 40px;
      box-shadow: inset 0.5px -1px 1px rgba(0, 0, 0, 0.35);
      background: #fff;
      transform: rotate(-25deg);
    }
    &::after {
      background: transparent;
      height: calc(100% + 8px);
      border-radius: 30px;
      top: -5px;
      width: calc(100% + 8px);
      left: -4px;
      z-index: 0;
      box-shadow: inset 0px 2px 4px -2px rgba(0,0,0,0.2), 0px 1px 2px 0px rgba(151, 151, 151, 0.2);
    }
}

效果2

这是一款极其简洁的效果,透明开关效果,整体只有白色的边框和一个白色的圆形平移控制开关的效果。这里涉及到的代码相对比较简单,就不再额外展示。

效果3

这款效果的开关过程动画不再是简单的平移,交互上的两个状态层次分明,过渡的效果也挺有创意,整体动画效果可以拆分为以下几个部分:

  • 颜色由绿色变为红色
  • 移动的块旋转一周
  • 图标由 √ 变化为 ✕,图标用伪元素实现 核心代码部分:
/* 选中效果 */
#checkcross:checked + label {
  .check {
    left: 68px;
    transform: rotate(360deg);
    background: #c34a4a;
    /* 图标变化 */
    &:before {
      width: 27px;
      transform: rotate(-45deg) translate(-8px, 18px);
    }
    &:after {
      width: 27px;
      transform: rotate(45deg) translate(18px, 8px);
    }
  }
}

效果4

这是一款比较有趣味的交互效果,两个状态之间的切换从一个饼到多个饼堆叠的效果,在特定的场景中可以更换为其他的元素效果。核心的实现逻辑是默认只展示一个饼图,其他的通过scale(0)隐藏,并设定不同的定位坐标值,当状态发生变化时,设置scale(1)并增加不同的延时时间,代码如下:

#pancake:checked  {
  + label {
    .pancakes {
      transform: translateX(70px);
    }
    .pancake {
      &:nth-child(2) {
        transform: scale(1);
        transition-delay: .2s;
      }
      &:nth-child(3) {
        transform: scale(1);
        transition-delay: .4s;
      }
    }
    .butter {
      transform: scale(1);
      transition-delay: .6s;
    }
  } 
}

效果5

这也是一款比较有趣的交互效果,整体动画也是和#3类似,移动的过程采用旋转一周切换状态。但是核心的圆形部分变成了一个卡通狗狗的效果,并且在开启状态后狗狗的表情发生了变化,增加了微笑吐舌头😝的效果,还动了一下耳朵。这两个效果也是基于scale实现,核心代码如下:

#doggo:checked  {
+ label {
    .dog {
      left: 68px;
      transform: rotate(360deg);
    }
    .mouth {
      transform: scale(1);
      transition-delay: .7s;
    }
    .ear.right {
      transform: scaleX(-1) rotate(-35deg);
      transition-delay: .6s;
    }
  }
}

效果6

这也是一款相对简洁的效果,不同的是开关的圆形宽高会大于背景填充部分的宽高,形成一个反差效果,打开的动画过程也增加了贝塞尔曲线控制,而且在打开后增加了阴影放大的效果,增强了与用户交互的体验感。核心代码如下:

 .checkbox-wrapper-3 #cbx-3:checked + .label span {
    background: #4F2EDC;
    transform: translateX(70px);
    transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease;
    box-shadow: 0 3px 8px rgba(79, 46, 220, 0.2);
  }
  /*阴影放大效果*/
 .checkbox-wrapper-3 #cbx-3:checked + .label span:before {
    transform: scale(1);
    opacity: 0;
    transition: all 0.4s ease;
  }

效果7

这是一款带有可爱风的开关效果,通过增加渐变背景色和阴影突出3D的效果,通过伪元素控制面部的表情,表情的变化过程也是极为生动有力。因为这里在改变表情的时候对整个元素增加了一个Y轴一周旋转,而且这里表情里面的眼睛和嘴所实现的伪元素都是基于content中的特殊符号实现,并没有通过背景色实现,核心代码如下:

.checkbox-wrapper-5 .check label::before {
  content: "· ·";
}
.checkbox-wrapper-5 .check label::after {
  content: "●";
}
input[type="checkbox"]:checked + label::after {
  transform: rotateY(360deg);
}

效果8

看了很多正常的来一个脱离核心圆形开关的效果,开关上有 ON/OFF 文字效果,但实际这也是两个伪元素,文字是通过标签中的自定义属性传递使用。动画的过程就是平移两个伪元素,伪元素的宽高和外层元素的宽高一样,所以状态变化时所移动的距离就是100%。核心代码如下:

<label class="tgl-btn" data-tg-off="OFF" data-tg-on="ON"></label>

css:

.tgl-btn:after {
  left: 100%;
  content: attr(data-tg-on);
}
.tgl-btn:before {
  left: 0;
  content: attr(data-tg-off);
}
.tgl-skewed:checked+.tgl-btn:after {
  left: 0;
}
.tgl-skewed:checked+.tgl-btn:before {
  left: -100%;
}
目录
相关文章
|
Java 数据库连接 Spring
如何在Spring Boot中使用`@Retryable`注解来实现重试机制?
如何在Spring Boot中使用`@Retryable`注解来实现重试机制?
2121 0
如何在Spring Boot中使用`@Retryable`注解来实现重试机制?
|
6月前
|
人工智能 API 数据安全/隐私保护
如何使用 LiteLLM 网关代理统一管理你的大模型
大模型使用混乱?费用失控、切换成本高、权限难管?LiteLLM 是轻量实用的大模型网关,统一 OpenAI 兼容接口,纳管 OpenAI、Qwen、本地 vLLM/Ollama 等多源模型。支持 Docker Compose 一键部署、虚拟 Key 权限控制、预算限额与全链路可观测性,业务代码零改造即可接入。
3980 8
|
7月前
|
人工智能 运维 API
n1n:从替代 LiteLLM API Proxy 自建网关到企业级 AI 大模型 LLM API 统一架构的进阶之路
在 2026 年的大模型应用开发中,如何统一管理 GPT-5、Claude 4.5、Gemini 3 pro 等异构 AI 大模型 LLM API 成为企业的核心痛点。本文将深度解析开源网关 LiteLLM 的技术原理与实施路径,剖析自建网关在生产环境中的“隐形深坑”,并探讨如何通过 n1n.ai 等企业级聚合架构实现从“可用”到“高可用”的跨越。
2434 9
|
JSON API PHP
天气预报免费API接口【地址查询版】使用教程
本文介绍了如何使用中国气象局官方数据提供的免费天气预报API接口,通过省份和地点查询指定地区当日天气信息。该接口由接口盒子支持,提供JSON格式数据、GET/POST请求方式,并需注册获取用户ID和KEY进行身份验证。
6196 2
|
11月前
|
Java 测试技术 数据库
使用Spring的@Retryable注解进行自动重试
在现代软件开发中,容错性和弹性至关重要。Spring框架提供的`@Retryable`注解为处理瞬时故障提供了一种声明式、可配置的重试机制,使开发者能够以简洁的方式增强应用的自我恢复能力。本文深入解析了`@Retryable`的使用方法及其参数配置,并结合`@Recover`实现失败回退策略,帮助构建更健壮、可靠的应用程序。
1139 1
使用Spring的@Retryable注解进行自动重试
|
JSON 小程序 JavaScript
微信小程序开发笔记—底部导航栏tabar
本文介绍了微信小程序开发中底部导航栏的设计方法,步骤详细,非常适合初学的小伙伴!
1415 0
|
人工智能 API 开发者
狂揽7.5k星!这款开源API网关彻底解放开发者:一键聚合GPT-4、Suno、Midjourney,还能在线充值!
New API 是一款基于 One API 二次开发的 AI 模型接口管理与分发系统,支持多种大模型(如 GPT-4、Suno、Midjourney 等)统一封装为 OpenAI 格式接口调用。其核心功能包括多模型统一网关、企业级权限管控、“推理力度”分级、无魔法访问全球 AI 服务、灵活计费体系及开发者友好设计。技术架构采用 Golang + Gin 框架,支持高并发低延迟,适用于企业内部 AI 中台、多模型 SaaS 平台、学术研究协作及个人开发者工具等场景。项目开源地址:https://github.com/kingbug/new-api。
11895 10
|
数据可视化 Python
Matplotlib 教程 之 Matplotlib 饼图 1
使用 Matplotlib 库中的 `pyplot` 模块 `pie()` 方法来绘制饼图,并详细解释了 `pie()` 方法的参数,包括数据输入 `x`、扇区间距 `explode`、标签 `labels`、颜色 `colors`、百分比格式 `autopct`、标签距离 `labeldistance`、阴影 `shadow`、半径 `radius`、起始角度 `startangle`、逆时针方向 `counterclock`、扇形属性 `wedgeprops`、文本标签属性 `textprops`、饼图中心位置 `center`
409 2