我家的导航可以弹琴!
效果预览如下,我在想要是每滑动一个子菜单,就能出一点声音,那就可以自动弹琴了,想想都爽死了.
实现原理还是有点点复杂,产生随机数,随即选择一个滑动,然后循环执行一个函数.
然后给每个添加事件,mouseover的时候就停止,mouseover时候在开始循环执行函数
html代码:
<div id="nothing-menu">
<a href="#">博客园</a>
<a href="#">首页</a>
<a href="#">新随笔</a>
<a href="#">联系</a>
<a href="#">管理</a>
<a href="#">订阅</a>
</div>
CSS代码:
#nothing-menu{position:relative;}
a{text-decoration:none;}
#nothing-menu a{display:block;float:left;font-size:14px;padding:10px;color:#999;background-color:#333;}
JS代码:(还是基于mootools1.3)使用了morph动画属性
var menuDown = {
data: {
locked: false,
autoTime: 400,
morph: {
duration: 200
},
morphShowDown: {
'margin-top': 8,
'color': '#ff8',
'background-color': '#666'
},
morphGoBack: {
'margin-top': 0,
'color': '#999',
'background-color': '#333'
}
}, //设置各种需要的参数
random: function (i) {
return parseInt(Math.random() * i);
},//产生一个随机数
start: function () {
this.menu = $("nothing-menu");
this.menuLink = this.menu.getElements("a");
for (var i = 0; i < this.menuLink.length; i++) {
this.menuLink[i].set("morph", this.data.morph);
this.menuLink[i].addEvents({
mouseover: this.showDown.bind(this, [i]),
mouseout: this.goBack.bind(this, [i])
});
}
this.rotate.periodical(this.data.autoTime, this); //每隔一段时间执行
},
rotate: function () {
if (!this.data.locked) { //当处于锁定状态时,不发生任何事情,自然会停止
this.randomShow();
}
},
stop: function () {
this.data.locked = true;
},
randomShow: function () {
var i = this.random(this.menuLink.length);
this.menuLink[i].get("morph").start(this.data.morphShowDown).chain(function () {
this.menuLink[i].get("morph").start(this.data.morphGoBack);
} .bind(this, i)); //函数链
},
showDown: function (i) { //下滑函数
this.data.locked = true;
this.menuLink[i].morph(this.data.morphShowDown);
},
goBack: function (i) { //返回函数
this.data.locked = false;
this.menuLink[i].morph(this.data.morphGoBack);
}
};
menuDown.start();
此效果纯属好玩,不过我在想要是真的可以随机弹钢琴就好了,就是产生1-7的随机数,然后每次就弹出相应的声音,要是难点的话可以加个
中低高音,突然发现自己好会想!嘿嘿!更神奇点的就是支持键盘1-7甚至更多的键的输入就好了,然后就可以真的弹琴了!原来在键盘上
也是可以的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架