html实现蜂窝菜单

2023-10-26

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CSS样式

@keyframes _fade-in_mkmxd_1 {
    0% {
        filter: blur(20px);
        opacity: 0
    }
    to {
        filter: none;
        opacity: 1
    }
}
@keyframes _drop-in_mkmxd_1 {
    0% {
        transform: var(--transform) translateY(-100px) translateZ(400px)
    }
    to {
        transform: var(--transform)
    }
}
._examples_mkmxd_3 {
    margin-top:200px;
    position: relative;
    width:1000px;
    height: 640px;
    transition: transform .15s ease-out;
    filter: drop-shadow(0 4px 18px rgba(0,0,0,1));
    --grid-width: 140px;
    left: 50%;
    transform: translate(-50%, 0px);
}
._examples_mkmxd_3 div {
    position: relative;
    transition: filter .25s ease-out;
    animation: _fade-in_mkmxd_1 .35s cubic-bezier(.215,.61,.355,1) var(--delay) backwards;
}
._examples_mkmxd_3 div:hover {
    filter: drop-shadow(0 4px 8px rgba(0,0,0,.4));
    z-index: 3;
}
._examples_mkmxd_3 a {
    position: absolute;
    --transform: perspective(75em) rotateX(0deg) rotateZ(-0deg) translate(calc(var(--x) * 100%), calc(var(--y) * 86.67%)) scale(1.145);
    transform: var(--transform);
    animation: _drop-in_mkmxd_1 .35s cubic-bezier(.215,.61,.355,1) var(--delay) backwards;
    transition: transform .25s ease-out;
    /*clip-path: polygon(50% 100%,93.3% 75%,93.3% 25%,50% 0%,6.7% 25%,6.7% 75%);*/
    /*clip-path: polygon(25% 93.3%,75% 93.3%,93.3% 50%,75% 6.7%,25% 6.7%,6.7% 50%);*/
    clip-path: polygon(25% 87%,75% 87%,98.3% 50%,75% 13%,25% 13%,1.7% 50%);
}
._examples_mkmxd_3 a:hover{
    transform: var(--transform) translateZ(10px) scale(1.1);
}
._examples_mkmxd_3 img {
    aspect-ratio: 1;
    object-fit: cover;
    height: 64px;
    width: 64px;
    transform: translate(-50%, 40px);
    left: 50%;
    position: absolute;
    /*filter: drop-shadow(2px 2px 0px #00BFFF);*/
}
img {
    max-width: 100%;
    height: auto;
    display: block;
}
*{
    box-sizing: border-box;
}
.menu-box{
    display: block;
    width:200px;
    height:200px;
    /*background:rgba(84, 109, 231,.6);*/
    background: mediumpurple;
    position: relative;
}
.menu-text{
    color: #fff;
    position: absolute !important;
    top: 120px;
    left: 50%;
    font-weight: bold;
    transform: translate(-50%, 0px);
    /*filter: drop-shadow(2px 2px 0px #00BFFF);*/
    font-size: 16px;
    text-align: center;
}
.back-img{
    width: 64px !important;
    position: absolute;
    left: 50%;
    transform: translate(-50%, 20px);
    /*filter: drop-shadow(2px 2px 0px #00BFFF);*/
}
a:hover+.menu-box .menu-text{
    color: #00BFFF;
    filter: drop-shadow(2px 2px 0px #fff);
}

html

 <div class="_examples_mkmxd_3" >
    <div v-for="(item,index) in tempData" :key="index" :style="{'--delay': item.showTime}">
        <a href="#" :title="item.name" @mouseenter="menuEnter(item)" @mouseleave="menuLeave(item)" @click="menuClick(item,tempData)" :style="{'--x': item.x, '--y': item.y}">
            <span class="menu-box" :style="{'background':item.color}">
                <img v-if="item.name!=='上一层'" :src="item.imgPath?item.imgPath:'../img/navigation/火车站.png'" >
                <img v-if="item.imgPath&&item.name==='上一层'" :src="item.imgPath" class="back-img">
                <span class="menu-text">{{item.name}}</span>
            </span>
        </a>
    </div>
</div>

vue代码

new Vue({
    el:'#app',
    data(){
        return {
            menuData:[
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'A系统',img:'',children:[
                        {
                            x:0,y:0, path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'B系统',img:'',children:[
                                {
                                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'E系统',img:'',children:[]
                                },
                                {
                                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'A系统',img:'',children:[]
                                },
                            ]
                        },
                        {
                            x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'C系统',img:'',children:[]
                        },
                        {
                            x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'D系统',img:'',children:[]
                        },
                    ]
                },
                {
                    x:0,y:0, path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'B系统',img:'../img/navigation/火车站.png',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'C系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'D系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'E系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'A系统',img:'',children:[]
                },
                {
                    x:0,y:0, path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'B系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'C系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'D系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'E系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'A系统',img:'',children:[]
                },
                {
                    x:0,y:0, path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'B系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'C系统',img:'',children:[]
                },
                {
                    x:0,y:0,path:'https://observablehq.com/@d3/bar-chart/2?intent=fork',name:'D系统',img:'',children:[]
                },
            ],
            tempData:[],         
            colors:[
                '#1874CD', '#3CB371', '#FF7F50', '#CD1076', '#CD00CD',
                '#1C86EE', '#00FF7F', '#FF8C00', '#EE1289', '#EE00EE',
                '#1E90FF', '#00FF00', '#FFA500', '#FF1493', '#FF00FF',
            ]
        }
    },
    watch:{
        menuData(){
            this.initCoor()
        }
    },
    mounted(){
        let _this = this
        this.getUser()
        // this.getMenuData()
        this.tempData = this.menuData
        this.initCoor()

        this.timer = setInterval(function(){
            _this.localDate = _this.dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss')
        },1000)
    },
    destroyed(){
        clearInterval(this.timer)
    },
    methods:{
        menuEnter(item){
            if(item.name==='上一层')
                return
            this.msgData = item
            this.msgShow = true
        },
        menuLeave(item){
            this.msgShow = false
        },           
        showTime(item){
            if(item.name==='上一层')
                return '0s'
            return Math.random()+'s'
        },
        menuClick(item,parant){
            let  arr =[]
            if(item.name==='上一层'){
                this.changeMenu(item.children)
            }else if(item.children.length>0){
                arr.push({x:0,y:0,path:'',name:'上一层',imgPath:'../img/navigation/icon-返回上一级.png',children:parant})
                item.children.forEach(t=>{
                    arr.push(t)
                })
                this.changeMenu(arr)

            }else{
                window.location.href = item.path
            }
        },
        changeMenu(data){
            let _this = this
            this.tempData = []
            setTimeout(function(){
                _this.tempData = data
                _this.initCoor()
            },10)
        },
        initCoor(){
            this.tempData.forEach((t,index)=>{
                t.color = this.colors[index]
                t.showTime = this.showTime(t)
                if(!t.children){
                    t.children = []
                }               
                if(index<5){
                    t.y=0
                    t.x=index*0.86
                    if(index%2!==0){
                        t.y += 0.5
                        // t.x = (index-1)+0.8
                    }
                }else if(index>4&&index<10){
                    t.y=1
                    t.x=(index-5)*0.86
                    if(index%2===0){
                        t.y +=  0.5
                        // t.x = (index-1)+0.8
                    }
                }else if(index>9&&index<15){
                    t.y=2
                    t.x=(index-10)*0.86
                    if(index%2!==0){
                        t.y += 0.5
                        // t.x = (index-1)+0.8
                    }
                }
            })
        },      
     
    }
})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

