jQuery實(shí)現(xiàn)級聯(lián)菜單效果(仿淘寶首頁菜單動畫)
更新時(shí)間:2014年04月10日 16:35:10 作者:
今天我們就帶大家體會一下級聯(lián)菜單的顯示,只是實(shí)現(xiàn)了簡單的效果,不過大都原理是一樣的
相信初學(xué)HTM+DIV+CSSl的同學(xué)們肯定也想做出淘寶網(wǎng)首頁的菜單動畫吧。今天我們就帶大家體會一下級聯(lián)菜單的顯示。小編我只是實(shí)現(xiàn)了簡單地效果,不過總體來說原理是一樣的哦,那么先讓大家看看效果圖吧。
那么要實(shí)現(xiàn)這個(gè)效果我們當(dāng)然要使用到的是jQuery,那么我就開始講解怎么做的了,先上html和css的代碼
<!DOCTYPE html>
<html>
<head>
<title>menu.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../css/menu.css">
<script type="text/javascript" src="../js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="../js/menu.js"></script>
</head>
<body>
<ul>
<li class="menu">
<div class="title">
<span>電腦數(shù)碼類產(chǎn)品</span>
</div>
<ul class="content">
<li class="optn"><a href="#">筆記本</a>
<ul class="tip">
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
</ul>
</li>
<li class="optn"><a href="#">移動硬盤</a>
<ul class="tip">
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
</ul>
</li>
<li class="optn"><a href="#">電腦軟件</a>
<ul class="tip">
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
</ul>
</li>
<li class="optn"><a href="#">數(shù)碼產(chǎn)品</a>
<ul class="tip">
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
menu.css
@CHARSET "UTF-8";
*{
margin: 0px;
padding: 0px;
}
ul,li{
list-style-type: none;
}
.menu{
width: 190px;
border: 1px red solid;
background-color: #fffdd2;
}
.optn{
width: 190px;
line-height: 28px;
border-top: 1px red dashed;
}
.content{
padding-top:10px;
clear: left;
}
a{
text-decoration: none;
color: #666;
padding: 10px;
}
.optnFocus{
background-color: #fff;
font-weight: bold;
}
div{
padding: 10px;
}
.tip{
width: 190px;
border: 2px red solid;
position: absolute;
background-color: #fff;
display: none;
}
.tip li{
line-height: 23px;
}
接下來就是主要的jquery代碼:menu.js
$(function(){
var curY;//獲取所選想的TOP
var curH;//獲取所選的Height
var curW;//獲取所選的width
var objL;//獲取當(dāng)前對象
//自定義函數(shù)用于獲取當(dāng)前位置
function setInitValue(obj){
curY=obj.offset().top;
curH=obj.height();
curW=obj.width();
}
//設(shè)置當(dāng)前所選項(xiàng)的鼠標(biāo)滑動事件
$(".optn").mouseover(function(){
objL=$(this);//獲取當(dāng)前對象
setInitValue(objL);
var allY=curY-curH +"px";
objL.addClass("optnFocus");
//獲取氣元素下的下一個(gè)ul
$(".tip",this).show().css({"top":allY,"left":curW});;
});
$(".optn").mouseout(function(){
$(this).removeClass("optnFocus");
$(".tip",this).hide();
});
//為了防止移到子菜單時(shí)子菜單不見,我們也要為子菜單設(shè)置鼠標(biāo)事件
$(".tip").mouseover(function(){
$(this).show();
objL=$(this).prev("li");
setInitValue(objL);
objL.addClass("optnFocus");
});
$(".tip").mouseout(function(){
$(this).hide();
$(this).prev("li").removeClass("optnFocus");
});
});
注意要點(diǎn):
1.由于我們用的是較高版本的jquery文件庫,所以有些方法是不支持的,例如獲取下一個(gè)元素的第一個(gè)子元素next(erp),在10.1中是不支持的,所以我換了一種方法$(chiled,select),表示在select的范圍進(jìn)行元素的選擇
2.整個(gè)效果的實(shí)現(xiàn)我們還要為子選項(xiàng)框綁定鼠標(biāo)事件,目的就是為了不在我們移動到子選項(xiàng)卡中,突然消失。
要實(shí)現(xiàn)好看的效果就需要加一些圖片和樣式,不過原理是一樣的哦
那么要實(shí)現(xiàn)這個(gè)效果我們當(dāng)然要使用到的是jQuery,那么我就開始講解怎么做的了,先上html和css的代碼
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html>
<head>
<title>menu.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../css/menu.css">
<script type="text/javascript" src="../js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="../js/menu.js"></script>
</head>
<body>
<ul>
<li class="menu">
<div class="title">
<span>電腦數(shù)碼類產(chǎn)品</span>
</div>
<ul class="content">
<li class="optn"><a href="#">筆記本</a>
<ul class="tip">
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
<li><a href="#">筆記本1</a></li>
</ul>
</li>
<li class="optn"><a href="#">移動硬盤</a>
<ul class="tip">
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
<li><a href="#">移動硬盤1</a></li>
</ul>
</li>
<li class="optn"><a href="#">電腦軟件</a>
<ul class="tip">
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
<li><a href="#">電腦軟件1</a></li>
</ul>
</li>
<li class="optn"><a href="#">數(shù)碼產(chǎn)品</a>
<ul class="tip">
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
<li><a href="#">數(shù)碼產(chǎn)品1</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
menu.css
復(fù)制代碼 代碼如下:
@CHARSET "UTF-8";
*{
margin: 0px;
padding: 0px;
}
ul,li{
list-style-type: none;
}
.menu{
width: 190px;
border: 1px red solid;
background-color: #fffdd2;
}
.optn{
width: 190px;
line-height: 28px;
border-top: 1px red dashed;
}
.content{
padding-top:10px;
clear: left;
}
a{
text-decoration: none;
color: #666;
padding: 10px;
}
.optnFocus{
background-color: #fff;
font-weight: bold;
}
div{
padding: 10px;
}
.tip{
width: 190px;
border: 2px red solid;
position: absolute;
background-color: #fff;
display: none;
}
.tip li{
line-height: 23px;
}
接下來就是主要的jquery代碼:menu.js
復(fù)制代碼 代碼如下:
$(function(){
var curY;//獲取所選想的TOP
var curH;//獲取所選的Height
var curW;//獲取所選的width
var objL;//獲取當(dāng)前對象
//自定義函數(shù)用于獲取當(dāng)前位置
function setInitValue(obj){
curY=obj.offset().top;
curH=obj.height();
curW=obj.width();
}
//設(shè)置當(dāng)前所選項(xiàng)的鼠標(biāo)滑動事件
$(".optn").mouseover(function(){
objL=$(this);//獲取當(dāng)前對象
setInitValue(objL);
var allY=curY-curH +"px";
objL.addClass("optnFocus");
//獲取氣元素下的下一個(gè)ul
$(".tip",this).show().css({"top":allY,"left":curW});;
});
$(".optn").mouseout(function(){
$(this).removeClass("optnFocus");
$(".tip",this).hide();
});
//為了防止移到子菜單時(shí)子菜單不見,我們也要為子菜單設(shè)置鼠標(biāo)事件
$(".tip").mouseover(function(){
$(this).show();
objL=$(this).prev("li");
setInitValue(objL);
objL.addClass("optnFocus");
});
$(".tip").mouseout(function(){
$(this).hide();
$(this).prev("li").removeClass("optnFocus");
});
});
注意要點(diǎn):
1.由于我們用的是較高版本的jquery文件庫,所以有些方法是不支持的,例如獲取下一個(gè)元素的第一個(gè)子元素next(erp),在10.1中是不支持的,所以我換了一種方法$(chiled,select),表示在select的范圍進(jìn)行元素的選擇
2.整個(gè)效果的實(shí)現(xiàn)我們還要為子選項(xiàng)框綁定鼠標(biāo)事件,目的就是為了不在我們移動到子選項(xiàng)卡中,突然消失。
要實(shí)現(xiàn)好看的效果就需要加一些圖片和樣式,不過原理是一樣的哦
您可能感興趣的文章:
- jQuery實(shí)現(xiàn)的鼠標(biāo)響應(yīng)緩沖動畫效果示例
- jQuery實(shí)現(xiàn)的下雪動畫效果示例【附源碼下載】
- jquery animate動畫持續(xù)運(yùn)動的實(shí)例
- jquery animate 動畫效果使用說明
- 分享8款優(yōu)秀的 jQuery 加載動畫和進(jìn)度條插件
- jQuery Animation實(shí)現(xiàn)CSS3動畫示例介紹
- jQuery實(shí)現(xiàn)加入購物車飛入動畫效果
- 用js實(shí)現(xiàn)的模擬jquery的animate自定義動畫(2.5K)
- jQuery插件Slider Revolution實(shí)現(xiàn)響應(yīng)動畫滑動圖片切換效果
- jquery多行滾動/向左或向上滾動/響應(yīng)鼠標(biāo)實(shí)現(xiàn)思路及代碼
- jquery實(shí)現(xiàn)的帶縮略圖的焦點(diǎn)圖片切換(自動播放/響應(yīng)鼠標(biāo)動作)
- jQuery實(shí)現(xiàn)鼠標(biāo)響應(yīng)式淘寶動畫效果示例
相關(guān)文章
瀏覽器窗口大小變化時(shí)使用resize事件對框架不起作用的解決方法
有時(shí)候我們需要用resize事件調(diào)整瀏覽器窗口大小,但對框架卻不起作用,這里介紹下實(shí)現(xiàn)方法,需要的朋友可以參考下2014-05-05
jQuery插件echarts實(shí)現(xiàn)的多柱子柱狀圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實(shí)現(xiàn)的多柱子柱狀圖效果,結(jié)合完整實(shí)例形式分析了echarts繪制多柱子柱狀圖效果的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03
如何使用jQUery獲取選中radio對應(yīng)的值(一句代碼)
一些基本的語法在使用中老忘掉,下列使用jQUery獲取選中radio對應(yīng)的值,剛剛想起來,感興趣的朋友可以了解下2013-06-06
jQuery plugin animsition使用小結(jié)
本文通過實(shí)例代碼給大家分享了jQuery plugin animsition用法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09
通過jQuery源碼學(xué)習(xí)javascript(二)
昨天寫了篇通過jQuery源碼學(xué)習(xí)javascript(一),里面有一個(gè)定義對象C的方法,我早期也沒有太注意這個(gè)方面的技術(shù)細(xì)節(jié)。后來我查了一下資料,發(fā)現(xiàn)里面有很多巧的地方。今天與大家分享2012-12-12
jQuery實(shí)現(xiàn)圖片預(yù)加載效果
這篇文章分享一款基于jQuery圖片預(yù)加載ydxLazyLoad.js代碼。這是一款基于ydxLazyLoad.js插件實(shí)現(xiàn)的圖片延遲加載特效,感興趣的小伙伴們可以參考一下2015-11-11
EasyUI的DataGrid每行數(shù)據(jù)添加操作按鈕的實(shí)現(xiàn)代碼
今天做項(xiàng)目的時(shí)候,想在easyui的datagrid每一列數(shù)據(jù)后邊都加上一個(gè)操作按鈕,怎么實(shí)現(xiàn)此功能呢?下面小編給大家?guī)砹薊asyUI的DataGrid每行數(shù)據(jù)添加操作按鈕的實(shí)現(xiàn)代碼,需要的朋友參考下吧2017-08-08
編寫高效jQuery代碼的4個(gè)原則和5個(gè)技巧
有了JQuery對JS的整合和封裝,它讓頁面操作更加的隨心所欲,所以只有遵循良好的規(guī)范才會讓代碼更高效,更健壯。以下是我對如何高效操作JQuery的一些拙見,望指正!2014-04-04
基于jQuery和hwSlider實(shí)現(xiàn)內(nèi)容左右滑動切換效果附源碼下載(一)
本文結(jié)合實(shí)例給大家介紹如何實(shí)現(xiàn)內(nèi)容滑動切換的效果,包括左右箭頭切換,無限無縫滾動,圓點(diǎn)按鈕切換,動畫效果,自動切換效果,效果非常不錯(cuò),感興趣的朋友前來參考實(shí)現(xiàn)代碼2016-06-06

