解決Mui中popover 頂部彈出菜單彈出位置不許確以及沒法收回的問題

前言

最近公司的項目轉向使用Hbuilder開發移動端項目,其中想要經過在頂部標題欄加入彈出菜單的方式,來定位長列表的位置,如圖所示。
圖片描述javascript

問題

Mui的功能貌似還不是很完善,在使用這個彈出菜單的時候,發現了一些很尷尬的問題:css

  1. 目錄的跳轉我是經過錨點實現的,可是在跳轉以前,這個菜單一切正常,一旦觸發跳轉,那麼整個菜單就會卡住沒法收回,可是跳轉功能正常。html

  2. 因爲個人頁面比較長,於是出現不在頂部使用彈出菜單時,彈出菜單位置像是不正確的狀況,如圖所示。
    圖片描述java

解決辦法

1.問題一的解決方案

對於問題一,個人解決方案是手動關閉彈出菜單,這裏經過控制檯查找出生成的mask的class .mui-backdrop以及彈出菜單項的class .mui-table-view-cell代碼以下:app

//點擊mask的觸發事件
$(".mui-backdrop").click(function() {
    $("#topPopover").hide();
    $(".mui-backdrop").hide();
});
//點擊菜單項的觸發事件
$(".mui-table-view-cell").click(function() {
    $("#topPopover").hide();
    $(".mui-backdrop").hide();
});
雖然方法比較粗暴,可是能夠解決這個問題,有更好的解決方案的但願可以指正。

2.問題二的解決方案

對於問題二,個人解決方案是,將它定死~。 我經過使用js寫入css樣式,將其設爲`absolute`便可解決。代碼以下:
var uip = document.getElementById("topPopover"); //topPopover是popover 的最外層div
    uip.style.position = "absolute";

代碼

主頁面代碼以下所示:ide

<!--頭部-->
    <div class="mui-bar mui-bar-nav">
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
            <a id="menu" class="mui-action-menu mui-icon mui-icon-bars mui-pull-right" href="#topPopover"></a>
            <h1 class="mui-title" id="cityResult" class="" type='button'>xxx</h1>
    </div>
    <div class="mui-content">
        <!--體,省略-->
    </div>
    <!--右上角彈出菜單-->
    <div id="topPopover" class="mui-popover">
        <div class="mui-popover-arrow"></div>
        <div class="mui-scroll-wrapper">
            <div class="mui-scroll">
                <ul class="mui-table-view">
                    <li class="mui-table-view-cell">
                        <a href="#c1">行政區劃簡介</a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a href="#c2">扶貧開發基本狀況</a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a href="#c3">貧困戶地域分佈狀況</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>

解決以上兩個問題的代碼:ui

function setPopOverMenu() {
    var uip = document.getElementById("topPopover");
    uip.style.position = "absolute";
    $(".mui-backdrop").click(function() {
        $("#topPopover").hide();
        $(".mui-backdrop").hide();
    });
    $(".mui-table-view-cell").click(function() {
        $("#topPopover").hide();
        $(".mui-backdrop").hide();
    });
}

歡迎訪問zhkmxx930的博客 ,初來實習,多請幫助~spa

相關文章
相關標籤/搜索