html实现蜂窝菜单 的相关文章

  • 使用 JQuery 更新 span 标签值

    我正在尝试更新位于图例标记中的字段集标记中的跨度标记 这个想法是在选择组件时更新软件项目的成本 如果我只有一个软件项目 例如 Visual Studio 2008 Pro 2800 下面的代码工作正常 但如果我在另一个字段集中添加第二个项目
  • SVG路径定位

    我正在制作脸部 SVG 无法将眉毛固定在正确的位置 请指教
  • 使用 jQuery 选择 CSS 中具有 color:lightGreen 的元素

    如何选择具有属性的元素color lightGreen使用 jQuery 在 CSS 中 然后将其更改为 666 示例 HTML a class CorporateHyperlink href EstimateSite Estimate D
  • 如何使用css3让循环动画等待

    我有一个 css3 动画 内容如下 webkit keyframes rotate from webkit transform rotate 0deg to webkit transform rotate 360deg animated w
  • Shadow DOM 中的 Google 分析不起作用

    在我的 chrome 扩展中 没有使用任何 html 页面 而是从后台 js 页面添加影子 DOM 似乎没有任何事件被推动进行分析 添加扩展作为影子根后 结构如下所示 现在chrome扩展manifest json看起来像 manifest
  • 如何计算 VU 仪表刻度的对数标签?

    我使用画布编写一个仪表小部件 需要计算刻度的标签值 没问题 除非我尝试重新创建 VU 表的刻度 我知道它是对数的 但在这种类型的仪表上 这些值不是 10 的幂 see https en wikipedia org wiki VU meter
  • Chart.js - 如何禁用悬停时的所有内容

    如何设置代码使图表上没有悬停效果 悬停选项 悬停 链接等 我正在使用 Chart js 下面是我的代码 我在其中设置饼图 Html div style width 90 div
  • Bootstrap 3 - 如何在单击时淡入警报框并在 3 秒后淡出

    我正在使用 AngularJS 和 Bootstrap 3 我的 Web 应用程序有一个 更新 按钮 用于保存用户所做的任何更改 当用户单击 更新 按钮时 我想激活并淡入引导程序的警报框 显示 信息已保存 然后在 3 秒后淡出 我不知道如何
  • 如何使用 CSS 更改图标图像的颜色? [复制]

    这个问题在这里已经有答案了 我想弄清楚如何更改半透明和半纯色图像的颜色 我希望能够更改白色的颜色 这样我就可以添加悬停 并添加以动态方式更改 WordPress 中颜色的功能 使用 Photoshop 来填充图像不是一个选项 因为我要在我的
  • 有哪些 CSS 属性可以让元素脱离正常流程?

    有哪些 CSS 属性可以让元素脱离正常流程 这些属性可以是 float position absolute 等 这个问题涉及正常流程的所有可能的改变 只有以下属性会影响任何给定元素的正常流程 float right left positio
  • 再次:CSS、UL/OL:自定义计数器的缩进不正确

    我在中描述了我原来的问题这个线程 https stackoverflow com questions 16521330 css ul ol incorrect indent with custom counter 简而言之 当在 UL 中使
  • CSS 缩放不是模糊而是像素化

    我想在图像的 CSS 中使用缩放属性 但不希望对放大的图像产生模糊效果 而是像素化 我怎样才能实现这个目标 编辑 如果需要 可以使用其他属性或其他语言 您 当前 不能使用放大并指定浏览器应使用最近邻缩放 无论是 HTML 图像 放大的 HT
  • 为什么字体名称需要引号?

    据我所知 如果字体包含空格 则需要使用双引号或单引号 例如 font family Times New Roman Times font family Times New Roman Times 但在谷歌字体上 http www googl
  • 如何根据值检查复选框?

    我返回一个 JSON 数据结构 我将其拆分并填充数组 如下所示 var arrayValues data contents split arrayValues 1 3 4 如何根据数组值检查相应的复选框 我的 HTML 看起来像这样 div
  • 在 Chrome 和 IE11 上流式传输可观看的 .mjpeg 视频

    我在本地托管了一个 mjpeg 文件http 127 0 0 1 web Images Stream somevideo mjpeg http 127 0 0 1 web Images Stream somevideo mjpeg 我在我的
  • 在 CSS 流布局中自动调整图像大小以模拟 html 表格布局

    我有一个图像 根据屏幕分辨率 它会在 CSS 流布局中下降到看不见的位置 因为我已将其宽度和高度设置为静态值 CSS 流布局中是否有一种方法可以在有人缩小浏览器窗口时自动调整图像大小 我已经在 html table 布局中看到了这一点 并且
  • 为什么不是 obj.style.left = "200px";在这段代码中工作?

    为什么不会 style top 200px 在这段代码中工作 使用以下方式调用元素内的事件oclick this style left 200px 也不行 div The Div div
  • href 链接不可点击或不可突出显示

    我不完全确定为什么我的 a href 链接不起作用 在某个时间点它起作用了 我对 Z Index 做了一些研究 但这似乎不是问题 也不是我有一个重叠的 div 吗 请访问JSFIDDLE NET https jsfiddle net t9v
  • 输入时自动完成,使内容跳转

    我有一个输入 在 Chrome 中 当弹出自动完成菜单并且您将鼠标悬停在其中一个选项上时 输入下方的内容会跳转 就像自动完成选择由于某种原因添加垂直填充一样 我怎样才能阻止这个 这很烦人 这是一个例子 小提琴演示 https jsfiddl
  • 使用JS显示计算结果的HTML输出

    我正在尝试使用 HTML 和 JS 构建一个卡路里计算器 目前正在努力在屏幕上 或通过 console log 显示输出 我知道我正在做一些非常基本的错误 但目前无法确定那是什么 下面是我的 HTML 和 JS 代码 document ge

