基于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 相关文章推荐
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
深入理解javascript中defer的作用
Dec 11 Javascript
js打开windows上的可执行文件示例
May 27 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
vue-devtools的安装步骤
Apr 23 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
PHP之预定义接口详解
2015/07/29 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Python开发的实用计算器完整实例
2017/05/10 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Python正则表达式指南 推荐
2018/10/09 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
自考生毕业自我鉴定
2013/10/10 职场文书
销售辞职报告范文
2014/01/12 职场文书
退休教师追悼词
2015/06/23 职场文书