分享几个水滴效果的按钮

news2024/9/30 1:33:48

先看效果:
在这里插入图片描述
再看代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水滴效果的按钮</title>
    <link rel="stylesheet" href="https://codepen.io/nicolasjesenberger/pen/GRYvOWy/d5176f9552830811da3e2bde0120cc26.css">
    <script src="https://codepen.io/nicolasjesenberger/pen/VwEzMrY/81eb6139c2c9b7dbc46e43d898e7d29b.js"></script>
    <style>
        body {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            gap: 1em;
            min-height: 100vh;
            font-size: 2em;
        }

        .toggle-container {
            position: relative;
            border-radius: 3.125em;
            width: 3.25em;
            height: 1.875em;
        }

        .toggle-checkbox {
            -webkit-appearance: none;
            appearance: none;
            position: absolute;
            z-index: 1;
            border-radius: inherit;
            width: 100%;
            height: 100%;
            opacity: 0;
            cursor: pointer;
        }

        .toggle-track {
            display: flex;
            align-items: center;
            position: relative;
            border-radius: inherit;
            padding: 0.25em;
            width: 100%;
            height: 100%;
            background-color: #aeaeae;
            box-shadow: inset 0 0.0625em 0.125em rgba(0, 0, 0, 0.2);
            transition: background-color 0.4s linear;
        }
        .toggle-container.green > .toggle-checkbox:checked + .toggle-track {
            background-color: #4ccf59;
        }
        .toggle-container.blue > .toggle-checkbox:checked + .toggle-track {
            background-color: #3384fb;
        }
        .toggle-container.boo > .toggle-checkbox:checked + .toggle-track {
            background-color: #ff3372;
        }

        .toggle-thumb {
            position: relative;
            border-radius: 0.6875em;
            transform-origin: left;
            width: 1.375em;
            height: 1.375em;
            background-color: #fff;
            box-shadow: 0 0.25em 0.25em rgba(0, 0, 0, 0.2), inset 0 -0.125em 0.25em rgba(0, 0, 0, 0.2);
        }
        .toggle-checkbox.toggled-once + .toggle-track > .toggle-thumb {
            animation-name: grow-out, bounce-out;
            animation-duration: 0.2s;
            animation-timing-function: cubic-bezier(0.75, 0, 1, 1), cubic-bezier(0, 0, 0.3, 1.5);
            animation-delay: 0s, 0.2s;
            animation-fill-mode: forwards;
        }
        .toggle-checkbox.toggled-once:checked + .toggle-track > .toggle-thumb {
            animation-name: grow-in, bounce-in;
        }
        .toggle-container.boo .toggle-thumb::after {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            border-radius: inherit;
            width: 100%;
            height: 100%;
            background-image: url("https://assets.codepen.io/4175254/boo-face.png");
            background-size: 63.6363636364% 54.5454545455%;
            background-position: center;
            background-repeat: no-repeat;
            box-shadow: inset 0 -0.125em 0.25em rgba(0, 0, 0, 0.2);
            image-rendering: pixelated;
            opacity: 0;
            transition: opacity 0.2s linear;
        }
        .toggle-container.boo > .toggle-checkbox:checked + .toggle-track > .toggle-thumb::after {
            opacity: 1;
        }

        @media (hover: hover) {
            .toggle-container.boo > .toggle-checkbox:hover + .toggle-track > .toggle-thumb::after {
                opacity: 1;
            }
        }

        @keyframes grow-in {
            0% {
                border-radius: 0.6875em;
                transform: translateX(0) scale(1);
            }
            100% {
                border-radius: 0.4448529412em / 0.9453125em;
                transform: translateX(0.5em) scale(1.5454545455, 0.7272727273);
            }
        }
        @keyframes bounce-in {
            0% {
                border-radius: 0.4448529412em / 0.9453125em;
                transform: translateX(0.5em) scale(1.5454545455, 0.7272727273);
            }
            100% {
                border-radius: 0.6875em;
                transform: translateX(100%) scale(1);
            }
        }
        @keyframes grow-out {
            0% {
                border-radius: 0.6875em;
                transform: translateX(100%) scale(1);
            }
            100% {
                border-radius: 0.4448529412em / 0.9453125em;
                transform: translateX(0.125em) scale(1.5454545455, 0.7272727273);
            }
        }
        @keyframes bounce-out {
            0% {
                border-radius: 0.4448529412em / 0.9453125em;
                transform: translateX(0.125em) scale(1.5454545455, 0.7272727273);
            }
            100% {
                border-radius: 0.6875em;
                transform: translateX(0) scale(1);
            }
        }
    </style>
