咬牙切齿的按钮

2023-11-19

先看效果:
在这里插入图片描述
再看代码(查看更多):

  @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap');

    :root {
      --sz: 9vmin;
      --on: #4CAF50;
      --of: #f50000;
      --gr: #666666;
      --tr: all 0.5s ease 0s;
      --lg: var(--of);
    }

    * {
      box-sizing: border-box;
      transition: var(--tr);
    }

    body {
      margin: 0;
      padding: 0;
      width: 100vw;
      height: 100vh;
      overflow: hidden;
      display: flex;
      align-items: center;
      justify-content: center;
      background: linear-gradient(45deg, #1c2123, #1f2425);
      font-family: 'Roboto', Arial, Helvetica, serif;
    }

    body:before, body:after {
      content: "";
      position: absolute;
      width: 100%;
      height: 100%;
      background:
              repeating-conic-gradient(#0002 0.00005%, #fff0 .0005%, #fff0 .005%, #fff0 .0005%),
              repeating-conic-gradient(#0002 0.00001%, #fff0 .00009%, #fff0 .00075%, #fff0 .000025%);
      opacity: 0.75;
      filter: blur(0.75px);
    }

    .content {
      position: relative;
      width: calc(var(--sz) * 6);
      height: calc(var(--sz) * 2);
      display: flex;
      align-items: center;
      justify-content: center;
    }

    input {
      display: none;
    }

    label[for=btn] {
      position: absolute;
      width: calc(var(--sz) * 6);
      height: calc(var(--sz) * 2);
      background: #616774;
      border-radius: var(--sz);
      box-shadow:
              0 0 calc(var(--sz) / 50) calc(var(--sz) / 50) #0006,
              0 -4px calc(var(--sz) / 10) calc(var(--sz) / 500) #000d,
              0 0px calc(var(--sz) / 10) calc(var(--sz) / 50) #fff8,
              0 -4px calc(var(--sz) / 5) calc(var(--sz) / 50) #000c;
    }

    .track {
      position: absolute;
      width: 100%;
      height: 100%;
      border-radius: var(--sz);
      overflow: hidden;
      background: #191e1e;
      box-shadow: 0 calc(var(--sz) / 3) calc(var(--sz) / 2) 0 #000 inset;
    }

    #btn:checked + label .track:before {
      left: 0%;
    }

    .thumb {
      position: absolute;
      width: calc(calc(var(--sz) * 2) - calc(var(--sz) / 5));
      height: calc(calc(var(--sz) * 2) - calc(var(--sz) / 5));
      top: calc(calc( var(--sz) / 10) + calc(var(--sz) / 200));
      left: calc(calc( var(--sz) / 10) + calc(var(--sz) / 100));
      background: linear-gradient(180deg,  #3f4447, #262727);
      border-radius: var(--sz);
      box-shadow: calc(var(--sz) / -25) calc(var(--sz) / 25) calc(var(--sz) / 30) 0 #fff2 inset, 0 0 calc(var(--sz) / 10) calc(var(--sz) / 50) #000c;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 1;
      overflow: hidden;
      animation: move-thumb 0.5s ease 0s;
    }

    @keyframes move-thumb {
      0% {
        --lg: var(--of);
        left: calc(calc(100% - calc(calc(var(--sz) * 2) - calc(var(--sz) / 3))) - calc(calc( var(--sz) / 10) + calc(var(--sz) / 7)));
      }
      25%, 75% {
        --lg: #999999;
      }
      100% {
        --lg: var(--on);
        left: calc(calc( var(--sz) / 10) + calc(var(--sz) / 100));
      }
    }

    .thumb:before {
      content: "";
      --cl: #2c3133;
      position: absolute;
      background: var(--cl);
      width: calc(var(--sz) / 12);
      height: calc(var(--sz) / 1.35);
      border-radius: var(--sz);
      box-shadow: calc(var(--sz) /5) 0 0 0 var(--cl), calc(var(--sz) / -5) 0 0 0 var(--cl);
      filter: drop-shadow(0px 1px 2px #000) drop-shadow(0px -1px 0px #fff4) blur(0.65px);
    }

    .thumb:after {
      content: "";
      position: absolute;
      background: radial-gradient(circle at 50% 55%, #fff0 calc(var(--sz) / 1.125), var(--lg) calc(var(--sz) / 0.9));
      width: 100%;
      height: 100%;
      border-radius: var(--sz);
      transition: var(--tr);
      transition-property: --lg;
      animation: shine-thumb-off 0.5s ease 0s 1;
      animation-fill-mode: forwards;
    }

    #btn:checked + label .thumb {
      left: calc(calc(100% - calc(calc(var(--sz) * 2) - calc(var(--sz) / 3))) - calc(calc( var(--sz) / 10) + calc(var(--sz) / 7)));

    }

    #btn:checked + label .thumb:after {
      animation: shine-thumb-on 0.5s ease 0s 1;
      animation-fill-mode: forwards;
      transition: var(--tr);
      transition-property: --lg;
    }

    @keyframes shine-thumb-on {
      0% { --lg: var(--of); }
      50% { --lg: var(--gr); }
      100% { --lg: var(--on); }
    }

    @keyframes shine-thumb-off {
      0% { --lg: var(--on); }
      50% { --lg: var(--gr); }
      100% { --lg: var(--of); }
    }

    .track-top, .track-bot  {
      position: absolute;
      width: 120%;
      height: calc(var(--sz) / 2.25);
      left: -10%;
      top: calc(var(--sz) / -2.5);
      transform-origin: 22% 100%;
      transform: rotate(5deg);
      display: flex;
      align-items: center;
      justify-content: space-evenly;
      opacity: 0.85;
      animation: t-top-l 0.5s ease 0s 1 reverse;
      animation-fill-mode: forwards;
    }

    .track span span {
      background:
              linear-gradient(0deg, #fff8, #fff0),
              linear-gradient(180deg, #222, #666);
      width: calc(var(--sz) / 1.6);
      height: calc(var(--sz) / 2);
      display: inline-flex;
      border-radius: 0 0 calc(var(--sz) / 8) calc(var(--sz) / 8);
      box-shadow: 0 0 1px 0 #fff;
    }

    .track-bot span {
      background:
              linear-gradient(180deg, #fff8, #fff0),
              linear-gradient(0deg, #222, #666) !important;
      border-radius: calc(var(--sz) / 8) calc(var(--sz) / 8) 0 0 !important;
    }

    .track-bot {
      left: -10%;
      top: inherit;
      bottom: calc(var(--sz) / -2.25);
      transform-origin: 22% 100%;
      transform: rotate(-5deg);
      animation: t-bot-l 0.5s ease 0s 1 reverse;
      animation-fill-mode: forwards;
    }

    #btn:checked + label .track .track-top {
      animation: t-top-r 0.5s ease 0s 1;
      animation-fill-mode: forwards;
    }

    @keyframes t-top-r {
      0% { transform: rotate(5deg); transform-origin: 22% 100%; }
      50% { transform: rotate(0deg);  transform-origin: 22% 100%; }
      50.01% { transform: rotate(0deg);  transform-origin: 78% 100%; }
      100% { transform: rotate(-5deg);  transform-origin: 78% 100%; }
    }
    @keyframes t-top-l {
      0% { transform: rotate(5deg); transform-origin: 22% 100%; }
      50% { transform: rotate(0deg);  transform-origin: 22% 100%; }
      50.01% { transform: rotate(0deg);  transform-origin: 78% 100%; }
      100% { transform: rotate(-5deg);  transform-origin: 78% 100%; }
    }

    #btn:checked + label .track .track-bot {
      animation: t-bot-r 0.5s ease 0s 1;
      animation-fill-mode: forwards;
    }

    @keyframes t-bot-r {
      0% { transform: rotate(-5deg); transform-origin: 22% 100%; }
      50% { transform: rotate(0deg);  transform-origin: 22% 100%; }
      50.01% { transform: rotate(0deg);  transform-origin: 78% 100%; }
      100% { transform: rotate(5deg);  transform-origin: 78% 100%; }
    }
    @keyframes t-bot-l {
      0% { transform: rotate(-5deg); transform-origin: 22% 100%; }
      50% { transform: rotate(0deg);  transform-origin: 22% 100%; }
      50.01% { transform: rotate(0deg);  transform-origin: 78% 100%; }
      100% { transform: rotate(5deg);  transform-origin: 78% 100%; }
    }


    .lights {
      position: absolute;
      width: 100%;
      height: calc(var(--sz) / 1.75);
      top: calc(var(--sz) * -1.2);
      display: flex;
      justify-content: space-between;
      padding: 0 calc(var(--sz) / 1.5);
      z-index: 1;
    }

    .lights span {
      background: #121212;
      position: relative;
      width: calc(var(--sz) / 1.75);
      height: calc(var(--sz) / 1.75);
      border-radius: var(--sz);
      box-shadow:
              0 0px calc(var(--sz) / 50) calc(var(--sz) / 50) #0008,
              0 -4px calc(var(--sz) / 10) calc(var(--sz) / 500) #000,
              0 2px calc(var(--sz) / 10) calc(var(--sz) / 500) #fff8,
              0 0px calc(var(--sz) / 20) calc(var(--sz) / 25) #000;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .lights span:before {
      content: "off";
      font-size: calc(var(--sz) / 2.4);
      text-align: center;
      width: 200%;
      position: absolute;
      top: calc(var(--sz) / -1.45);
      left: -50%;
      color: #ffffff3d;
      text-shadow: 0px -2px 2px #0008, 0px 1px 2px #fff4;
      background: -webkit-linear-gradient(#0000003b 25%, var(--lg) 75%);
      -webkit-background-clip: text;
      -webkit-text-fill-color: #71717170;
    }

    .lights span + span:before {
      content: "on";
      --lg: var(--gr);
    }

    .lights span:after {
      content: "";
      color: #fff;
      transition: var(--tr);
      width: calc(100% - calc(var(--sz) / 15));
      height: calc(100% - calc(var(--sz) / 15));
      position: absolute;
      background: radial-gradient(circle at 50% 32%, #fff5 0 calc(var(--sz) / 20), #000 calc(var(--sz) / 3) calc(var(--sz) / 3));
      border-radius: var(--sz);
      box-shadow:
              0 0px calc(var(--sz) / 50) calc(var(--sz) / 50) #0008 inset,
              0 -4px calc(var(--sz) / 10) calc(var(--sz) / 500) #000 inset,
              0 2px calc(var(--sz) / 10) calc(var(--sz) / 500) #fff8 inset,
              0 0px calc(var(--sz) / 20) calc(var(--sz) / 25) #000 inset;
    }


    /* off */
    span.light-off:after {
      box-shadow:
              0 0 calc(var(--sz) / 2.5) 0 var(--lg),
              0 0 calc(var(--sz) / 3) calc(var(--sz) / 20) var(--lg) inset,
              0 calc(var(--sz) / -20) calc(var(--sz) / 10) calc(var(--sz) / 10) #000 inset;
      background: radial-gradient(circle at 50% 32%, #fff 0 calc(var(--sz) / 20), #fff8 calc(var(--sz) / 3) calc(var(--sz) / 3));
    }

    #btn:checked + label + .lights span.light-off:after {
      box-shadow:
              0 0 calc(var(--sz) / 3) 0 #f5000020,
              0 0 calc(var(--sz) / 3) calc(var(--sz) / 20) #f5000020 inset;
      background: radial-gradient(circle at 50% 32%, #fff5 0 calc(var(--sz) / 20), #000 calc(var(--sz) / 3) calc(var(--sz) / 3));
    }


    /* on */
    span.light-on:after {
      box-shadow:
              0 0 calc(var(--sz) / 3) 0 #00f56d20,
              0 0 calc(var(--sz) / 3) calc(var(--sz) / 20) #00f56d20 inset;
    }

    #btn:checked + label + .lights span.light-on:after {
      --lg: var(--on);
      box-shadow:
              0 0 calc(var(--sz) / 2.5) 0 var(--lg),
              0 0 calc(var(--sz) / 3) calc(var(--sz) / 20) var(--lg) inset,
              0 calc(var(--sz) / -20) calc(var(--sz) / 10) calc(var(--sz) / 10) #000 inset;
      background: radial-gradient(circle at 50% 32%, #fff 0 calc(var(--sz) / 20), #fff2 calc(var(--sz) / 3) calc(var(--sz) / 3));
    }

    #btn:checked + label + .lights span.light-on:before {
      --lg: var(--on);
    }

    #btn:checked + label + .lights span.light-off:before {
      --lg: var(--gr);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

咬牙切齿的按钮 的相关文章

  • popstate - 需要单击两次后退按钮才能真正返回

    我正在创建一个单页面并使用 PushState 来更改地址 现在 如果我向后推 则会触发 popstate 并且我想要使页面以动画方式从当前位置滚动到最后一个位置 当然 这是可行的 但页面会跳转到顶部 有谁知道如何防止这种行为 我正在使用
  • 引用 url() 的值真的有必要吗?

    我应该在样式表中使用以下哪一项 Example 1 background image url image png Example 2 background image url image png Example 3 background i
  • Chrome:网络元素自动移动

    我正在开发一个网络项目 在过去的两周里 我正在进行学期考试 所以我要休息一下 现在 既然他们已经结束了 我又继续我的工作了 但我发现我的一些Web 元素 如按钮 span 在 Chrome 上移动了一些像素 在 IE 和 Mozilla 上
  • 外部 css 文件在 Flask 框架中不起作用

    我正在尝试在我的 html 文件中使用外部 css 文件 起初我使用 bootstrap 框架 效果很好 然而 当我尝试通过添加自定义的css文件来自定义网页时 它根本不起作用 这是我的代码
  • 如何使用 PHP 动态插入 CSS 类?

    下面的代码有什么问题 我想在相应的情况下动态插入 当前 CSS 类 li 单击元素 谢谢 section section li
  • 如何防止桌面浏览器(Chrome、Safari)缩放网页

    我尝试使用以下元视图端口标记来防止浏览器缩放 但这不起作用 我知道这是可能的 因为我的缩放在此网站上被阻止 未来主义 xyz http futurism xyz 该网站的视口标签是这样的
  • 垂直对齐多行文本(菜单元素)?

    我正在尝试垂直对齐 UL 内的文本 问题是某些列表项具有不止一行文本 因此无法使用行高 小提琴 http jsfiddle net jaAYT http jsfiddle net jaAYT 这是我想要达到的结果 http img402 i
  • CSS 边框底部的曲线

    我需要 CSS 中的这个图像 并且在这个边框内需要一个背景图像 我努力了 border radius 0 0 50 50 webkit border radius 0 0 50 50 但没有得到所需的形状 任何帮助 将不胜感激 边界半径 您
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • Bootstrap 标签栏平滑移动导航按钮

    我有一个用于切换块的普通引导选项卡面板 在导航中切换块时 活动选项卡会突出显示 但现在 当我单击活动选项卡的背景时 它会立即发生变化 是否可以使切换选项卡时背景不会立即改变 而是根据需要哪个选项卡而平滑地左右移动 这可以用以下方法完成吗cs
  • 文本的彩虹色

    rainbowtext background image webkit gradient linear left top right top color stop 0 f22 color stop 0 15 f2f color stop 0
  • 尝试从网页Python和BeautifulSoup获取编码

    我试图从网页检索字符集 这会一直改变 目前我使用 beautifulSoup 来解析页面 然后从标题中提取字符集 这工作正常 直到我遇到一个网站 到目前为止 我的代码以及与其他页面一起使用的代码是 def get encoding soup
  • 为 html5 输入类型渲染 asp.TextBox =“date”

    不知道以前有没有问过 也没找到 是否可以控制由 asp TextBox 呈现的输入文本的类型 我想把它改成
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • JavaFX使节点覆盖父节点边框颜色

    我有一个如下所示的节点 仅使用 css 我希望标签覆盖其父边框颜色 因此标签下方的边框颜色部分变得不可见 我用来制作这个边框的CSS代码 fx border color black fx border width 3 fx border r
  • 在 Chrome 中隐藏 HTML 时间输入字段上的图标

    在 Chrome 中 当您type time 属性到输入框 您会在输入旁边看到一个小图标时钟图标 有没有办法去掉这个小时钟图标 基于这个问题的答案 将日期输入三角形更改为日历图标 https stackoverflow com questi
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 如果选中复选框则显示 div

    我正在尝试构建类似 WordPress 选项的东西 用于在创建文章时切换字段可见性 我所构建的依赖于 click函数使用相应的字段名称切换父项 我想知道如果选中该复选框 执行此操作的最佳方法是什么 因为如果您选中一个框并重新加载页面 因为它
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • 区分 NaN 输入和输入类型为“number”的空输入

    我想使用 type number 的表单输入 并且只允许输入数字

随机推荐

  • 开源按键组件Multi_Button的使用,含测试工程

    之前的文章中介绍过按键的处理方法 多功能 单击 双击 长按 按键设计 今天再来分享另外一种方式 MultiButton 1 Multi Button简介 MultiButton 是Github上的一个开源的按键处理组件 作者0x1abin
  • Transmission Control Protocol (TCP)

    TCP协议 Transmission Control Protocol 是在IP协议之上的 确保IP数据包可靠传输的协议 TCP协议拥有一些用于解决基于数据包的问题 例如丢包 包序错乱 重复包及包损坏 由于TCP协议是IP协议之上最常用的协
  • 中国金融科技前沿技术发展趋势及应用场景研究 附下载地址

    国家高度重视金融科技应用对于强化金融监管能力和促进金融转型发展的双重作用 在强化监管方面 以降低合规成本 有效防范金融风险为目标的监管科技 Regtech 正在成为金融科技的重要组成部分 在促进发展方面 金融科技应用能够有效提升金融服务效率
  • 软件设计(十四)-UML建模(上)

    软件设计 十三 原码 反码 补码 移码https blog csdn net ke1ying article details 129115844 spm 1001 2014 3001 5501 UML建模包含 用例图 类图与对象图 顺序图
  • css根据某个角旋转,设置旋转中心点

    前言 css3里面是有动画的属性的 里面有个旋转 那么旋转怎么来根据元素的不同点来旋转呢 这里分享下方法 实现源码 1 旋转的代码 transform rotate 7deg 旋转的兼容性写法 ms transform rotate 7de
  • 【Google测试之道】第三章 测试工程师

  • 手残-网络重置后网络适配器全感叹号且各种方法联网失效的问题解决

    前因 回家过年连接无线网的时候 刚开始连不上网络 莫名其秒的就点开了网络设置 然后重置了网络 真是秀逗了 导致痛苦的开始 重启之后 发现电脑的wifi图标没了 更糟糕的是 打开设备管理器发现网络适配器全是感叹号 驱动没了 即使在这里右键更新
  • 《信号与系统》解读 第1章 信号与系统概述-3:基本的1阶时域信号--单位阶跃信号、单位斜变信号、单位冲击信号

    目录 连续信号 1 单位阶跃信号 2 单位斜变信号 自然界衰变规律之一 3 单位冲击信号 离散信号 4 单位阶跃序列 5 单位采样 连续信号 1 单位阶跃信号 1 定义 t gt 0时 信号的幅度恒等于1 t lt 0时 信号的幅度恒等于0
  • Ubuntu 16.04系统中GCC 9.1编译器安装方法及C++17标准测试示例

    严正声明 本文系作者davidhopper原创 未经许可 不得转载 2019年8月2日更新 本文方法适用于GCC 9 1 0 只需将原文中的GCC 7 3 0替换为GCC 9 1 0即可 为什么要更新到GCC 9 1 0 因为该版本可支持C
  • web3无法在浏览器远程调用miner.start()

    原文 https bitshuo com topic 58841835fd9ca2790427eb67 web3无法在浏览器远程调用miner start 首先我在启动私链时已经调用了miner模块 代码如下 geth identity s
  • PyCharm2019.1.1安装(Ubuntu16.04)

    PyCharm2019 1 1安装 Ubuntu16 04 我们已经在Ubuntu里安装了Python 可以在终端使用Python 也可以用文本编辑器编写代码后然后用Python执行代码 但这些都不是很方便 也不是很智能和不够友好 需要有多
  • 利用Python每日将股票数据进行爬取、并做了一波处理分析

    1 先展示 时间 价格 涨跌幅 2 说明 因为在上班的时候 直接打开交易软件的话 太明显 会让别人看到我在炒股 所以 自己写一个 可以随时查看自己持仓的股票涨跌情况 3 代码 import tushare as ts import time
  • 【问题解决】利用Eclipse,在hadoop上传文件到hdfs没有内容

    本文适用于一些在网上找了半天答案都没解决问题的人群 因为我也是在按网上说道弄了一天 最后才解决的 如果你是刚遇到问题 还没有深入 建议你查看这篇文章 http f dataguru cn hadoop 208802 1 1 html 将问题
  • 创业的真谛是顺势而为,借船过海!

    追寻成功的路上 顺势最易 借势稍难 造势境界最高 创业者 或者创业团队 积极争取优惠政策 打造自身适宜环境 努力营造外在氛围 最大化有效使用身边各种资源 懂得聚合放大 顺势是为了 为 顺势而为 最终是为了顺势大为 一 顺势而为 无论商场战场
  • Python opencv学习-13 直方图反向投影(用于图像分割)

    代码和图片大量参考https blog csdn net tengfei461807914 article details 77075567 自己跑了下验证了下 个人理解 直方图反向投影用来做图像分割 或者说知道了一个目标的图片的一部分 去
  • 利用Redis bitmap签到功能

    1 简介 BitMap 存储的是连续的二进制数字 0 和 1 通过 bitmap 只需要一个 bit 位来表示某个元素对应的值或者状态 key 就是对应元素本身 我们知道 8 个 bit 可以组成一个 Byte 所以bitmap 本身会极大
  • 为什么程序员都喜欢安静?

    大家回顾一下上学期间 你在上晚自习想完成今天老师布置的作业 但是你的班级却非常的吵闹 跟置身在菜市场一样 你能专心完成作业吗 不受周围吵闹环境的影响吗 相信大部分的人都难以静下心来认真完成作业 有时候好不容易想到一个思路 结果旁边的人拍你一
  • Windows系统常用命令

    Windows常用命令 1 echo 用法 输出一个字符到终端 当加上 gt 后就可输出到文本文件 例如 echo 1 在终端显示一个1 echo 20 gt gt 1 txt 在当前目录下的1 txt文件后面追加一行数据值20 如果没有1
  • AT24C02芯片使用介绍

    AT24C02简介 AT24C02是一个2K位串行CMOS E2PROM 内部含有256个8位字节 有一个16字节页写缓冲器 该器件通过IIC总线接口进行操作 有专门的写保护功能 应用于AT24C02制造过程的先进CMOS技术实质上减少了器
  • 咬牙切齿的按钮

    先看效果 再看代码 查看更多 import url https fonts googleapis com css2 family Roboto wght 500 display swap root sz 9vmin on 4CAF50 of