中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

微信小程序如何做下拉菜單

發布時間:2021-09-03 10:49:49 來源:億速云 閱讀:195 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關微信小程序如何做下拉菜單,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

微信小程序下拉菜單思路與步驟:

布局方面,整體使用dl來寫,二級包在dd中,用ul li來寫;交互方面,點擊某一級菜單,關閉兄弟子菜單,點擊某子菜單關閉所有菜單。

1.使用dt做出第一級菜單

2.使用dd嵌套第二級菜單,初始隱藏、position為absolute,使用z-index浮出頁面層

/*總菜單容器*/
.menu {display: block;height: 38px;}
/*一級菜單*/
.menu dt {
   font-size: 15px;float:left;width: 33%;height: 38px;border-right: 1px solid #d2d2d2;
   border-bottom: 1px solid #d2d2d2; text-align: center;background-color: #f4f4f4; color: #5a5a5a;line-height: 38px;
}
/*二級菜單外部容器樣式*/
.menu dd{ position: absolute;width: 100%;top:39px; left:0;z-index:999;}
/*二級菜單普通樣式*/
.menu li{
   font-size: 14px; line-height: 34px;color: #575757;height: 34px;display: block;padding-left: 8px;
   background-color: #fff;border-bottom: 1px solid #dbdbdb;
}

查看效果,接下來實現點擊事件。

如圖

微信小程序如何做下拉菜單

3.dt綁定點擊事件tapMainMenu,flag控制顯隱toggle,提供2個class,hidden與show,來控制顯隱。注:dt也是可以bindTap的,不單是view。

/* 顯示與隱藏 */
.show {
   display: block;
}
.hidden {
 display: none;
}web前端開發http://www.51xuediannao.com/

4.關閉所有一級菜單,每個一級菜單都有一個index標識,由tapMainMenu事件傳遞過去,與數組subMenuDisplay一一對應,當前元素subMenuDisplay[index]視原來狀態決定是顯示或隱藏。

核心代碼:

<dl class="menu">
    <dt data-index="0" bindtap="tapMainMenu">價格</dt>
    <dd class="{{subMenuDisplay[0]}}">
        <ul><li>sub1</li><li>sub2</li></ul>
    </dd>
</dl>
//使用function初始化array,相比var initSubMenuDisplay = [] 既避免的引用復制的,同時方式更靈活,將來可以是多種方式實現,個數也不定的
function initSubMenuDisplay() { 
     return ['hidden', 'hidden', 'hidden'];
}
Page({
    data:{
        subMenuDisplay:initSubMenuDisplay()
    },
    tapMainMenu: function(e) {//        獲取當前顯示的一級菜單標識
        var index = parseInt(e.currentTarget.dataset.index);        // 生成數組,全為hidden的,只對當前的進行顯示
        var newSubMenuDisplay = initSubMenuDisplay();//        如果目前是顯示則隱藏,反之亦反之。同時要隱藏其他的菜單
        if(this.data.subMenuDisplay[index] == 'hidden') {
            newSubMenuDisplay[index] = 'show';
        } else {
            newSubMenuDisplay[index] = 'hidden';
        }        // 設置為新的數組
        this.setData({
            subMenuDisplay: newSubMenuDisplay
        });
    }
});

5.選中二級菜單當前項,但給個系統icon及改變背景色,文本加粗,同樣改變一級菜單標題,demo中給出一個彈窗

聲明tapSubMenu方法,監聽二級點擊事件

//獲取當前顯示的一級菜單標識tapSubMenu: function(e) {     var index = parseInt(e.currentTarget.dataset.index);    console.log(index);  // 隱藏所有一級菜單    this.setData({        subMenuDisplay: initSubMenuDisplay()     }); }
    加highlight效果
