凹下去的白色按钮

这篇具有很好参考价值的文章主要介绍了凹下去的白色按钮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

先看效果:
凹下去的白色按钮
再看代码:文章来源地址https://www.toymoban.com/news/detail-493802.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>凹下去的按钮</title>
  <style>
    @import url("https://fonts.googleapis.com/css2?family=Comfortaa:wght@600&display=swap");
    :root {
      --highlight-left: 0;
      --pagination-width: 0;
    }

    html {
      height: 100%;
    }

    body {
      font-family: sans-serif;
      height: 100%;
      margin: 0;
      font-family: "Comfortaa", cursive;
      background-color: #eef3f7;
      user-select: none;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .radio-checked {
      position: relative;
      font-size: 34px;
      letter-spacing: 1px;
      box-shadow: -6px -5px 14px 3px #fff, 7px 7px 12px 2px #d0d8e3;
      border-radius: 70px;
    }
    .radio-checked_input {
      display: none;
    }
    .radio-checked_input:checked + .radio-checked_label--on {
      color: #47cf73;
      text-shadow: 0 0 7px rgba(71, 207, 115, 0.6);
    }
    .radio-checked_input:checked + .radio-checked_label--off {
      color: #ff3c41;
      text-shadow: 0 0 7px rgba(255, 60, 65, 0.6);
    }
    .radio-checked_input:checked + .radio-checked_label:before {
      display: none;
    }
    .radio-checked_label {
      cursor: pointer;
      display: inline-block;
      padding: 20px 25px 15px;
      line-height: 1;
      border-radius: 3rem;
      color: #acb2c0;
      transition: all 150ms ease-in-out;
    }
    .radio-checked_label:before {
      content: "";
      position: absolute;
      left: 0;
      top: 0;
      right: 0;
      bottom: 0;
      display: block;
    }
    .radio-checked_container {
      position: relative;
    }
    .radio-checked_highlight {
      position: absolute;
      left: 0;
      bottom: 0;
      width: var(--pagination-width);
      height: 100%;
      border-radius: 70px;
      box-shadow: inset -5px -5px 10px 4px #fff, inset -2px 6px 8px 6px #d0d8e3;
      background: #eef3f7;
      transition: all 0.6s ease;
      transform: translateX(var(--highlight-left));
    }

    .svg {
      position: absolute;
      top: -50%;
      bottom: -50%;
      pointer-events: none;
    }
    .svg_icon {
      width: auto;
      height: 100%;
    }
    .svg--right {
      left: 100%;
    }
    .svg--left {
      right: 100%;
    }
  </style>
</head>
<body>
<div class="radio-checked">
  <div class="radio-checked_highlight"></div>
  <div class="radio-checked_container">
    <input checked="checked" class="radio-checked_input" id="on" name="status" type="radio" value="on" /><label class="radio-checked_label radio-checked_label--on" for="on"> On</label><input class="radio-checked_input" id="off" name="status" type="radio" value="off" /><label class="radio-checked_label radio-checked_label--off" for="off">Off</label>
  </div>
</div>
</body>
<script>
  let root = document.documentElement;
  let color = ["#47cf73", "#7f71fe", "#1A3AF8", "#47cf73"];
  var animateDur = "1.4s";

  window.onload = function () {
    let activeChecked = document.querySelector(
            ".radio-checked_input:checked + .radio-checked_label"
    );
    let left = activeChecked.offsetLeft;
    let width = activeChecked.offsetWidth;
    animation(left, width);
  };

  document
          .querySelectorAll(".radio-checked_label")
          .forEach((t) => t.addEventListener("click", onChecked));

  function onChecked(e) {
    let left = e.target.offsetLeft;
    let width = e.target.offsetWidth;
    animation(left, width);
  }
  var bool = true;
  function animation(left, width) {
    root.style.setProperty("--pagination-width", width + "px");
    root.style.setProperty("--highlight-left", left + "px");
    (bool = !bool) ? svgCreate("right") : svgCreate("left");
  }

  function svgCreate(position) {
    let svgLeft =
            `<svg class="svg_icon" fill="none" viewBox="0 0 132 140" xmlns="http://www.w3.org/2000/svg">
<path d="M110 50.4209L68.7302 25.4209" id="Line1"/>
<path d="M110 59.498L45.9597 54.498" id="Line2"/>
<path d="M110 70.4824L46.1323 87.4824" id="Line3"/>
<path d="M110 79.3584L73.3484 113.358" id="Line4"/>
<path d="M110 73.4473L34.2236 110.447" id="Line5"/>
<path d="M110 64.499L24.0356 70.499" id="Line6"/>
<path d="M110 54.4736L39.8398 31.4736" id="Line7"/>
<path d="M110 56.4893L23.8953 38.4893" id="Line8"/>
<path d="M110 67.4893L21.1013 85.4893" id="Line9"/>
<path d="M110 85.2861L85.4102 118.286" id="Line10"/>
<path d="M110 76.4111L50.2839 116.411" id="Line11"/>
<path d="M110 61.4995L18.9907 59.4307" id="Line12"/>

		<g> <g> <g class="svg_obj"> <path d="M14.6324 5.25L20.9832 16.25C21.5606 17.25 20.8389 18.5 19.6842 18.5H6.98249C5.82778 18.5 5.10609 17.25 5.68344 16.25L12.0343 5.25C12.6116 4.25 14.055 4.25 14.6324 5.25Z" fill="none" stroke-linecap="square" stroke-linejoin="round" stroke-width="3" stroke=` +
            color[Math.floor(Math.random() * 4)] +
            `></path>
		</g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 6 + 6) +
            `"></mpath> </animateMotion> </g> </g> <g> <g> <g class="svg_obj"> <circle cx="12" cy="11" r="6.5" stroke-width="3" stroke=` +
            color[Math.floor(Math.random() * 4)] +
            `></circle> </g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 12 + 1) +
            `"></mpath> </animateMotion> </g> </g>
		 <g> <g> <g class="svg_obj"> <circle cx="12" cy="11" r="6.5" stroke-width="3" stroke=` +
            color[Math.floor(Math.random() * 4)] +
            `></circle> </g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 6 + 1) +
            `"></mpath> </animateMotion> </g> </g>
		 <g> <g> <g class="svg_obj"> <circle cx="12" cy="11" r="6.5" stroke-width="3" stroke=` +
            color[Math.floor(Math.random() * 4) + 1] +
            `></circle> </g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 12 + 1) +
            `"></mpath> </animateMotion> </g> </g>
		</svg>`;
    let svgRight =
            `<svg class="svg_icon" fill="none" viewBox="0 0 132 140"  xmlns="http://www.w3.org/2000/svg" >
<path d="M20 54.6191L64.6763 20.6191" id="Line13"/>
<path d="M20 56.5518L97.7788 20.5518" id="Line14"/>
<path d="M20 58.5176L90.8684 40.5176" id="Line15"/>
<path d="M20 63.5L111.989 61.5" id="Line16"/>
<path d="M20 69.5029L100.053 77.5029" id="Line17"/>
<path d="M20 73.5166L105.127 94.5166" id="Line18"/>
<path d="M20 77.5479L91.2126 108.548" id="Line19"/>
<path d="M20 80.6191L58.3235 108.619" id="Line20"/>
<path d="M20 83.7598L42.4385 114.76" id="Line21"/>
<path d="M20 66.5L98.0205 69.5" id="Line22"/>
<path d="M20 60.5049L102.93 49.5049" id="Line23"/>
<path d="M20 75.5303L83.1702 96.5303" id="Line24"/>

		<g> <g> <g class="svg_obj"> <path d="M14.6324 5.25L20.9832 16.25C21.5606 17.25 20.8389 18.5 19.6842 18.5H6.98249C5.82778 18.5 5.10609 17.25 5.68344 16.25L12.0343 5.25C12.6116 4.25 14.055 4.25 14.6324 5.25Z" fill="none" stroke-linecap="square" stroke-linejoin="round" stroke-width="3" stroke="#d0d8e3"></path>
		</g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 12 + 13) +
            `"></mpath> </animateMotion> </g> </g>

		<g> <g> <g class="svg_obj"> <path d="M17.2394 3L7.6162 18.2116M5 5.51355L20.2116 15.1367" stroke="#ff3c41" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 12 + 13) +
            `"></mpath> </animateMotion> </g> </g>
		<g> <g> <g class="svg_obj"> <path d="M17.2394 3L7.6162 18.2116M5 5.51355L20.2116 15.1367" stroke="#acb2c0" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <animateMotion begin="0s" dur=` +
            animateDur +
            ` repeatCount="1"> <mpath xlink:href="#Line` +
            Math.floor(Math.random() * 12 + 13) +
            `"></mpath> </animateMotion> </g> </g>
		</svg>`;

    let span = document.createElement("span");
    let radioChecked = document.querySelector(".radio-checked");
    span.className = "svg svg--" + position;
    if (position === "left") {
      span.innerHTML = svgLeft;
    } else {
      span.innerHTML = svgRight;
    }

    setTimeout(function () {
      radioChecked.appendChild(span);
    }, 400);
    setTimeout(function () {
      span.remove();
    }, 1500);
  }

