基于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 相关文章推荐
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
jquery果冻抖动效果实现方法
Jan 15 Javascript
JavaScript改变CSS样式的方法汇总
May 07 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
详解Node中导入模块require和import的区别
Aug 11 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
Dec 14 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
小程序实现五星点评效果
Nov 03 Javascript
vue2.0项目集成Cesium的实现方法
Jul 30 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
Jquery 插件开发笔记整理
2011/01/17 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
js脚本实现数据去重
2014/11/27 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
js实现日历的简单算法
2017/01/24 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
Python实现的远程登录windows系统功能示例
2018/06/21 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
关于python字符串方法分类详解
2019/08/20 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python设置环境变量的作用整理
2020/02/17 Python
售后专员岗位职责
2013/12/08 职场文书
40岁生日感言
2014/02/15 职场文书
大学军训感言300字
2014/03/09 职场文书
网络管理专业求职信
2014/03/15 职场文书
环保口号大全
2014/06/12 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
会计主管竞聘书
2015/09/15 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python