欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實(shí)現(xiàn)適合于后臺(tái)使用的動(dòng)畫(huà)折疊菜單效果

 更新時(shí)間:2015年09月21日 11:05:21   作者:企鵝  
這篇文章主要介紹了JS實(shí)現(xiàn)適合于后臺(tái)使用的動(dòng)畫(huà)折疊菜單效果,實(shí)例展示了兩種折疊菜單顯示效果,涉及JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)遍歷及改變頁(yè)面元素樣式的實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了JS實(shí)現(xiàn)適合于后臺(tái)使用的動(dòng)畫(huà)折疊菜單效果。分享給大家供大家參考。具體如下:

這是一款適合于后臺(tái)使用的動(dòng)畫(huà)折疊菜單,代碼超簡(jiǎn),無(wú)jQuery,展開(kāi)與折疊效果平滑。本演示中有兩組菜單,向大家展示如何在一個(gè)網(wǎng)頁(yè)中布局兩個(gè)菜單,整體效果以及兼容性還算可以,希望在實(shí)際應(yīng)用中不會(huì)出現(xiàn)什么問(wèn)題。

運(yùn)行效果截圖如下:

在線演示地址如下:

http://demo.jb51.net/js/2015/js-ht-control-animate-zd-menu-codes/

具體代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>適合于后臺(tái)使用的動(dòng)畫(huà)折疊菜單</title>
<script type="text/javascript">
 function FOLDMenu(id,onlyone){
  if(!document.getElementById || !document.getElementsByTagName){return false;}
  this.menu=document.getElementById(id);
  this.submenu=this.menu.getElementsByTagName("ul");
  this.speed=3;
  this.time=10;
  this.onlyone=onlyone==true?onlyone:false;
  this.links = this.menu.getElementsByTagName("a");
 }
 FOLDMenu.prototype.init=function(){
  var mainInstance = this;
  for(var i=0;i<this.submenu.length;i++){
   this.submenu[i].getElementsByTagName("span")[0].onclick=function(){
    mainInstance.toogleMenu(this.parentNode);
   };
  }
  for(var i=0;i<this.links.length;i++){
   this.links[i].onclick=function(){
    this.className = "current";
    mainInstance.removeCurrent(this);
   }
  }
 }
 FOLDMenu.prototype.removeCurrent = function(link){
   for (var i = 0; i < this.links.length; i++){
    if (this.links[i] != link){
     this.links[i].className = " "; 
    }
   }
 }
 FOLDMenu.prototype.toogleMenu=function(submenu){
  if(submenu.className=="open"){
   this.closeMenu(submenu);
  }else{
   this.openMenu(submenu);
  }
 }
 FOLDMenu.prototype.openMenu=function(submenu){
  var fullHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
  var links = submenu.getElementsByTagName("a");
  for (var i = 0; i < links.length; i++){
   fullHeight += links[i].offsetHeight;
  }
   var moveBy = Math.round(this.speed * links.length); 
   var mainInstance = this; 
    var intId = setInterval(function() { 
     var curHeight = submenu.offsetHeight; 
     var newHeight = curHeight + moveBy; 
     if (newHeight <fullHeight){
      submenu.style.height = newHeight + "px";
     }else {
      clearInterval(intId);
      submenu.style.height = ""; 
      submenu.className = "open";
     } 
    }, this.time); 
    this.collapseOthers(submenu);
 }
 FOLDMenu.prototype.closeMenu=function(submenu){
   var minHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
   var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
   var mainInstance = this;
    var intId = setInterval(function() {
     var curHeight = submenu.offsetHeight;
     var newHeight = curHeight - moveBy;
     if (newHeight > minHeight){
      submenu.style.height = newHeight + "px";
     }else {
      clearInterval(intId);
      submenu.style.height = ""; 
      submenu.className = "";
     } 
    }, this.time); 
 }
 FOLDMenu.prototype.collapseOthers = function(submenu){
  if(this.onlyone){
   for (var i = 0; i < this.submenu.length; i++){
    if (this.submenu[i] != submenu){
     this.closeMenu(this.submenu[i]); 
    }
   }
  }
 }
