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,意思分別為:無此屬性、可見。