黏糊糊的菜单

news2024/11/27 21:03:38

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

再看代码:

<!--黏糊糊的菜单 可融合-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>黏糊糊的菜单</title>
    <style>
        body {
            padding: 0;
            margin: 0;
            filter: url('#goo')
        }

        figure {
            margin: 0;
        }

        .main-container {
            width: 100%;
            height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .float-menu-container {
            width: 600px;
            height: 600px;
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            border-radius: 50%;
        }

        .hamburger-icon {
            background-color: #4c51bf;
            width: 80px;
            height: 80px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: 500ms all ease-in-out;
            cursor: pointer;
            position: relative;
            z-index: 99;
            overflow: hidden;
        }

        .hamburger-icon span {
            width: 40px;
            height: 6px;
            background: white;
            transition: 500ms all ease-in-out;
            border-radius: 10px;
            position: relative;
        }

        .hamburger-icon span::before,
        .hamburger-icon span::after {
            content: "";
            position: absolute;
            width: 40px;
            height: 6px;
            background: white;
            transition: 500ms all ease-in-out;
            border-radius: 10px;
        }

        .hamburger-icon span::before {
            transform: translateY(-16px);
        }

        .hamburger-icon span::after {
            transform: translateY(16px);
        }

        .hamburger-icon.active span {
            transform: translateX(-50px);
            background-color: transparent;
        }

        .hamburger-icon.active span::before {
            transform: rotate(45deg) translate(35px, -35px);
        }

        .hamburger-icon.active span::after {
            transform: rotate(-45deg) translate(35px, 35px);
        }

        .nav-container {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        .nav {
            position: relative;
        }

        .nav-item {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            transition: 700ms all;
        }

        .clicked .nav-item:nth-child(1) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(-24px, -150px);
            transition: 1100ms all;
        }

        .clicked .nav-item:nth-child(2) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(-154px, -100px);
            transition: 1200ms all;
        }

        .clicked .nav-item:nth-child(3) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(-138px, 5px);
            transition: 1300ms all;
        }

        .clicked .nav-item:nth-child(4) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(-184px, 110px);
            transition: 1400ms all;
        }

        .clicked .nav-item:nth-child(5) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(-54px, 80px);
            transition: 1500ms all;
        }

        .clicked .nav-item:nth-child(6) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(66px, 100px);
            transition: 1600ms all;
        }

        .clicked .nav-item:nth-child(7) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(130px, 20px);
            transition: 1700ms all;
        }

        .clicked .nav-item:nth-child(8) {
            position: absolute;
            left: 0;
            right: -48px;
            transform: translate(86px, -90px);
            transition: 1800ms all;
        }

        .nav-item figure {
            width: 50px;
            height: 50px;
            background-color: #667eea;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            /*   box-shadow: rgba(0, 0, 0, 0.25) 0px 0.0625em 0.0625em,
                rgba(0, 0, 0, 0.25) 0px 0.125em 0.5em,
                rgba(255, 255, 255, 0.1) 0px 0px 0px 1px inset; */
            cursor: pointer;
        }

        .nav-item:nth-child(1) figure {
            animation: float 5s ease-in-out infinite;
        }
        .nav-item:nth-child(2) figure {
            animation: float 4s ease-in-out infinite;
        }
        .nav-item:nth-child(3) figure {
            animation: float 3s ease-in-out infinite;
        }
        .nav-item:nth-child(4) figure {
            animation: float 4s ease-in-out infinite;
        }
        .nav-item:nth-child(5) figure {
            animation: float 5s ease-in-out infinite;
        }
        .nav-item:nth-child(6) figure {
            animation: float 4s ease-in-out infinite;
        }
        .nav-item:nth-child(7) figure {
            animation: float 3s ease-in-out infinite;
        }
        .nav-item:nth-child(8) figure {
            animation: float 4s ease-in-out infinite;
        }

        .nav-item figure svg {
            width: 32px;
            height: 32px;
        }

        .nav-item figure:hover{
            background-color: #a3bffa;
            border-color: white;
        }

        .nav-item figure:hover svg{
            fill: #4c51bf;
        }

        @keyframes float {
            0% {
                box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6);
                transform: translatey(0px);
            }
            50% {
                box-shadow: 0 25px 15px 0px rgba(0, 0, 0, 0.2);
                transform: translatey(-15px);
            }
            100% {
                box-shadow: 0 5px 15px 0px rgba(0, 0, 0, 0.6);
                transform: translatey(0px);
            }
        }

    </style>
</head>

