基于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 相关文章推荐
取得一定长度的内容,处理中文
Dec 20 Javascript
Js 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
几个javascript操作word的参考代码
Oct 26 Javascript
jquery右下角弹出提示框示例代码
Oct 08 Javascript
悬浮数字的实现案例
Feb 19 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
原生JS实现首页进度加载动画
Sep 14 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
传智播客学习之java 反射
2009/11/22 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
儿童学习python的一些小技巧
2018/05/27 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
表彰会主持词
2014/03/26 职场文书
计算机实训报告总结
2014/11/05 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
在js中修改html body的样式
2021/11/11 Javascript
Java线程的6种状态与生命周期
2022/05/11 Java/Android