PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
|
积分获取
|
给我留言
|
tag标签
首页
开发编程
PHP教程
ASP.NET教程
Jquery教程
Unity3D教程
JavaScript教程
HTML+CSS
ThinkPhp教程
Smarty教程
正则表达式
编程杂谈
HTML5+CSS3教程
HBuilderX教程
AngularJS教程
Laravel教程
iOS开发教程
Java教程
小程序开发
提供网页设计教程和后台编程技术
CMS教程
phpcms教程
dedecms教程
wordpress教程
ecshop教程
帝国cms教程
discuz教程
齐博cms教程
ShopNc教程
提供主流cms教程
数据库
MySQL教程
SQL Server教程
NoSql数据库
提供数据库教程和设计
JS特效
HTML5+CSS3特效
焦点图
菜单导航
广告特效
对联广告
在线客服
相册特效
图片特效
悬浮漂浮
滚动特效
Tab选项卡
瀑布流
手机js特效
弹出层(框)
日期时间
网页模板
其它特效
提供各种常见网页js代码
网页特效
HTML5+CSS3
鼠标特效
文字特效
导航菜单
表格图层
Tab选项卡
图片特效
时间日期
网站常用
提供常用的JS特效代码及在线演示
Jquery插件
jQuery日期时间
jQuery弹出层
jQuery筛选排序
jQuery滚动插件
jQuery工具提示
jQuery音频视频
jQuery选项卡
jQuery图片裁剪
jQuery常用插件
jQuery导航菜单
提供jQuery插件教程及插件下载
服务器
Linux教程
Web服务器
提供服务器常见问题及教程
站长学院
seo技巧
建站经验
网络营销
站长资讯
好文分享
网络推广
互联网资讯
提供站长技术、站长资讯等内容
工具&手册
Base64编码加密
正则测试工具
Css压缩/格式化
jQuery手册
md5加密
CSS3
帝国cms开发手册
DEDE5.7使用手册
配色词典
C语言库
提供常用开发手册和开发工具
全站搜索
搜索
关键字:
滑动
BIT_COUNT
C#
JS特效代码
网站运营
js统计
jquery教程
$GLOBALS
您现在的位置:
首页
>
网页特效
>
网站常用
> 正文
jquery 3D旋转八音盒(音乐盒)
作者:admin
来源:网络
浏览:
次
时间:2020-10-24 21:11:49
我要评论
分享到
内容介绍
3D 控制:单独按下鼠标一个键拖动 上下左右 控制 x,y 轴,鼠标左右键同时按下拖动 控制 z 轴
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>八音盒</title> <style type="text/css"></style> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript"> var musicBox = (function(){ var note = "33303330351230444043303221250333033303512304440433035542100001654101116542027653088756016541011165420276580880898754"; var notes = note.split(""); var music = [ "http://audio.xmcdn.com/group6/M09/94/0F/wKgDg1dSgj2jYmEeAABJtZe4StQ777.m4a", "http://audio.xmcdn.com/group6/M09/94/0F/wKgDg1dSgj3D7aDpAABJtd4uyKg591.m4a", "http://audio.xmcdn.com/group6/M07/90/06/wKgDhFdSgj2hRVsBAABJtSP8uGw833.m4a", "http://audio.xmcdn.com/group6/M09/94/0F/wKgDg1dSgj2AzexnAABLLdnCe6I772.m4a", "http://audio.xmcdn.com/group6/M07/90/06/wKgDhFdSgj7BbdNcAABLLQlYK4Q923.m4a", "http://audio.xmcdn.com/group6/M07/90/07/wKgDhFdSgj7zVLJsAABLLco3BH4002.m4a", "http://audio.xmcdn.com/group6/M09/94/10/wKgDg1dSgj6jRiLnAABLLcFinvM177.m4a", "http://audio.xmcdn.com/group6/M07/90/06/wKgDhFdSgj6jpKglAABJtdOVhr8626.m4a" ]; var player = function(i){ if(i == 0) return; var audio = new Audio(music[i-1]); audio.onended = function(){ delete audio; } audio.play(); } var Box = { //读取/写入 简谱 note : function(str){ if(!str) return note; note = str; notes = str.split(""); return this; }, notes : function(arr){ if(!arr) return notes; if(arr.length >= 0) notes = arr; return this; }, play : function(i){ player(i) }, //曲谱长度 size : function(){ return notes.length; }, //音阶个数 length : music.length } return Box; })(); $(function(){ //样式初始化 var boxObj = (function(musicBox){ musicBox.note("0" + musicBox.note()) var num = musicBox.size(), angle = [], g = 360 / num, z = Math.round(4.8/Math.sin(g*0.5*Math.PI/180)/Math.sin(90*Math.PI/180)); var mouseEvent = "mousedown mouseup mousemove"; $.fn.getTransform = function(){ var ts = this[0].style.transform; var arr = ts.split(" "); var obj = {} $.each(arr, function(i,n) { a = n.match(/(\w+)\(([0-9.-]+)\w*\)/); obj[a[1]] = Number(a[2]); }); return obj; } $.fn.setTransform = function(obj){ if(!obj) return; var str = ""; for(key in obj){ if(str) str += " "; str += key + "(" + obj[key] + "deg)"; } this.css({"transform":str}); } var eventFn = [function(e){ $.downFlag = true; $(e.currentTarget).css({"cursor":"move"}); }, function(e){ $.downFlag = false; $.lastX = 0; $.lastY = 0; $(e.currentTarget).css({"cursor":"default"}); }, function(e, o){ if(!$.downFlag){ $.lastX = 0; $.lastY = 0; return; } var obj = o.getTransform(); if(!$.lastX) $.lastX = e.pageX; if(!$.lastY) $.lastY = e.pageY; if(e.button == 0 && e.buttons == 3){ //鼠标左右键同时按下 控制 z 轴 e.preventDefault(); obj.rotateZ -= (e.pageX - $.lastX)/5; } else { //单独按下鼠标一个键 上下左右 控帛 x,y 轴 obj.rotateX -= (e.pageY - $.lastY)/5; obj.rotateY += (e.pageX - $.lastX)/5; } $.lastX = e.pageX; $.lastY = e.pageY; o.setTransform(obj); }]; var me = mouseEvent.split(" "); var typeEventFn = {}; $.each(me, function(i) { typeEventFn[me[i]] = eventFn[i]; }); var box = $("<ul>").css({"transform":"rotateX(40deg) rotateY(-15deg) rotateZ(45deg)"}).appendTo($('<div id="musicBox">').appendTo("body")); box.parent().on(mouseEvent, function(){ var e = event || window.event; e.stopPropagation(); typeEventFn[e.type](e, box); }).on("contextmenu", function(){ return false; }); var style = "*{margin:0;padding:0;box-sizing:border-box;}\r\n"; style += "html,body,#musicBox{height:100%;overflow:hidden;}\r\n"; style += "body{background:black;color:white}\r\n"; style += "#musicBox{perspective:800px;}\r\n"; style += "#musicBox ul{width:400px;height:"+ z * 2 +"px;top:calc(50% - " + z + "px);transform-style:preserve-3d;transform-origin:center center -" + z + "px;list-style:none;margin:0 auto;position:relative;}\r\n"; style += "#musicBox ul li{text-align:center;line-height:5px;backface-visibility:visible;transform-style:preserve-3d;transform-origin:inherit;width:400px;height:10px;background-color:orange;border-left:solid 1px gray;border-right:solid 1px gray;position:absolute;top:50%;}\r\n"; style += "#musicBox ul li i{display:inline-block;margin:0 12px;width:5px;height:5px;background-color:black;border-radius:50%;}\r\n"; style += "#musicBox ul li.current{overflow:visible;background-color:#ff0;\r\n}"; style += "#musicBox ul li i.note{background-color:snow;\r\n}"; style += "#musicBox ul li.current i.note{background-color:red;}"; $("style").eq(0).text(style); $.each(Array(num), function(i,n){ angle[i] = g * i; var obj = $("<li>").css({"transform":"rotateX("+ angle[i] +"deg)"}).append(function(){ var noteArr = musicBox.notes(); var arr = Array(musicBox.length); $.each(arr,function(j){ arr[j] = $("<i>"); if(j == noteArr[i]-1) arr[j].addClass("note") }); return arr; }); if(i == 0) obj.addClass("current"); obj.appendTo(box); }); return box; })(musicBox); //转动器 rotary 参数: rotateAxis "x,y,z"(String), sleep 每次间隔时间(Number) $.fn.rotary = function(rotateAxis, sleep){ var ra = (rotateAxis ? rotateAxis : "x").toUpperCase(); var obj = this; var g = 360 / $(obj).length; var j = 0; var flag = true; var interval = 0; clearTimeout(interval); var rotary = function(){ if(j>= $(obj).length) j = 0; flag = !flag; if(flag){ $(obj).find(".note").removeAttr("style"); return; } $(obj).each(function(i){ if(i == j){ $(".current").removeAttr("class"); $(this).addClass("current"); var n = $(this).find(".note").css({"box-shadow":"0 0 1px 2px #ff0, 0 0 1px 3px red"}).index() + 1; musicBox.play(n); } var angle = g * i - g * j; var transform = this.style.transform; var reg = new RegExp("(rotate" + ra + "\\()[0-9-.]+(deg\\))"); if(reg.test(transform)){ transform = transform.replace(reg, "$1" + angle + "$2"); } $(this).css("transform", transform); }) j++; } interval = setInterval(rotary, sleep/2) return this; } //musicBox.note("10203") 设置简谱 1哆 2来 3咪...7嘻 8哆 0空 (C大调) var s = boxObj.find("li").rotary("x", 300); }) </script> </head> <body>3D 控制:单独按下鼠标一个键拖动 上下左右 控制 x,y 轴,鼠标左右键同时按下拖动 控制 z 轴</body> </html>
本站所有特效都是站长亲自测试后发布的,如果运行代码无效果,请复制到您的本机运行
运行代码
复制代码
另存代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
转载请注明(B5教程网)原文链接::
https://b5.mxunkeji.com/content-72-221-1.html
相关热词搜索:
3D旋转
jquery
上一篇:
N×N乘法表
下一篇:
仿qq浏览器默认页面的一个小效果
最新推荐
[
网络推广
]
24h无人值守共享自助洗车解
[
网络推广
]
微信小程商家wifi码是什么?
[
网络推广
]
企业光伏数据对接碳达峰系统
[
互联网资讯
]
CentOS官方已计划停止维护Ce
[
PHP教程
]
PHP 主力开发因生活压力不
[
网络营销
]
抖音自动关注、自动点赞、自
[
网络推广
]
阿里云优惠券|阿里云代金券|
[
网络推广
]
阿里云 ECS实例升级、续费
[
互联网资讯
]
我名下有几张移动电话卡?有
[
互联网资讯
]
互联网平台相互屏蔽网址链接
本周排行
[
网站常用
]
Js模仿水波滑动效果图片轮显代码
[
网站常用
]
离开(关闭)网页前弹出提示
[
网站常用
]
英文网站使用的一款点击搜索出现搜索框特效源码
[
网站常用
]
N×N乘法表
[
网站常用
]
js模拟体育彩票选号器实现一组数字随机显示特效
[
网站常用
]
html5 canvas来实现文字粒子化
[
网站常用
]
css3立体效果404页面
[
网站常用
]
html5 绘制复杂图形
[
网站常用
]
图片无缝连续滚动JS代码
[
网站常用
]
JavaScript计算器
关于我们
关于我们
赞助我们
加入我们
版权声明
联系我们
联系我们
QQ技术群
合作方式
广告服务
业务合作
常见问题
意见反馈
网站地图
在线投稿
积分获取
在线充值
本站不承担任何版权问题,如果我们侵犯了您的利益,请来信
告知(634381967@qq.com),我们会在第一时间处理!
© 苏ICP备20040182号
B5教程网 版权所有