亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS基于構造函數實現的菜單滑動顯隱效果【測試可用】

2019-11-20 09:38:56
字體:
來源:轉載
供稿:網友

本文實例講述了JS基于構造函數實現的菜單滑動顯隱效果。分享給大家供大家參考,具體如下:

運行效果截圖如下:

具體代碼如下:

<!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" /><meta http-equiv="Content-Type" content="; charset=utf-8" /><title>JS樹型菜單</title><script language="javascript">function SDMenu(id) { if (!document.getElementById || !document.getElementsByTagName) return false; this.menu = document.getElementById(id); this.submenus = this.menu.getElementsByTagName("div"); this.remember = true; this.speed = 1; this.markCurrent = true; this.oneSmOnly = false;}SDMenu.prototype.init = function() { var mainInstance = this; for (var i = 0; i < this.submenus.length; i++) this.submenus[i].getElementsByTagName("span")[0].onclick = function() {  mainInstance.toggleMenu(this.parentNode); }; /*if (this.markCurrent) { var links = this.menu.getElementsByTagName("a"); for (var i = 0; i < links.length; i++)  if (links[i].href == document.location.href) {  links[i].className = "current";  break;  } }*/ if (this.remember) { var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)"); var match = regex.exec(document.cookie); if (match) {  var states = match[1].split("");  for (var i = 0; i < states.length; i++)  this.submenus[i].className = (states[i] == 0 ? "collapsed" : ""); } }};SDMenu.prototype.toggleMenu = function(submenu) { if (submenu.className == "collapsed") this.expandMenu(submenu); else this.collapseMenu(submenu);};SDMenu.prototype.expandMenu = 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 = "";  mainInstance.memorize(); } }, 10); //this.collapseOthers(submenu); };SDMenu.prototype.collapseMenu = 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 = "collapsed";  mainInstance.memorize(); } }, 10);};/*SDMenu.prototype.collapseOthers = function(submenu) {  if (this.oneSmOnly) { for (var i = 0; i < this.submenus.length; i++)  if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed")  this.collapseMenu(this.submenus[i]); }};*/SDMenu.prototype.memorize = function() { if (this.remember) { var states = new Array(); for (var i = 0; i < this.submenus.length; i++)  states.push(this.submenus[i].className == "collapsed" ? 0 : 1); var d = new Date(); d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/"; }};var myMenu;window.onload = function() { myMenu = new SDMenu("my_menu"); myMenu.init();};</script><style type="text/css"> html,body{ height:100%; margin:0; font-size:12px; } span{ background:#F0DFBE; border:1px solid #ffffff; border-left:6px solid #F2A31B; width:228px; height:23px; display:block; line-height:23px; padding-left:20px; } a{ padding:3px 0 3px 40px; display:block; color:#636363; } #my_menu{ width:255px; background:#F7F2E4; height:100%; } div.sdmenu div.collapsed { height: 25px;} div.sdmenu div{ overflow: hidden; }</style></head><body> <div style="float:left" id="my_menu" class="sdmenu"> <div>  <span>菜單一</span>  <a href="#">>  菜單一子內容</a>  <a href="#">>  菜單一子內容</a>  <a href="#">>  菜單一子內容</a>  <a href="#">>  菜單一子內容</a>  <a href="#">>  菜單一子內容</a> </div> <div>  <span>菜單二</span>  <a href="#">>  菜單二子內容</a>  <a href="#">>  菜單二子內容</a>  <a href="#">>  菜單二子內容</a> </div> <div>  <span>菜單三</span>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a> </div> <div>  <span>菜單三</span>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a> </div> <div>  <span>菜單三</span>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a> </div> <div>  <span>菜單x</span>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a>  <a href="#">>  菜單三子內容</a> </div> </div></body></html>

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久久久久国产| 欧美午夜精品久久久久久人妖| 人人澡人人澡人人看欧美| 亚洲最新中文字幕| 国模叶桐国产精品一区| 啪一啪鲁一鲁2019在线视频| 欧美在线一级va免费观看| 欧美黑人一级爽快片淫片高清| 精品一区二区亚洲| 国产999精品久久久| 姬川优奈aav一区二区| 91精品美女在线| 91久久精品日日躁夜夜躁国产| 中文字幕久热精品视频在线| 狠狠操狠狠色综合网| 亚洲最大福利网| 欧美黑人国产人伦爽爽爽| 精品自拍视频在线观看| 97精品国产97久久久久久春色| 欧美性黄网官网| 亚洲国产欧美一区二区三区同亚洲| 国内精品伊人久久| 亚洲欧美日韩精品久久奇米色影视| 91美女片黄在线观| 精品国产一区二区三区久久久狼| 亚洲精品视频久久| 色综合久久88| 亚洲国产欧美在线成人app| 国产乱人伦真实精品视频| 国产精品日韩欧美| 欧美日韩第一视频| 亚洲综合成人婷婷小说| 亚洲风情亚aⅴ在线发布| 久久伊人精品天天| 亚洲天堂日韩电影| 亚洲精品v欧美精品v日韩精品| 欧美日韩国内自拍| 久久久爽爽爽美女图片| 国产日韩欧美成人| 欧美最猛性xxxxx(亚洲精品)| 欧美激情视频在线观看| 丝袜情趣国产精品| 中文国产成人精品久久一| 韩国日本不卡在线| 久久亚洲一区二区三区四区五区高| 亚洲成人激情视频| 91av在线看| 欧美激情伊人电影| 亚洲天堂av在线免费| 亚洲欧美另类国产| 亚洲人成网站777色婷婷| 精品福利视频导航| 97国产精品久久| 国产欧美日韩中文字幕在线| 日韩中文字幕在线视频播放| 欧美夫妻性生活视频| 欧美日在线观看| 欧美最猛性xxxx| 久久国产精品电影| 亚洲男女自偷自拍图片另类| 美日韩在线视频| 成人激情av在线| 久久久久久69| 欧美日韩国产va另类| 国产伦精品一区二区三区精品视频| 欧洲亚洲女同hd| 亚洲天堂av在线免费| 在线日韩日本国产亚洲| 国产成人精品国内自产拍免费看| 中文字幕精品网| 国产在线观看一区二区三区| 国产福利精品av综合导导航| 欧美一区二区视频97| 自拍偷拍亚洲精品| 久久影院中文字幕| 欧美二区在线播放| 欧美大荫蒂xxx| 亚洲精品日韩久久久| 欧美性jizz18性欧美| 国产精品久久久久一区二区| 日本韩国欧美精品大片卡二| 国产精品视频xxxx| 亚洲成成品网站| 97在线观看视频国产| 国产亚洲精品久久久久动| 亚州精品天堂中文字幕| 亚洲剧情一区二区| 成人在线国产精品| 亚洲视频axxx| 久久精品最新地址| 亚洲国产精品99久久| 在线观看欧美日韩| 亚洲综合第一页| 欧美精品在线视频观看| 性欧美xxxx交| 国产69久久精品成人看| 国产乱肥老妇国产一区二| 日韩av在线天堂网| 在线播放国产一区二区三区| 欧美一区二区大胆人体摄影专业网站| 欧美日韩国产一区二区三区| 国产va免费精品高清在线观看| 久久久免费电影| 亚洲第一区中文字幕| 中文字幕视频在线免费欧美日韩综合在线看| 久久久国产视频91| 国产精品嫩草影院久久久| 国产国语videosex另类| 亚洲欧美国产高清va在线播| 欧美综合第一页| 95av在线视频| 久久精品福利视频| 亚洲最新中文字幕| 亚洲一区二区久久久久久| 欧美日韩亚洲高清| 主播福利视频一区| 日本电影亚洲天堂| 欧美在线视频网站| 国产精品精品一区二区三区午夜版| 成人欧美一区二区三区在线湿哒哒| 亚洲精品成人免费| 亚洲电影成人av99爱色| 国产精品久久久久久av福利软件| 国产精品亚洲欧美导航| 中文字幕国内精品| 亚洲欧美中文在线视频| 亚洲a区在线视频| 亚洲成人激情在线| 国产精品免费视频久久久| 91精品久久久久久久久久| 日韩欧美亚洲一二三区| 国产大片精品免费永久看nba| 欧美日韩不卡合集视频| 国产精品视频导航| 国产精品狠色婷| 91精品视频免费看| 国产盗摄xxxx视频xxx69| 国产亚洲精品美女久久久久| 大荫蒂欧美视频另类xxxx| 国模精品视频一区二区三区| 欧美人与性动交a欧美精品| 亚洲欧美精品一区二区| 琪琪亚洲精品午夜在线| 国产99久久精品一区二区永久免费| 九九久久久久久久久激情| 久久亚洲精品网站| 欧美午夜片在线免费观看| 4438全国亚洲精品在线观看视频| 国产精品激情自拍| 日本韩国欧美精品大片卡二| 日韩一区二区欧美| 欧美日韩高清在线观看| 亚洲第一区在线观看| 国产精品手机播放| 国产精品视频一区二区高潮| 亚洲色图校园春色| 国模极品一区二区三区| 亚洲色图美腿丝袜| 免费99精品国产自在在线| 国产一区二区在线免费视频| 亚洲视频综合网| 亚洲国产精品小视频| 亚洲精品国产福利| 欧美猛男性生活免费|