<body>
<div class="main-container">
    <div class="float-menu-container">
        <div id="hamburger" class="hamburger-icon" onclick="toggleActiveIcon()">
            <span></span>
        </div>
        <div id="nav-container" class="nav-container">
            <div class="nav">
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="white">
                            <path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M2 5a2 2 0 012-2h7a2 2 0 012 2v4a2 2 0 01-2 2H9l-3 3v-3H4a2 2 0 01-2-2V5z" />
                            <path d="M15 7v2a4 4 0 01-4 4H9.828l-1.766 1.767c.28.149.599.233.938.233h2l3 3v-3h2a2 2 0 002-2V9a2 2 0 00-2-2h-1z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M5.5 16a3.5 3.5 0 01-.369-6.98 4 4 0 117.753-1.977A4.5 4.5 0 1113.5 16h-8z" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM7 9a1 1 0 100-2 1 1 0 000 2zm7-1a1 1 0 11-2 0 1 1 0 012 0zm-.464 5.535a1 1 0 10-1.415-1.414 3 3 0 01-4.242 0 1 1 0 00-1.415 1.414 5 5 0 007.072 0z" clip-rule="evenodd" />
                        </svg>
                    </figure>
                </div>
                <div class="nav-item">
                    <figure>
                        <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="white">
                            <path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" />
                        </svg>
                    </figure>
                </div>
            </div>
        </div>
    </div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <defs>
        <filter id="shadowed-goo">

            <feGaussianBlur in="SourceGraphic" result="blur" stdDeviation="16" />
            <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 18 -7" result="goo" />
            <feGaussianBlur in="goo" stdDeviation="3" result="shadow" />
            <feColorMatrix in="shadow" mode="matrix" values="0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 1 -0.2" result="shadow" />
            <feOffset in="shadow" dx="1" dy="1" result="shadow" />
            <feComposite in2="shadow" in="goo" result="goo" />
            <feComposite in2="goo" in="SourceGraphic" result="mix" />
        </filter>
        <filter id="goo">
            <feGaussianBlur in="SourceGraphic" result="blur" stdDeviation="10" />
            <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 18 -7" result="goo" />
            <feComposite in2="goo" in="SourceGraphic" result="mix" />
        </filter>
    </defs>
</svg>
</body>

<script>
    const hamburgerIcon = document.getElementById("hamburger");
    const navContainer = document.getElementById("nav-container")

    function toggleActiveIcon() {
        hamburgerIcon.classList.toggle("active");
        navContainer.classList.toggle("clicked")
    }
</script>

</html>

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

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

相关文章

【pytorch】维度变换

【pytorch】维度变换 View操作unSqueeze操作图片处理的一个案例squeeze 维度删减操作维度扩展-expand维度扩展-repeat矩阵的转置操作-transpose View操作 将一个四维的张量&#xff08;b x c x h x w&#xff09;转换成一个二维的张量 对于四张图片 将每一张图像用一行向量进…

阿里内部秀出新天际的SpringBoot实战笔记,让开发像搭积木一样简单

​什么是 Spring Boot Java (面向对象编程语言)经过 30 多年的发展&#xff0c;产生了非常多的优秀框架。Spring (为解决企业应用程序开发的复杂性而创建的框架)曾是最受欢迎的 Java 框架之一&#xff0c; 但随着 Node、Ruby、Groovy、PHP 等脚本语言的蓬勃发展&#xff0c;使…

行业热点 | Quest 3发布、苹果MR发布在即, 6月初XR大戏即将上演

编者按&#xff1a; 昨夜&#xff0c;朋友圈被Quest3占领&#xff0c;Meta首款消费级MR头显Quest 3在其一年一度的游戏展示会前正式发布&#xff0c;扎克伯格亲自站台&#xff0c;这也侧面透露确实将还有几天就要发布的苹果MR头显视为强有力的竞争对手。 另一边&#xff0c;W…

Linux系统的开机自启脚本方法

centOS中 方法1&#xff1a;/etc/rc.local /etc/rc.local是rc.d/rc.local的软链 1、在自己需要启动的文件目录中编写一个shell脚本文件auto_run_script.sh&#xff08;文件名称你们随意&#xff09;。我的这个timeTest文件是timeTest.cpp编译过来的。主要是过几秒打印一下时…

Dubbo中的常用组件

微服务的架构主要包括服务描述、服务发现、服务调用、服务监控、服务追踪以及服务治理这几个基本组件。 那么每个基本组件从架构和代码设计上该如何实现&#xff1f;组件之间又是如何串联来实现一个完整的微服务架构呢&#xff1f;今天我就以开源微服务框架Dubbo为例来给你具体…

机器学习实战六步法之训练模型、优化模型、部署模型(七)

要落地一个机器学习的项目&#xff0c;是有章可循的&#xff0c;通过这六个步骤&#xff0c;小白也能搞定机器学习。 看我闪电六连鞭&#xff01;&#x1f923; 训练模型 当确定好机器学习算法之后&#xff0c;就可以通过训练数据集中的特征和标签&#xff0c;根据样本数据的…

SLAM中刚体的运动描述

简介 物体在真实世界中是运动的&#xff0c;SLAM中求解的机器人位姿就是求解机器人的运动。SLAM的问题就是求解世界坐标系中的静态物理点坐标以及运动的机器人点坐标集合&#xff08;机器人运动点的集合构成机器人的运动轨迹&#xff09;。而通常我们获取的信息是以机器人本体为…