</script>
</html>

到了这里,关于凹下去的白色按钮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Microsoft Edge浏览器隐藏发现(Bing)按钮

    打开注册表编辑器, 定位到 新建项 Edge,新建DWORD HubsSidebarEnabled 将值设为0 Edge浏览器地址栏 输入   重新加载策略  

    2024年02月15日
    浏览(43)
  • 卧槽,发现一个Python技术变现神器!

    最近收到了很多朋友的留言,几乎全是关于爬虫与逆向破解技术的问题咨询。包括小程序逆向、APP逆向、Web逆向、数据加密、加固解密、cookie防护突破、表单加密、动态签名加密、分包反编译在内的,爬虫逆向相关技术,不断地被无数人反复问及。 看得出,大家都迫切地想要

    2024年02月09日
    浏览(40)
  • 发现一个很好用的AIGC中文社区

    这社区基本什么都有,AIGC领域的专业文章、最新资讯、人工智能的产品,包括很多最新的人工智能app,简直不要太好用    

    2024年02月12日
    浏览(38)
  • 【微信小程序】使用button组件来实现一个带有点击效果的按钮,按钮中间添加一个大的+号图标

    在微信小程序中,你可以使用 button 组件来实现一个带有点击效果的按钮,并在按钮中间添加一个大的+号图标。以下是一个示例代码: 在上述代码中,我们使用了微信小程序的 button 组件,并在其中添加了一个 text 组件,文本内容为+号。使用类名为 button 的样式设置了按钮的

    2024年02月16日
    浏览(64)
  • 发现一个好玩的东西:Markdown 使用 Emoji 表情

    有两种方法可以将表情符号添加到Markdown文件中: 将表情符号复制并粘贴到Markdown格式的文本中 或者键入emoji shortcodes。 在大多数情况下,您可以简单地从Emojipedia等来源复制表情符号并将其粘贴到文档中。许多Markdown应用程序会自动以Markdown格式的文本显示表情符号。从Markd

    2024年02月06日
    浏览(41)
  • html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标

    动态 静态 全部例子 底部多加了几个过渡按钮

    2024年02月04日
    浏览(41)
  • 发现一个高颜值流程图 - 亿图图示

    今天给各位小伙伴们测试了一款高颜值的流程图制作工具——亿图图示。 对了,它不仅可以制作流程图,还可以制作思维导图、组织结构图、泳道图等等哦。接下来让我们一起测试学习下吧 亿图图示(Wondershare EdrawMax)是一款功能强大且易于使用的图形表达工作台,不仅可以

    2024年02月09日
    浏览(45)
  • 发现有一个会Python的男友魅力值杠杠的!!!

    Python能做什么? 可以做日常任务,比如自动备份你的MP3,可以做网站,很多著名的网站像知乎、YouTube就是Python写的, 可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。 上面说的这些本人并没有实现过,哈哈哈哈。 但是我知道Python可以做一些有趣的东西,比如

    2024年01月17日
    浏览(36)
  • 哪个AI绘画软件好用?接着看下去吧我告诉你

    这几年AI绘画非常的流行,相信大家平时在浏览社交平台时,也经常看见别人发布出来的绘图作品。AI绘画不仅可以帮助许多没有绘画基础的朋友可以画出自己的作品,而且可玩性也非常的高。那大家想体验一下AI绘画的乐趣吗?如果想的话就接着看下去吧,我来告诉你智能

    2024年02月11日
    浏览(56)
  • 分享一个一键换肤按钮(超酷)

    先上效果图: 效果图中转换为黑夜会有一个宇航员小猴子飞上来,途中没有截到。。。。 废话不多说,上代码: 代码比较长,有看不懂的同学可以私信我~

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包