基于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 相关文章推荐
javascript中简单的进制转换代码实例
Oct 26 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
初识Node.js
Sep 03 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
深入掌握 react的 setState的工作机制
Sep 27 Javascript
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 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中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
opencv python图像梯度实例详解
2020/02/04 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
应届毕业生求职信
2013/11/30 职场文书
销售实习自我鉴定
2013/12/07 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
比赛口号大全
2014/06/10 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
个人思想政治总结
2015/03/05 职场文书
丧事主持词
2015/07/02 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
python中tkinter复选框使用操作
2021/11/11 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Github 使用python对copilot做些简单使用测试
2022/04/14 Python