测试真的会被ChatGPT代替一文告诉你

送走最后一车货&#xff0c;最后三个工人&#xff0c;老王吃力的关上大铁门。左手从口袋摸出一盒烟&#xff0c;轻轻一颠&#xff0c;滑落一根&#xff0c;右手娴熟的夹住。掏出打火机&#xff0c;点燃&#xff0c;一丝青烟腾起&#xff0c;萦绕在指头。 夕阳穿过玻璃&#xf…

知道这些英文文档翻译的方式吗

在工作中&#xff0c;大家有没有遇到领导交给你一份外语的文档&#xff0c;要你去观看和理解&#xff0c;但是我们看不太懂或者没啥时间去一点点翻译怎么办呢&#xff1f;我们就需要有工具来将文档翻译&#xff0c;它是一项非常实用和便捷的功能&#xff0c;它可以将文档中的文…

高级运维工程师的工作职责描述(合集)

高级运维工程师的工作职责描述1 职责&#xff1a; 1、参与设计、审核的Linux系统以及各应用系统的体系架构; 2、全面负责公司运维项目的系统升级、linux系统运营维护&#xff0c;保障公司服务器零风险; 3、负责阿里云服务器监控,搭建cacti、zabbix、nagios等监控产品&#xff0…

STM32信号量

目录 什么是信号量&#xff1f; 什么是二值信号量&#xff1f; 二值信号量相关 API 函数 1. 创建二值信号量 2. 释放二值信号量 3. 获取二值信号量 实操 实验需求 cubeMX配置​编辑 代码实现 计数型信号量 什么是计数型信号量&#xff1f; 计数型信号量相关 API 函…

CENTO OS上的网络安全工具(二十三)VSCODE SPARK 容器式编程环境构建

在vscode上使用maven构建spark的scala编程环境&#xff0c;很大程度上需要不断地从网络上下载各种依赖和插件&#xff0c;而且这一过程复杂而不可控。下面这段&#xff0c;是整个安装过程中/root目录下不断增加的内容。 [rootd7ff8f448a0d /]# cd /root [rootd7ff8f448a0d ~]#…

【 Python 全栈开发 - WEB开发篇 - 32 】MySQL高级查询

文章目录 一、LIMIT限制查询结果的数量二、使用GROUP BY进行分组查询1.GROUP BY和聚合函数一起使用2.GROUP BY和聚合函数以及HAVING一起使用 三、使用ORDER BY对查询结果排序 一、LIMIT限制查询结果的数量 开始之前&#xff0c;我们先准备一下数据&#xff0c;打开cmd&#xf…

MsSqlServer2008R2移动数据库迁移复制粘贴附加.mdf不要.ldf日志 230609记录

MsSqlServer2008R2数据库迁移复制粘贴附加.mdf 230609记录 将一个SqlServer的某个数据文件.mdf拷贝到另一个数据库当中,并启用 操作工具为 SSMS(SQL Server Management Studio) 19.1 免费下载 SQL Server Management Studio (SSMS) 19.1 .mdf文件 SQL Server 数据库中的三…

【数据结构】何为数据结构。

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

chatgpt赋能python:Python循环暂停和继续的方法

Python循环暂停和继续的方法 Python是一种高级编程语言&#xff0c;在编程中使用循环结构非常常见。很多情况下&#xff0c;我们需要在循环中暂停或者继续执行。在本文中&#xff0c;我们将介绍如何在Python中实现循环暂停和继续的方法。 循环暂停和继续的意义 在Python编程…

打死也要学的VUE.js(中文官方文档)

VUE.js中文官方文档 文章目录 VUE.js中文官方文档 创建一个 Vue 应用[#](https://cn.vuejs.org/guide/essentials/application.html#creating-a-vue-application)应用实例[#](https://cn.vuejs.org/guide/essentials/application.html#the-application-instance)根组件[#](http…

微信小程序抓包你会吗?不会我来教你

目录 前言 先来说小程序抓包问题 再说下小程序调试问题 解包wxapkg 调试小程序 总结&#xff1a; 前言 今天聊下微信小程序的抓取&#xff0c;其实小程序的抓取不难&#xff0c;主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话&#xff0c;就…

Java多线程、进程、并行、并发的理解(通俗易懂)

程序(programm) 概念&#xff1a;是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。 进程(process) 概念&#xff1a;程序的一次执行过程&#xff0c;或是正在运行的一个程序。 说明&#xff1a;进程作为资源分配的单位&#xff0c;系统在运行时会为每…

基于VITS-fast-fine-tuning构建多speaker语音训练

1 VITS模型介绍 VITS&#xff08;Variational Inference with adversarial learning for end-to-end Text-to-Speech&#xff09;是一种语音合成方法&#xff0c;它使用预先训练好的语音编码器 (vocoder声码器) 将文本转化为语音。 VITS 的工作流程如下&#xff1a; &#xff0…