/*二級菜單高亮樣式*/.menu li.highlight{   background-color: #f4f4f4;}

與一級菜單不同,使用二維數組的方式實現點擊高亮,這樣才能定位到是某一級的某二級菜單,再決定顯示隱藏。 布局文件改成:

 <dd class="{{subMenuDisplay[0]}}">
        <ul>
            <li class="{{subMenuHighLight[0][0]}}" data-index="0-0" bindtap="tapSubMenu">100以內</li>
            <li class="{{subMenuHighLight[0][1]}}" data-index="0-1" bindtap="tapSubMenu">100-500</li>
            <li class="{{subMenuHighLight[0][2]}}" data-index="0-2" bindtap="tapSubMenu">500-1000</li>
            <li class="{{subMenuHighLight[0][3]}}" data-index="0-3" bindtap="tapSubMenu">1000-3000</li>
            <li class="{{subMenuHighLight[0][4]}}" data-index="0-4" bindtap="tapSubMenu">3000以上</li>
        </ul>
    </dd>

效果如圖

微信小程序如何做下拉菜單

相應的js代碼要寫成:

//聲明初始化高亮狀態數組function initSubMenuHighLight() {    return [
        ['','','','',''],
        ['',''],
        ['','','']
    ];
}

點擊事件

tapSubMenu: function(e) {        // 隱藏所有一級菜單
        this.setData({
            subMenuDisplay: initSubMenuDisplay()
        });        // 處理二級菜單,首先獲取當前顯示的二級菜單標識
        var indexArray = e.currentTarget.dataset.index.split('-');        console.log("indexArray : " + indexArray);        var newSubMenuHighLight = initSubMenuHighLight();        // 與一級菜單不同,這里不需要判斷當前狀態,只需要點擊就給class賦予highlight即可
        newSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight';        console.log(newSubMenuHighLight);        // 設置為新的數組
        this.setData({
            subMenuHighLight: newSubMenuHighLight
        });
    }

這樣就實現了高亮與取消高亮。但還沒完,與一級菜單不同,這里與兄弟子菜單是非互斥的,也就是說點擊了本菜單,是不能一刀切掉兄弟菜單的高亮狀態的。于是我們改進js代碼。

聲明方式,改用變量形式,方便存儲。

//定義初始化數據,用于運行時保存var initSubMenuHighLight = [   ['','','','',''],   ['',''],   ['','','']];
    點擊事件
    tapSubMenu: function(e) {        // 隱藏所有一級菜單        this.setData({            subMenuDisplay: initSubMenuDisplay()        });        // 處理二級菜單,首先獲取當前顯示的二級菜單標識        var indexArray = e.currentTarget.dataset.index.split('-');        // 初始化狀態        // var newSubMenuHighLight = initSubMenuHighLight;        for (var i = 0; i < initSubMenuHighLight.length; i++) {            // 如果點中的是一級菜單,則先清空狀態,即非高亮模式,然后再高亮點中的二級菜單;如果不是當前菜單,而不理會。經過這樣處理就能保留其他菜單的高亮狀態            if (indexArray[0] == i) {                for (var j = 0; j < initSubMenuHighLight[i].length; j++) {                    // 實現清空                    initSubMenuHighLight[i][j] = '';                }                // 將當前菜單的二級菜單設置回去            }        }        // 與一級菜單不同,這里不需要判斷當前狀態,只需要點擊就給class賦予highlight即可        initSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight';        // 設置為新的數組        this.setData({            subMenuHighLight: initSubMenuHighLight        });    }

有待完善功能點:

1.顯示與隱藏帶動畫下拉

2.抽象化,使用回調函數,將監聽每個二級菜單的點擊

3.數據源與顯示應當是分離的,一級與二級菜單的key value應該是獨立在外,系統只認index,然后對相應點擊作處理,跳轉頁面,篩選結果等

4.點擊二級菜單時,會將全部組的清除,有待修復

關于“微信小程序如何做下拉菜單”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

自治县| 台江县| 青神县| 博乐市| 沁水县| 清原| 陕西省| 镇平县| 宜昌市| 泰顺县| 酒泉市| 商都县| 岑巩县| 兴隆县| 恩平市| 昂仁县| 长治市| 辽中县| 德昌县| 盈江县| 澜沧| 邢台市| 连江县| 惠安县| 双峰县| 韶山市| 淮阳县| 镇江市| 奈曼旗| 巴楚县| 丘北县| 石渠县| 方正县| 永登县| 普格县| 舞钢市| 五大连池市| 屏东县| 牡丹江市| 德清县| 江安县|