我家的导航可以弹琴!

效果预览如下,我在想要是每滑动一个子菜单,就能出一点声音,那就可以自动弹琴了,想想都爽死了.
 



实现原理还是有点点复杂,产生随机数,随即选择一个滑动,然后循环执行一个函数.
然后给每个添加事件,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甚至更多的键的输入就好了,然后就可以真的弹琴了!原来在键盘上
也是可以的!

posted @   !nothing  阅读(550)  评论(0编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示