基于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对象之内置对象Math使用方法
Apr 16 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
Jun 04 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
Oct 12 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
JavaScript实现select添加option
Jul 03 Javascript
JQuery日历插件My97DatePicker日期范围限制
Jan 20 Javascript
浅析AngularJS中的指令
Mar 20 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
Feb 17 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
Vue父子之间值传递的实例教程
Jul 02 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编程最快明白》第三讲:php数组
2010/11/01 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
php include和require的区别深入解析
2013/06/17 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
js相册效果代码(点击创建即可)
2013/04/16 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
详解Puppeteer 入门教程
2018/05/09 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python中元类用法实例
2014/10/10 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python实现人脸签到系统
2020/04/13 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
python如何编写win程序
2020/06/08 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
物业管理大学生个人的自我评价
2013/10/10 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
调研报告的主要写法
2019/04/18 职场文书