基于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 相关文章推荐
超棒的javascript页面顶部卷动广告效果
Dec 01 Javascript
DWR Ext 加载数据
Mar 22 Javascript
Javascript面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
深入理解javascript变量声明
Nov 20 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
javascript使用canvas实现饼状图效果
Sep 08 Javascript
js 执行上下文和作用域的相关总结
Feb 08 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过滤敏感词的示例
2014/03/31 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
python实现用户答题功能
2018/01/17 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
高三历史教学反思
2014/01/09 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
李敖北大演讲稿
2014/05/24 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
出生医学证明书
2014/09/15 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python