基于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 相关文章推荐
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 Javascript
详解JavaScript 的变量
Mar 08 Javascript
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
vue 实现tab切换保持数据状态
Jul 21 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
基于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
E路文章系统PHP
2006/12/11 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php生成随机密码的几种方法
2011/01/17 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
javascript知识点收藏
2007/02/22 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
python解析json实例方法
2013/11/19 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python Django基础二之URL路由系统
2019/07/18 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
护理专业自荐信
2013/12/03 职场文书
怎么写自荐书范文
2014/02/12 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
观看信仰心得体会
2014/09/04 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
趣味运动会简讯
2015/07/20 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android
go goth封装第三方认证库示例详解
2022/08/14 Golang