</head>
<body>
<div class="toggle-container green">
    <input class="toggle-checkbox" type="checkbox">
    <div class="toggle-track">
        <div class="toggle-thumb"></div>
    </div>
</div>

<div class="toggle-container blue">
    <input class="toggle-checkbox" type="checkbox">
    <div class="toggle-track">
        <div class="toggle-thumb"></div>
    </div>
</div>

<div class="toggle-container boo">
    <input class="toggle-checkbox" type="checkbox">
    <div class="toggle-track">
        <div class="toggle-thumb"></div>
    </div>
</div>
</body>
<script>
    const checkboxes = document.querySelectorAll('input[type="checkbox"]');

    const detectToggleOnce = (e) => {
        e.target.classList.add('toggled-once');
    };

    checkboxes.forEach(checkbox => {
        checkbox.addEventListener('click', detectToggleOnce, { once: true });
    });
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/789130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据分析实战-datafram按某(些)列按值进行排序(附源码和实现效果)

实现功能 Python对datafram按某&#xff08;些&#xff09;列进行排序&#xff08;附源码和实现效果&#xff09; 实现代码 import pandas as pd# 读取数据 datapd.read_csv(E:\数据杂坛\\UCI Heart Disease Dataset.csv) dfpd.DataFrame(data) print(df.head())# # 按某列的…

桥梁安全生命周期监测解决方案

一、方案背景 建筑安全是人们生产、经营、居住等经济生活和人身安全的基本保证&#xff0c;目前我国越来越多的建筑物逐 步接近或者已经达到了使用年限&#xff0c;使得建筑物不断出现各种安全隐患&#xff0c;对居民的人身安全和财产安全产 生不利影响&#xff0c;因此房…

html基于onmouse事件让元素变颜色

最近&#xff0c;在书写div块时&#xff0c;遇到一个小问题&#xff0c;这个小问题我搞了将近一个小时多才慢慢解决。问题是这样子的&#xff0c;有一个div块&#xff0c;我想让鼠标移上去变成蓝色&#xff0c;移开变成灰色&#xff0c;当鼠标按下去时让他变成深蓝色。于是就单…

quartus工具篇——ROM ip核

quartus工具篇——ROM ip核 1、ROM简介 FPGA中的ROM(Read-Only Memory)是一种只读存储器,主要用来存储固化的初始化配置数据。FPGA ROM的特性主要有: 预编程初始化 - ROM在FPGA编程时就已经写入了初始值,这些值在整个工作周期保持不变。初始化配置 - ROM通常用来存储FPGA的初…

MySQL——主从复制

1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 1.理解MySQL主从复制原理。 1&#xff09;、MySQL支持的复制类型 &#xff08;1&#xff09;、基于语句&#xff08; statement &#xff09;的复制 在主服务器上执行SQL 语句&#xff0c;在从服务器上执行同样的语句。 My…

Java日志框架JUL、Log4j、logback、log4j2使用

随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多&#xff0c;伴随着容易出现的bug也会越来越多&#xff0c;不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来&#xff0c;方便解决这些问题&#xff0c;否则针对出现的异常无从下手&…

无法定位程序输入点:CreateEventW于动态链接库api-ms-win-core-synch-l1-2-0.dll(未解决)

错误如图&#xff1a; 找了个MSVBCRT.AIO.2020.04.10.X86X64.exe修改一下&#xff0c;没用。 搜索了一下&#xff0c;实际上这个文件有很多&#xff1a;

MonoBehaviour 组件

MonoBehaviour 组件是指继承了 MonoBehaviour 类的脚本组件&#xff0c;可以附加到游戏对象上&#xff0c;用于控制游戏对象的行为和交互。 MonoBehaviour 类是 Unity 中的一个基类&#xff0c;提供了许多方法和事件&#xff0c;用于处理输入、渲染、碰撞、协程等操作。 Unity…

