1. 程式人生 > >MiniUI中datagrid使用的不相容bug

MiniUI中datagrid使用的不相容bug

在使用datagird時,會用到顯示一個datagrid,同時隱藏另一個。這個時候遇到了問題:

1.datagrid的表頭不能正常顯示,出現了重疊在一起的情況,看不見表頭名稱。

2.datagrid的  showPager  屬性控制的頁面引數視窗不能正常顯示。

我在使用miniui的時候,不清出JS對div的隱藏屬性會對datagrid有影響,所以走了不少彎路,根本不清楚為什麼會衝突,也不清楚用什麼替代。

經過一番百度,發現了這個屬性:visible:false;

既可以滿足隱藏對應的div,也可以避免上述屬性衝突引起的bug的存在。

下面附上:JS屬性用於隱藏div。

 

CSS中:display:none與visible:hidden的區別

 

display:none視為不存在且不載入,即,不為被隱藏的物件保留其物理空間,即該物件在頁面上徹底消失。

(可以解決表頭重疊不正常顯示錶頭名的問題,但是依然存在 showPager 屬性顯示問題)

visibility:hidden隱藏,但在瀏覽時保留位置,即,使物件在網頁上不可見,但該物件在網頁上所佔的空間沒有改變。

(最不適合datagrid隱藏功能實現的屬性,表頭顯示問題,showPager 屬性顯示問題)

使用 display:none屬性後,HTML元素(物件)的寬度、高度等各種屬性值都將“丟失”;

而使用visibility:hidden屬性後,HTML元素(物件)僅僅是在視覺上看不見(完全透明),而它所佔據的空間位置仍然存在。也即是說它仍具有高度、寬度等屬性值。

 

程式碼演示:

表格初始狀態:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <table id="table1" style="border: 2px dashed red;background-color: #e2e2e2;padding: 5px">
        <tr>
            <td>A1
            </td>
            <td>A2
            </td>
        </tr>
        <tr>
            <td>B1
            </td>
            <td>B2
            </td>
        </tr>
    </table>
</body>
</html>

效果如下:

在表格第二行的 tr 加上 style="display:none"後:

在表格第二行的 tr 加上 style="visibility:hidden"後:

 

 

說到標籤的隱藏,你們會用到什麼呢?display?visibility?還是伺服器控制元件的visible?

顯然,這三者都能起到隱藏與顯示的效果,但是用途確完全不一樣,請看用法與區別:

<div style="display:">顯示</div>
<div style="display:none;">隱藏不佔位</div>

<div style="visibility:">顯示</div>
<div style="visibility:hidden;">隱藏佔位</div>

<div visible="true" runat="server">顯示</div>
<div visible="false" runat="server">消失不佔位</div>


說明:

  1)display

    隱藏必須使用none值,該隱藏不佔位,頁面原始碼可見。

    顯示可使用空或block或inline,意思分別為:無此屬性、顯示視為div(有換行符)、顯示視為span(無換行符)。

  2)visibility

    隱藏必須使用hidden值,該隱藏佔位,頁面原始碼可見。

    顯示可使用空或visible,意思分別為:無此屬性、顯示。

  3)visible(伺服器控制元件)

    隱藏必須使用false值與runat="server",該隱藏不佔位,頁面原始碼不可見。

    顯示可使用空或true,意思分別為:無此屬性、可見。