效果图
CSS-Code
@keyframes _fade-in_mkmxd_1 { 0 % { Filter: Unschärfe (20 Pixel); Deckkraft: 0 } Zu { Filter: keiner; Deckkraft: 1 } } @keyframes _drop-in_mkmxd_1 { 0 % { transformieren: var(--transform) TranslateY(-100px) TranslateZ(400px) } Zu { transformieren: var(--transform) } } ._examples_mkmxd_3 { margin-top:200px; Position: relativ; Breite: 1000 Pixel; Höhe: 640px; Übergang: Transformation .15s Easy-Out; Filter: Schlagschatten(0 4px 18px rgba(0,0,0,1)); --grid-width: 140px; links: 50 %; transform: Translate(-50%, 0px); } ._examples_mkmxd_3 div { Position: relativ; Übergang: Filter .25s Ease-out; Animation: _fade-in_mkmxd_1 .35s kubischer Bezier(.215,.61,.355,1) var(--delay) rückwärts; } ._examples_mkmxd_3 div:hover { Filter: Schlagschatten(0 4px 8px rgba(0,0,0,.4)); Z-Index: 3; } ._examples_mkmxd_3 a { Position: absolut; --transform: perspective(75em) rotateX(0deg) rotateZ(-0deg) translator(calc(var(--x) * 100%), calc(var(--y) * 86,67%)) scale(1.145); transformieren: var(--transform); Animation: _drop-in_mkmxd_1 .35s kubischer Bezier(.215,.61,.355,1) var(--delay) rückwärts; Übergang: Transformation .25s Easy-Out; /*Clip-Pfad: 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-Pfad: 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 { Seitenverhältnis: 1; Objektanpassung: Abdeckung; Höhe: 64px; Breite: 64px; transform: Translate(-50%, 40px); links: 50 %; Position: absolut; /*filter: drop-shadow(2px 2px 0px #00BFFF);*/ } img { maximale Breite: 100 %; Höhe: automatisch; Anzeige: Block; } *{ Boxgröße: border-box; } .menu-box{ Anzeige: Block; Breite:200px; Höhe:200px; /*background:rgba(84, 109, 231,.6);*/ Hintergrund: mittelviolett; Position: relativ; } .menu-text{ Farbe: #fff; Position: absolut !important; oben: 120px; links: 50 %; Schriftstärke: fett; transform: Translate(-50%, 0px); /*filter: drop-shadow(2px 2px 0px #00BFFF);*/ Schriftgröße: 16px; Textausrichtung: Mitte; } .back-img{ Breite: 64px !important; Position: absolut; links: 50 %; transform: Translate(-50%, 20px); /*filter: drop-shadow(2px 2px 0px #00BFFF);*/ } a:hover+.menu-box .menu-text{ Farbe: #00BFFF; Filter: Schlagschatten(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代码
neues Vue({ el:'#app', Daten(){ zurückkehren { 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',Kinder:[] }, { 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:[], Farben:[ „#1874CD“, „#3CB371“, „#FF7F50“, „#CD1076“, „#CD00CD“, „#1C86EE“, „#00FF7F“, „#FF8C00“, „#EE1289“, „#EE00EE“, „#1E90FF“, „#00FF00“, „#FFA500“, „#FF1493“, „#FF00FF“, ] } }, betrachten:{ menuData(){ this.initCoor() } }, mount(){ 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) }, zerstört(){ clearInterval(this.timer) }, Methoden:{ menuEnter(item){ if(item.name==='上一层') zurückkehren this.msgData = Artikel this.msgShow = true }, menuLeave(item){ this.msgShow = false }, showTime(item){ if(item.name==='上一层') „0en“ zurückgeben 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) }anders{ window.location.href = item.path } }, changeMenu(data){ let _this = this this.tempData = [] setTimeout(function(){ _this.tempData = Daten _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){ ty=0 tx=index*0,86 if(index%2!==0){ ty += 0,5 // tx = (index-1)+0,8 } }else if(index>4&&index<10){ ty=1 tx=(index-5)*0,86 if(index%2===0){ ty += 0,5 // tx = (index-1)+0,8 } }else if(index>9&&index<15){ ty=2 tx=(index-10)*0,86 if(index%2!==0){ ty += 0,5 // tx = (index-1)+0,8 } } }) }, } })
到此这篇关于html实现蜂窝菜单的示例代码的文章就介绍到这了,更多相关html蜂窝菜单内容请搜索dow ncodes.com