基于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 相关文章推荐
在jQuery1.5中使用deferred对象 着放大镜看Promise
Mar 12 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
jQuery实现冻结表头的方法
Mar 09 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
Mar 21 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
JavaScript实现多球运动效果
Sep 07 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
详解vue-cli3使用
2018/08/14 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
Python简单日志处理类分享
2015/02/14 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
pyqt5中动画的使用详解
2020/04/01 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
大学生新学期计划书
2014/04/28 职场文书
春游踏青活动方案
2014/08/14 职场文书
小学生通知书评语
2014/12/31 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书