</script>
<style type="text/css">
*{margin:0;padding:0;}
.foldmenu{border:1px solid #000;width:150px;margin:50px;}
.foldmenu ul{list-style-type:none;height:25px;line-height:25px;overflow:hidden;cursor:pointer;}
.foldmenu ul.open{height:auto;}
.foldmenu ul span{display:block;padding-left:5px}
.foldmenu ul li{border-bottom:1px solid #DDDDDD;}
.foldmenu li a{background-color:#EEEEEE;color:#006666;display:block;padding:5px 10px;text-decoration:none;text-align:center;}
.foldmenu li a:hover{background-color:#006666;color:#ffffff;}
.foldmenu li a.current{background-color:#006666;color:#ffffff;}
</style>
</head>
<body>
<div id="foldmenu" class="foldmenu" style="float:left;">
 <ul class="open">
  <span>編程天地</span>
 <li><a href="#">電子書(shū)籍</a></li>
 <li><a href="#">源碼樂(lè)園</a></li>
 </ul>
 <ul>
  <span>中國(guó)門(mén)戶(hù)</span>
 <li><a href="#">百度搜索</a></li>
 <li><a href="#">新浪新聞</a></li>
  <li><a href="#">騰訊QQ</a></li>
 </ul>
 <ul>
  <span>音樂(lè)網(wǎng)站</span>
 <li><a href="#">百度音樂(lè)</a></li>
 <li><a href="#">QQ163</a></li>
 </ul>
</div>
<div id="foldmenu2" class="foldmenu" style="float:right;">
 <ul class="open">
  <span>世界大學(xué)</span>
 <li><a href="#">劍橋</a></li>
 <li><a href="#">牛津</a></li>
  <li><a href="#">哈佛</a></li>
 <li><a href="#">麻省理工</a></li>
 </ul>
 <ul>
  <span>中國(guó)大學(xué)</span>
 <li><a href="#">北大</a></li>
 <li><a href="#">清華</a></li>
  <li><a href="#">港大</a></li>
 </ul>
 <ul>
  <span>世界好車(chē)</span>
 <li><a href="#">寶馬</a></li>
 <li><a href="#">奔馳</a></li>
 <li><a href="#">奧迪</a></li>
 </ul>
 <ul>
  <span>開(kāi)源論壇</span>
 <li><a href="#">PhpWind</a></li>
 <li><a href="#">Discuz!</a></li>
 </ul>
</div>
<script type="text/javascript">
window.onload = function() {
 myMenu = new FOLDMenu("foldmenu",true);
 myMenu.init();
 myMenu2 = new FOLDMenu("foldmenu2");
 myMenu2.init();
};
</script>
</body>
</html>

希望本文所述對(duì)大家的JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 讓瀏覽器非阻塞加載javascript的幾種方法小結(jié)

    讓瀏覽器非阻塞加載javascript的幾種方法小結(jié)

    通常大多數(shù)瀏覽器是并行下載資源的,但由于外部腳本的特殊性例如通過(guò)腳本改變文檔的DOM結(jié)構(gòu)、腳本之間的存在依賴(lài)關(guān)系、使用document.write 向頁(yè)面輸出HTML等。
    2011-04-04
  • JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法

    JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法,涉及javascript操作html元素及css樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • JavaScript正則表達(dá)式校驗(yàn)與遞歸函數(shù)實(shí)際應(yīng)用實(shí)例解析

    JavaScript正則表達(dá)式校驗(yàn)與遞歸函數(shù)實(shí)際應(yīng)用實(shí)例解析

    這篇文章主要介紹了JavaScript正則表達(dá)式校驗(yàn)與遞歸函數(shù)實(shí)際應(yīng)用,需要的朋友可以參考下
    2017-08-08
  • js實(shí)現(xiàn)手機(jī)發(fā)送驗(yàn)證碼功能

    js實(shí)現(xiàn)手機(jī)發(fā)送驗(yàn)證碼功能

    本文主要介紹了js實(shí)現(xiàn)手機(jī)發(fā)送驗(yàn)證碼功能的示例。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • JavaScript如何動(dòng)態(tài)創(chuàng)建table表格

    JavaScript如何動(dòng)態(tài)創(chuàng)建table表格

    這篇文章主要介紹了JavaScript如何動(dòng)態(tài)創(chuàng)建table表格,一些時(shí)候需要?jiǎng)討B(tài)的創(chuàng)建和刪除表格,接下來(lái)的文章中將為大家介紹下javascript是如何做到的,感興趣的朋友不要錯(cuò)過(guò)
    2015-11-11
  • js禁止頁(yè)面刷新與后退的方法

    js禁止頁(yè)面刷新與后退的方法

    這篇文章主要介紹了js禁止頁(yè)面刷新與后退的方法,實(shí)例分析了javascript屏蔽F5鍵、右鍵菜單、F1鍵等實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 微信小程序map地圖使用方法詳解

    微信小程序map地圖使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序map地圖使用的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 基于JavaScript實(shí)現(xiàn)新年賀卡特效

    基于JavaScript實(shí)現(xiàn)新年賀卡特效

    本文介紹了一款超級(jí)炫酷的2022新年快樂(lè)html網(wǎng)頁(yè)特效,霓虹的城市夜景和絢爛的煙花很是特別,該html頁(yè)面還有交互效果,點(diǎn)擊鼠標(biāo)就會(huì)呈現(xiàn)煙花綻放的特效。需要的可以參考一下
    2022-01-01
  • javascript異步處理工作機(jī)制詳解

    javascript異步處理工作機(jī)制詳解

    籠統(tǒng)地說(shuō),異步在javascript就是延時(shí)執(zhí)行。嚴(yán)格來(lái)說(shuō),javascript中的異步編程能力都是由BOM與DOM提供的,如setTimeout,XMLHttpRequest,還有DOM的事件機(jī)制,等等很多。這些東西都有一個(gè)共同的特點(diǎn),就是擁有一個(gè)回調(diào)函數(shù),實(shí)現(xiàn)控制反轉(zhuǎn)。
    2015-04-04
  • 判斷js對(duì)象是否擁有某一個(gè)屬性的js代碼

    判斷js對(duì)象是否擁有某一個(gè)屬性的js代碼

    js對(duì)象是否擁有某一個(gè)屬性的判斷方法有很多,下面為大家介紹個(gè)比較實(shí)用的技巧,希望對(duì)大家有所幫助
    2013-08-08

最新評(píng)論