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

首頁 > CMS > Wordpress > 正文

WordPress導航菜單的滾動和淡入淡出效果的實現要點

2024-09-07 00:48:10
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了WordPress導航菜單的滾動和淡入淡出效果的實現要點,講解了根據WordPress默認主題的PHP編寫技巧,需要的朋友可以參考下。

滾動導航菜單

滾動菜單, 顧名思義是以滾動的方式顯示和隱藏菜單的. 其實跟淡入淡出菜單和滾動菜單的原理是一樣的, 前者是在觸發事件的時候改變菜單的透明度, 而后者則是改變菜單的高度. 那為什么后者的處理難度會比前者高呢? 這正因為菜單高度的處理比透明度有更高的技巧要求. 下面我們就討論一下該如何處理, 并難在什么地方.

初期化處理

為了處理更加靈活, 我們需要為它定義一個作為參數的滑動速度, 也就是每一個單位時間間隔, 菜單高度的改變幅度. 另外, 我們需要將菜單的初始高度定為 0.

速度來自參數, 默認沒個時間單位移動 10px

this.speed = speed || 10;

設定初始化高度

this.util.setStyle(this.body, 'height', '0');

展開和折疊

展開和折疊的方法對應淡入淡出菜單的加強和減小不透明度, 只是處理對象不一樣, 原理是一樣的. 要注意將獲取的高度轉為整型再進行計算.

  1. expand: function() { 
  2.  // 獲取當前高度, 并整型化 
  3.  var height = parseInt(this.util.getStyle(this.body, 'height')); 
  4.  // 在時間單位內加上速度, 直到高度等于或超過最大高度 
  5.  height += this.speed; 
  6.  if(height >= this.height) { 
  7.  height = this.height; 
  8.  // 取消循環調用 
  9.  clearTimeout(this.tid); 
  10.  } 
  11.  // 重新設定菜單高度 
  12.  this.util.setStyle(this.body, 'height', height + 'px'); 
  13.    
  14. /** 
  15.  * 折疊菜單, 直到高度為 1 時隱藏菜單 
  16.  */ 
  17. collapse:function() { 
  18.  // 獲取當前高度, 并整型化 
  19.  var height = parseInt(this.util.getStyle(this.body, 'height')); 
  20.  // 在時間單位內減去速度, 直到高度等于或小于 1 
  21.  height -= this.speed; 
  22.  if(height <= 1) { 
  23.  height = 1; 
  24.  // 隱藏菜單 
  25.  this.util.setStyle(this.body, 'visibility''hidden'); 
  26.  // 取消循環調用 
  27.  clearTimeout(this.tid); 
  28.  } 
  29.  // 重新設定菜單高度 
  30.  this.util.setStyle(this.body, 'height', height + 'px'); 

激活菜單的瞬間

十分十分十分重要, 滾動菜單中最具技巧, 也最有意思的一部分.

本程序中, 我對獲取高度的方法進行了封裝, 獲取高度其實是返回元素的 offsetHeight. 按我的理解 (不知道是否正確), offsetHeight 會優先去獲取 CSS 樣式中的高度并返回, 當樣式為空時才會去獲取元素的實際高度. 所以有以下代碼:

  1. // 獲得初始高度, 當鼠標在菜單標題上時獲得展開時的初始高度, 當鼠標在菜單體上時取得菜單的實際高度 
  2. var initHeight = this.util.getStyle(this.body, 'height'); 
  3. // 獲得實際高度, 必須先清空樣式的高度, 否則只會得到樣式中的高度 
  4. this.util.setStyle(this.body, 'height'''); 
  5. this.height = this.util.getHeight(this.body); 
  6. // 重新設定初始高度 
  7. this.util.setStyle(this.body, 'height', initHeight); 

淡出淡入導航菜單

實施操作

前面的分析說得有點啰嗦了, 還是看看代碼吧. :) 為了突出改動的部分, 我在代碼中加入了一些 Log.

初始化

初始不透明度為 0, 而最大不透明度為被設定值或者 1.

  1. // 定義透明度, 默認透明 
  2. this.opacity = 0; 
  3. this.maxopacity = opacity || 1; 

激活

先進行前期處理, 再對菜單的透明度進行處理.

  1. /** 
  2.  * 激活方法 
  3.  * 當鼠標移動到菜單標題是激活 
  4.  */ 
  5. activate: function() { 
  6.  // 獲取當前菜單體的位置 
  7.  var pos = this.util.cumulativeOffset(this.title); 
  8.  var left = pos[0]; 
  9.  var top = pos[1] + this.util.getHeight(this.title); 
  10.    
  11.  // 定義激活時樣式 
  12.  this.util.setStyle(this.body, 'left', left + 'px'); 
  13.  this.util.setStyle(this.body, 'top', top + 'px'); 
  14.  this.util.setStyle(this.body, 'visibility''visible'); 
  15.  this.util.setStyle(this.body, 'opacity'this.opacity); 
  16.  this.util.setStyle(this.body, 'filter''alpha(opacity=' + this.opacity * 100 + ')'); 
  17.    
  18.  if(this.tid) { 
  19.  clearTimeout(this.tid); 
  20.  } 
  21.  // 不斷加強菜單的不透明度 
  22.  this.tid = setInterval(this.util.bind(thisthis.appear), 30); 

加強菜單的不透明度, 直到透明度到達最大不透明度.

  1. /** 
  2.  * 加強不透明度, 直到最大不透明度 
  3.  */ 
  4. appear: function() { 
  5.  this.opacity += 0.1; 
  6.  if(this.opacity >= this.maxopacity) { 
  7.  this.opacity = this.maxopacity; 
  8.  // 取消循環調用 
  9.  clearTimeout(this.tid); 
  10.  } 
  11.  // 重新設定透明度 
  12.  this.util.setStyle(this.body, 'opacity'this.opacity); 
  13.  this.util.setStyle(this.body, 'filter''alpha(opacity=' + this.opacity * 100 + ')'); 

解除

對菜單的透明度進行處理.

  1. /** 
  2.  * 解除方法 
  3.  * 當鼠標移動出菜單標題是激活 
  4.  */ 
  5. deactivate: function(){ 
  6.  if(this.tid) { 
  7.  clearTimeout(this.tid); 
  8.  } 
  9.  // 不斷減弱菜單的不透明度 
  10.  this.tid = setInterval(this.util.bind(thisthis.fade), 30); 

減弱菜單的不透明度, 直到透明度為 0 并隱藏菜單.

  1. /** 
  2.  * 減小不透明度, 直到完全透明隱藏菜單 
  3.  */ 
  4. fade:function() { 
  5.  this.opacity -= 0.1; 
  6.  if(this.opacity <= 0) { 
  7.  this.opacity = 0; 
  8.  // 隱藏菜單 
  9.  this.util.setStyle(this.body, 'visibility''hidden'); 
  10.  // 取消循環調用 
  11.  clearTimeout(this.tid); 
  12.  } 
  13.  // 重新設定透明度 
  14.  this.util.setStyle(this.body, 'opacity'this.opacity); 
  15.  this.util.setStyle(this.body, 'filter''alpha(opacity=' + this.opacity * 100 + ')'); 
  16. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人aaa| 欧美在线欧美在线| 欧美日韩亚洲国产一区| 欧美极品在线视频| 日韩欧美中文免费| 粗暴蹂躏中文一区二区三区| 亚洲激情在线观看视频免费| 亚洲人成在线观看网站高清| 中文字幕成人在线| 欧美第一黄色网| 亚洲久久久久久久久久| 亚洲伊人久久大香线蕉av| 亚洲国产欧美一区二区丝袜黑人| 亚洲国产高清高潮精品美女| 国产美女直播视频一区| 45www国产精品网站| 欧美性感美女h网站在线观看免费| 91在线视频导航| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲电影免费观看高清| 在线日韩第一页| 日韩亚洲在线观看| 欧美激情中文字幕在线| 久久精品一偷一偷国产| 日韩成人中文字幕在线观看| 亚洲人成在线免费观看| 91sa在线看| 国产精品444| 久久久女女女女999久久| 亚洲人线精品午夜| 欧美成人午夜激情视频| 欧美亚洲成人xxx| 亚洲风情亚aⅴ在线发布| 91精品久久久久久久久久久| 成人h视频在线| 国产欧美精品一区二区三区-老狼| 亚洲欧美自拍一区| 久久人人爽人人爽人人片亚洲| 97国产精品人人爽人人做| 久久久天堂国产精品女人| 日本高清视频精品| 亚洲精品成人久久电影| 91高清视频免费观看| 亚洲第一天堂无码专区| 91久久国产精品91久久性色| 91超碰中文字幕久久精品| 国产精品美女免费| 久久久99免费视频| 精品视频9999| 欧美激情在线狂野欧美精品| 国产欧美精品日韩| 在线观看精品自拍私拍| 精品自拍视频在线观看| 中文字幕一区日韩电影| 亚洲一区二区黄| 久久久这里只有精品视频| 精品视频久久久| 欧美高清自拍一区| 亚洲热线99精品视频| 中国日韩欧美久久久久久久久| 久久久久久免费精品| 亚洲男人7777| 欧美成人精品激情在线观看| 欧美日韩国产影院| 国产欧美日韩综合精品| 亚洲第一精品夜夜躁人人躁| www.亚洲天堂| 8x海外华人永久免费日韩内陆视频| 亚洲欧美另类在线观看| www.午夜精品| 国产成人精品在线播放| 国自产精品手机在线观看视频| 亚洲精品一区二区在线| 欧美日韩亚洲一区二| 岛国av一区二区| 91色视频在线导航| 亚洲美女福利视频网站| 国产成人综合精品在线| 久久99精品久久久久久琪琪| 久久九九热免费视频| 91中文字幕一区| 97久久国产精品| 国产在线观看精品一区二区三区| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品aaa| 亚洲第一精品夜夜躁人人爽| 最近2019年中文视频免费在线观看| 欧美电影第一页| 中国人与牲禽动交精品| 国产欧美日韩91| 国产中文字幕日韩| 国产精品久久久久久亚洲调教| 国产三级精品网站| 九九九热精品免费视频观看网站| 91精品久久久久久久久青青| 欧美性极品少妇精品网站| 欧美视频在线观看 亚洲欧| 日本久久久久亚洲中字幕| 日韩免费在线免费观看| 久久免费少妇高潮久久精品99| 在线观看日韩www视频免费| 亚洲丝袜一区在线| 亚洲精品日韩欧美| 国产99视频精品免视看7| 26uuu日韩精品一区二区| 国产精品国产三级国产aⅴ9色| 日韩高清欧美高清| 九九九久久久久久| 亚洲自拍小视频免费观看| 国产亚洲精品激情久久| 九九视频这里只有精品| 黑人巨大精品欧美一区免费视频| 日韩在线视频线视频免费网站| 中文字幕久久亚洲| 国产精品无码专区在线观看| 久久精品99久久久久久久久| 美女撒尿一区二区三区| 日韩激情视频在线| 欧美黑人性视频| 97视频在线观看网址| 亚洲综合最新在线| 色婷婷成人综合| 成人激情视频在线观看| 岛国精品视频在线播放| 色偷偷91综合久久噜噜| 久久精品99久久久久久久久| 亲爱的老师9免费观看全集电视剧| 日韩欧美在线国产| 精品日韩美女的视频高清| 一二美女精品欧洲| 亚洲a在线观看| 欧美与黑人午夜性猛交久久久| 综合欧美国产视频二区| 欧美性猛交xxxx乱大交3| 精品久久久一区二区| 亚洲视频999| 国产精品久久久久久中文字| 国产精品96久久久久久又黄又硬| 国产美女搞久久| 国产在线视频2019最新视频| 91精品久久久久久久久久久久久| 日韩成人在线视频| 久久久精品视频成人| 色先锋资源久久综合5566| 久久精品视频亚洲| 久久福利视频导航| 97超级碰在线看视频免费在线看| 91九色蝌蚪国产| 色偷偷偷亚洲综合网另类| 一个人看的www欧美| 亚洲天堂网在线观看| 免费99精品国产自在在线| 国内精品久久久久久久久| 国产精品久久久久久久一区探花| 国产精品第二页| 日韩精品免费看| 91沈先生在线观看| 国产精品成人aaaaa网站| 精品香蕉一区二区三区| 亚洲成人三级在线| 亚洲第一男人av| 欧美电影在线播放| 亚洲女人被黑人巨大进入al| 精品一区二区电影|