基于jQuery实现火焰灯效果导航菜单


Posted in Javascript onJanuary 04, 2017

效果描述为:当鼠标经过某一导航选项的时候,后面的背景图片(上图“圣诞节”后圆角背景)会弹性缓动到该导航选项,如果没有发生单击动作,鼠标移开后,背景图又回到原来的位置。

您可以狠狠地点击这里:demo效果页面

使用说明:

1、需要链接的文件

需要调用的文件有:jQuery库(1.2以上版本),jQuery缓动插件(jquery.easing.min.js),火焰灯效果插件(jquery.lavalamp.min.js)以及一个ul li列表的样式文件。例如,本demo实例页面链接如下截图:

基于jQuery实现火焰灯效果导航菜单

2、HTML代码的写法

从jQuery代码来看,HTML只支持li列表,无序或有序列表(ol 或 ul)。例如下面的示例:

<ul class="lava_lamp">
    <li class="current"><a href="#zhangxinxu">圣诞节</a></li>
    <li><a href="#zhangxinxu">地震</a></li>
    <li><a href="#zhangxinxu">股市</a></li>
    <li><a href="#zhangxinxu">《十月围城》</a></li>
    <li><a href="#zhangxinxu">无线音乐咪咕汇</a></li>
</ul>

3、相应的CSS写法

CSS的写法与平时使用无序列表写导航条是没有太大差异的,不同在于最内部的a标签需要设置position为relative并给定一个相对较高的层级(z-index),这是显示原理(稍后讨论)决定的。还有就是需要添加一个class为back的li标签的样式,这个样式就是后面移动的背景图片(或背景色或边框等)的样式。例如,上面的HTML的CSS可以如下(大致示意):

/*下边框*/
. lava_lamp{position:relative; width:421px; height:29px; padding:15px; border:1px solid silver;}
. lava_lamp li{float:left;}
. lava_lamp li a{float:left; font-weight:bold; color:#333333; font-size:14px; top:8px; margin:auto 10px; text-decoration:none; position:relative; z-index:3;}
. lava_lamp li a:hover{text-decoration:none; color:#333333;}
. lava_lamp li.back{height:30px; border-bottom:3px solid #34538b; position:absolute; z-index:2;}

4、js部分的代码

js用法很简单。在$(function(){});之内写上$(“选择器”).lavaLamp();其实就可以了。然而一般而言,会设置一些参数。还是上面的例子:

$(". lava_lamp").lavaLamp({
 fx: "backout", //缓动类型
 speed: 700, //缓动时间
 click: function(event, menuItem) {
 return false; //单击触发事件
 }
});

这里有三个参数:fx,speed,click分别表示缓动类型,缓动执行的时间,以及单击菜单后的触发的事件。根据您的需求可以做相应的修改,例如:fx: “bounceout”,speed: 1000 。

5、完成预览

一般而言,预览就可以看到效果了。如果您在IE6下发现背景图片移动不顺畅,试试在js中加入:document.execCommand(“BackgroundImageCache”, false, true);

原理简述:

讲一下jQuery代码都做了什么工作:
jQuery首先做的事情就是在ul列表中又添加了一个class为back的li标签,在CSS中,li.back被设置为为绝对定位(position:absolute;z-index:2;),层级小于导航中a标签(position:relative;z-index:3;)的层级,所有,这里含有背景图片(或背景色或边框)的li.back标签会在文字的下方(a标签下方)显示。

jQuery做的另外一件事情就是控制li.back这个标签层的宽度以及left的位置了,也就是动画效果了。这需要结合easing缓动插件了,如果仅是单纯的移动,easing插件是不需要的,animate函数即可实现。

基于jQuery实现火焰灯效果导航菜单

您可以狠狠地点击这里:源文件打包下载(.zip 24.3k)

参考:http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
将函数的实际参数转换成数组的方法
Jan 25 Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
Aug 18 Javascript
基于JavaScript的操作系统你听说过吗?
Jan 28 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
浅谈webpack-dev-server的配置和使用
May 17 Javascript
js实现星星打分效果
Jul 05 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 #Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 #Javascript
js实现定时进度条完成后切换图片
Jan 04 #Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
Jan 04 #Javascript
深入理解JavaScript中的预解析
Jan 04 #Javascript
jQuery操作json常用方法示例
Jan 04 #Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 #Javascript
You might like
社区(php&amp;&amp;mysql)五
2006/10/09 PHP
PHP安装攻略:常见问题解答(二)
2006/10/09 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python生成九宫格图片
2018/11/19 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
python破解同事的压缩包密码
2020/10/14 Python
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
J2EE中的容器都包括哪些
2013/08/21 面试题
运动会广播稿400字
2014/01/25 职场文书
国庆节演讲稿
2014/05/27 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python