随机推荐

  • Using Java to create customized virtual machine clones on VMWare infrastructure

    Hello Quite a while ago I was given a task to create a java module which would be able to create customized clones from
  • python制作词云图

    准备基础模块 matplotlib 数据可视化模块 numpy 数值计算模块 jieba 分词模块 wordcloud 词云模块 Pillow PIL 图像处理模块 同时准备遮罩图和文本信息 实现代码 导入matplotlib模块pyplo
  • 数据挖掘学习之路二:数据预处理方法概述

    主要是将数据中缺失的数据补充完整 消除噪声数据 识别和删除离群点并解决不一致性 主要达到的目标是 将数据格式标准化 异常数据清除 错误纠正 重复数据清除 A 异常数据处理 分析异常数据 1 使用统计值进行判断 最大值 最小值 平均值等判断是
  • C++中的++i 与 i++详解

    一 区别 i 与 i 的主要区别有两个 1 i 返回原来的值 i 返回加1后的值 2 i 不能作为左值 而 i 可以 二 原理 毫无疑问大家都知道第一点 我们重点说下第二点 首先解释下什么是左值与右值 通俗地说 以赋值符号 为界 左边的就是
  • CUDA小白 - NPP(6) 图像处理 Geometry Transforms (2)

    cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化 具体的可以参考别的博主的介绍 都比较详细 还有一些cuda中的专有名词的含义 可以参考 详解CUDA的Context Stream Warp SM SP Kernel B
  • npm包的发布和删除

    登录npm发布包 1 终端 输入npm login 可以登录npm账号 依次输入用户名 密码 密码盲打 邮箱 2 输入nrm use npm通过命令更改npm服务 需将npm切换为npm官方服务 不能使用taobao镜像 注 可以通过npm
  • 基于虚拟机的集群冗余简化

    为了实现高可用性 企业使用中间软件例如微软和 Veritas 的集群软件 把两台服务器绑定在一个热备环境 即使运行在服务器上的应用程序有集群 感知能力 万一主服务器遭遇硬件或软件错误 这样的安排仍然会导致非应 用程序当机 冗余能消除单点失败
  • 面经——嵌入式软件工程师ARM体系与架构相关

    参考 嵌入式软件工程师笔试面试指南 ARM体系与架构 作者 嵌入式与Linux那些事 发布时间 2021 04 28 15 22 06 网址 https blog csdn net qq 16933601 article details 1
  • Windows下配置nginx+php(wnmp)

    Windows下配置nginx php wnmp waynewuzhenbo 博客园 http www cnblogs com wuzhenbo p 3493518 html Windows下配置nginx php wnmp 第一部分 准备
  • GraphPad Prism 9 for mac/win 安装教程

    GraphPad Prism集生物统计 化学统计 以及科技绘图于一身 其中医学所能用到的绘图需要它几乎都能满足 Prism 现在被各种生物学家以及社会和物理科学家广泛使用 超过110个国家的超过20万名科学家依靠 Prism 来分析 绘制和
  • 删除节点后从新加入的错误

    ERR Node 172 168 63 202 7001 is not empty Either the nodealready knows other nodes check with CLUSTER NODES or contains
  • Qt中绘制直线

    绘制多条直线 直接上代码 绘制直线的部分 QPen pen Qt lightGray 1 pen setStyle Qt DashDotDotLine pen setWidth 1 painter setPen pen painter tr
  • JVM【八股文】

    JVM 八股文 JVM内存区域划分 程序计数器 栈 堆 方法区 一块大的区域 需要根据功能 来划分不同的小区域 JVM内存是从操作系统里申请来的 之后堆这部分区域进行了划分 1 程序计数器 内存中最小的区域 保存了下一条要执行指令的地址 指
  • Spring 如何使用注解装配Bean呢?

    转自 Spring 如何使用注解装配Bean呢 我们都知道在Spring中 可以使用xml可实现 Bean状态操作 但是如果有非常多的Bean时 就会出现大量的xml 这样就会导致配置文件非常的大 并且容易出错及难维护 Java 从JDK5
  • PHP取整,四舍五入取整、向上取整、向下取整、小数截取。

    PHP取整数函数常用的四种方法 1 直接取整 舍弃小数 保留整数 intval 2 四舍五入取整 round 3 向上取整 有小数就加1 ceil 4 向下取整 floor 一 intval 对变数转成整数型态 intval如果是字符型的会
  • 迭代器iterator

    能进行算术运算的迭代器只有随即访问迭代器 要求容器元素存储在连续内存空间里 vector string deque的迭代器是有加减法的 但是map set multimap multiset的迭代器是没有加减法的 list也不可以
  • minio老版本集成到k8s的yaml

    apiVersion apps v1 kind StatefulSet metadata name minio spec replicas 1 serviceName minio selector matchLabels name mini
  • Android WebView使用详解及注意事项

    未经本人授权 不得转载 否则必将维权到底 目前很多公司的 App 就只使用一个 WebView 作为整体框架 App 中的所有内容全部使用 HTML5 进行展示 这样只需要写一次 HTML5 代码 就可以在 Android 和 iOS 平台
  • Android textAppearance的属性设置及TextView属性详解

    http blog csdn net jaycee110905 article details 8762238 textAppearance的属性设置 android textAppearance android attr textAppe
  • html实现蜂窝菜单

    效果图 CSS样式 keyframes fade in mkmxd 1 0 filter blur 20px opacity 0 to filter none opacity 1 keyframes drop in mkmxd 1 0 tr