Spring Boot实践

一、Spring Boot简介 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、方便的方式来创建基于Spring的应用程序&#xff0c;而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式&#xff0c;使得开发者可以更加专注于业务逻辑的实现&…

STM32MP157驱动开发——按键驱动(阻塞与非阻塞)

“阻塞与非阻塞 ”机制&#xff1a; 阻塞&#xff1a; 使用 休眠唤醒机制&#xff0c;read函数会休眠&#xff0c;是阻塞的使用 poll 时&#xff0c;如果传入的超时时间不为 0&#xff0c;表示 read函数会休眠&#xff0c;这种访问方法也是阻塞的。 非阻塞 使用 poll 时&am…

王道考研数据结构--4.3链队列

目录 前言 1.链队列的定义 2.链队列的结构 3.链队列的操作 3.1定义链队列 3.2初始化 3.3入队 3.4出队 3.5遍历求表长 3.6清空&#xff0c;销毁 4.完整代码 前言 日期&#xff1a;2023.7.25 书籍&#xff1a;2024年数据结构考研复习指导&#xff08;王道考研系列&…

消融实验(Ablation experiment)

最近读论文遇到消融实验&#xff08;Ablation experiment&#xff09;这个概念。 在论文《Deep Snake for Real-Time Instance Segmentatione》中5.2. Ablation studies 。 消融实验类似于“控制变量法”。 假设在某目标检测系统中&#xff0c;使用了A&#xff0c;B&#xff0…

语言尽头的奇幻旅程:如何求解最后一个单词的长度?

本篇博客会讲解力扣“58. 最后一个单词的长度”的解题思路&#xff0c;这是题目链接。 以示例2为例&#xff1a;s " fly me to the moon " 首先&#xff0c;找到字符串末尾的\0。s一开始指向首字符f&#xff0c;我们从这个位置开始&#xff0c;向后遍历&#xff0c…

20.1 HTML 介绍

1. W3C组织 万维网联盟(World Wide Web Consortium, W3C): 是一个国际性的标准化组织, 致力于开发和推广Web标准.W3C的使命是通过制定和推广Web技术标准, 促进Web的长期发展和互操作性, 它由许多组织和个人组成, 包括浏览器制造商, 软件开发商, 网络服务提供商, 学术机构和个…

【爬虫逆向案例】某道翻译js逆向—— sign解密

声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 【爬虫逆向案例】某道翻译js逆向—— sign解密 1、前言2、步骤3、源码4、号外 1、前言 相信各位小伙伴在写…

【Linux命令200例】chown修改文件或目录的所有者

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

软件测试测试分类(重点)

目录 按照测试对象划分&#xff08;了解&#xff09; ①界面测试 ②可靠性测试&#xff08;可用性&#xff09; ③容错性测试 容错性和可靠性之间的区别 ④文档测试 ⑤兼容性测试 ⑥易用性测试 ⑦安装、卸载测试 ⑧安全测试 ⑨性能测试 内存泄露测试 按照是否查看…

cocosCreator 之 Button

版本&#xff1a; 3.4.0 参考&#xff1a;Button组件 简介 Button组件主要用于响应用户的点击操作&#xff0c;属性检查器中的示意图&#xff1a; Button组件的主要属性有&#xff1a; Interactable 表示按钮是否可交互&#xff0c;如果未勾选表示禁用Transition表示按钮状态…

EAP设备自动化控制系统在设备数采和控制方面的优势

随着科技的不断进步和工业自动化的发展&#xff0c;EAP&#xff08;Equipment Automation Program&#xff09;设备自动化控制系统在各个行业中扮演着越来越重要的角色。作为连接MES&#xff08;Manufacturing Execution System&#xff09;和设备层的沟通桥梁&#xff0c;EAP系…

周训龙老兵参观广西森林安全紧急救援装备演练

7月21日上午&#xff0c;周训龙老兵参观广西紧急救援促进中心在南宁市青秀山举行森林安全紧急救援装备演练&#xff0c;多功能水罐消防车、无人救援机等先进设备轮番上阵&#xff0c;展示了广西应对突发事件的紧急救援速度和水平。广西壮族自治区应急厅不情愿参此次演练活动。 …