基于JQuery的模拟苹果桌面Dock效果(稳定版)


Posted in Javascript onOctober 15, 2012

已经迫不及待的想要将我的最新成果分享给大家了,其实代码和之前的版本很相似。

首相是HTML页面代码:

<!DOCTYPE html> 
<html lang="zh-cmn-Hans-CN"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>jQuery Dock</title> 
<link type="text/css" rel="stylesheet" href="css/dock.css" /> 
<script type="text/javascript" src="js/jquery-1.8.0.js"></script> 
<script type="text/javascript" src="js/dock.js"></script> 
</head> 
<body id="content"> 
<div id="topBody" align="center"> 
<div id="topMenu"> 
<a href="#"><img alt="Home" src="images/home.png" /></a> 
<a href="#"><img alt="Music" src="images/music.png" /></a> 
<a href="#"><img alt="Calendar" src="images/calendar.png" /></a> 
<a href="#"><img alt="Email" src="images/email.png" /></a> 
<a href="#"><img alt="Portfolio" src="images/portfolio.png" /></a> 
<a href="#"><img alt="Video" src="images/video.png" /></a> 
<a href="#"><img alt="Link" src="images/link.png" /></a> 
<a href="#"><img alt="History" src="images/history.png" /></a> 
<a href="#"><img alt="RSS" src="images/rss.png" /></a> 
</div> 
</div> 
</body> 
</html>

同样加上相应的CSS代码:
#topMenu{ 
height:128px; 
line-height:250px; 
width: 630px; 
background-image:url(../images/dock-bg1.png); 
} 
#topMenu img{ 
width: 50px; 
height:50px; 
border:none; 
}

对应的JS代码如下:
$(function(){ 
$(this).mousemove(function(e){ 
var mouseY = parseInt(e.pageY); 
if(mouseY<136 && mouseY>8){ 
var mouseX = parseInt(e.pageX); 
$("#topMenu img").each(function(){ 
var obj = $(this); 
var objWidth = obj.css("width"); 
//获取图片中心水平坐标 
var objX = parseInt(obj.offset().left) + parseInt(objWidth.substr(0,objWidth.length-2))/2; 
var x = Math.abs(objX-mouseX); 
if(x<75){ 
obj.css("width",(128-((78*x*x)/(75*75)))+"px").css("height",(128-((78*x*x)/(75*75)))+"px"); 
}else{ 
obj.css("width","50px").css("height","50px"); 
} 
}); 
}else{ 
$("#topMenu img").each(function(){ 
$(this).css("width","50px").css("height","50px"); 
}); 
} 
}); 
});

相比于之前的版本最大的改变还是在JS上面,当鼠标在页面上移动时触发mousemove事件,在mousemove方法中首先取得鼠标在页面上的垂直坐标,判断鼠标是否在可操作dock菜单的垂直范围之内,如果鼠标不在这个范围之内,就将所有图标还原到初始状态;相反,如果鼠标在这个范围之内,就继续获取鼠标在页面上的水平坐标,并用mouseX来记录。同时获取图片中心在页面中的水平坐标,用objX来保存相应的值,当mouseX与objX之差的绝对值(用x来记录)小于75时,就进入了当前图片的可操作范围,dock效果就会触发,用y来表示当鼠标移动时某一张图片的width(为了简单本次示例使用的图标width和height相等的),本次示例用了方程 y=128-78*x2/752来表示鼠标的位置与图片尺寸之间的关系,当 x 的大于75时就将对应的图片还原。
在本次示例的过程中发现了一个 ie 的一个小 bug ,当 <a> 标签中间的内容为 <img /> 时如果没有给 img 的 border 的任何CSS样式,则 ie 会给 img 加上蓝色边框,即使给 <a> 标签加上 text-decoration: none; 的CSS样式,img 仍然会被 ie 加上蓝色边框,当给 img 添加 border:none; 之后烦人的蓝色边框就不见了。下图是改进过后版本的演示图,所有代码仅供参考,谢谢阅读。
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Javascript 相关文章推荐
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
详解angular中如何监控dom渲染完毕
Jan 03 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
vue父组件点击触发子组件事件的实例讲解
Feb 08 Javascript
详解Vue中使用Echarts的两种方式
Jul 03 Javascript
Vue中遍历数组的新方法实例详解
Jul 21 Javascript
vue调用语音播放的方法
Sep 27 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 #Javascript
JS自动缩小超出大小的图片
Oct 12 #Javascript
文本框input聚焦失焦样式实现代码
Oct 12 #Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 #Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 #Javascript
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 #Javascript
Jquery index()方法 获取相应元素索引值
Oct 12 #Javascript
You might like
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
PHP处理会话函数大总结
2015/08/05 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Python字符串三种格式化输出
2020/09/17 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
园林资料员岗位职责
2013/12/30 职场文书
优秀公益广告词大全
2014/03/19 职场文书
高中语文课后反思
2014/04/27 职场文书
信仰心得体会
2014/09/05 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
新年晚会开场白
2015/05/29 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript