亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WordPress導航菜單如何實現滾動和淡入淡出效果

發布時間:2021-08-27 11:04:44 來源:億速云 閱讀:157 作者:小新 欄目:開發技術

這篇文章主要介紹了WordPress導航菜單如何實現滾動和淡入淡出效果,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

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

// 速度來自參數, 默認沒個時間單位移動 10px
this.speed = speed || 10;
// 設定初始化高度
this.util.setStyle(this.body, 'height', '0');

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

expand: function() {
 // 獲取當前高度, 并整型化
 var height = parseInt(this.util.getStyle(this.body, 'height'));
 // 在時間單位內加上速度, 直到高度等于或超過最大高度
 height += this.speed;
 if(height >= this.height) {
 height = this.height;
 // 取消循環調用
 clearTimeout(this.tid);
 }
 // 重新設定菜單高度
 this.util.setStyle(this.body, 'height', height + 'px');
}
 
/**
 * 折疊菜單, 直到高度為 1 時隱藏菜單
 */
collapse:function() {
 // 獲取當前高度, 并整型化
 var height = parseInt(this.util.getStyle(this.body, 'height'));
 // 在時間單位內減去速度, 直到高度等于或小于 1
 height -= this.speed;
 if(height <= 1) {
 height = 1;
 // 隱藏菜單
 this.util.setStyle(this.body, 'visibility', 'hidden');
 // 取消循環調用
 clearTimeout(this.tid);
 }
 // 重新設定菜單高度
 this.util.setStyle(this.body, 'height', height + 'px');
}

激活菜單的瞬間
十分十分十分重要, 滾動菜單中最具技巧, 也最有意思的一部分.
本程序中, 我對獲取高度的方法進行了封裝, 獲取高度其實是返回元素的 offsetHeight. 按我的理解 (不知道是否正確), offsetHeight 會優先去獲取 CSS 樣式中的高度并返回, 當樣式為空時才會去獲取元素的實際高度. 所以有以下代碼:

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

淡出淡入導航菜單
實施操作

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

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

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

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

/**
 * 激活方法
 * 當鼠標移動到菜單標題是激活
 */
activate: function() {
 // 獲取當前菜單體的位置
 var pos = this.util.cumulativeOffset(this.title);
 var left = pos[0];
 var top = pos[1] + this.util.getHeight(this.title);
 
 // 定義激活時樣式
 this.util.setStyle(this.body, 'left', left + 'px');
 this.util.setStyle(this.body, 'top', top + 'px');
 this.util.setStyle(this.body, 'visibility', 'visible');
 this.util.setStyle(this.body, 'opacity', this.opacity);
 this.util.setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');
 
 if(this.tid) {
 clearTimeout(this.tid);
 }
 // 不斷加強菜單的不透明度
 this.tid = setInterval(this.util.bind(this, this.appear), 30);
}

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

/**
 * 加強不透明度, 直到最大不透明度
 */
appear: function() {
 this.opacity += 0.1;
 if(this.opacity >= this.maxopacity) {
 this.opacity = this.maxopacity;
 // 取消循環調用
 clearTimeout(this.tid);
 }
 // 重新設定透明度
 this.util.setStyle(this.body, 'opacity', this.opacity);
 this.util.setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');
}

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

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

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

/**
 * 減小不透明度, 直到完全透明隱藏菜單
 */
fade:function() {
 this.opacity -= 0.1;
 if(this.opacity <= 0) {
 this.opacity = 0;
 // 隱藏菜單
 this.util.setStyle(this.body, 'visibility', 'hidden');
 // 取消循環調用
 clearTimeout(this.tid);
 }
 // 重新設定透明度
 this.util.setStyle(this.body, 'opacity', this.opacity);
 this.util.setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“WordPress導航菜單如何實現滾動和淡入淡出效果”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣化县| 通海县| 德惠市| 涡阳县| 石首市| 宁津县| 上饶县| 安康市| 台前县| 马公市| 吉安县| SHOW| 蒲城县| 德州市| 思茅市| 滦南县| 临清市| 西平县| 桂林市| 蓬安县| 陕西省| 绵阳市| 三亚市| 通辽市| 东丰县| 石河子市| 达拉特旗| 西乌珠穆沁旗| 光山县| 兖州市| 永春县| 屏东市| 桐梓县| 朝阳县| 雷州市| 铁岭县| 宜宾市| 林西县| 桓台县| 泾川县| 金湖县|