在一個 jQuery Mobile 「page」中,面板與「header」、「footer」、「content」,必須是兄弟元素。能夠在它們以前或以後添加面板的標記,但不在它們中間添加。注:此約束將在將來的版本中刪除。css
<div data-role="page"> <div data-role="panel" id="mypanel"> <!-- panel content goes here --> </div><!-- /panel --> <!-- header --> <!-- content --> <!-- footer --></div> <!-- page -->
另外,添加面板的標記在頁眉、內容、頁腳的後面,也可能正好是「page」容器結束符以前。在代碼順序中的放置面板標記的位置,將取決於,在C等級(僅HTML)或屏幕閱讀器,你想要的如何給讀者展現內容。html
一個包含「panel」(面板)的「page」(頁面),若是這個框架包含的標題,內容和頁腳節在一個div,當以顯示的模式"reveal"或"push"打開這個面板的時候,轉場被應用於此容器。固定的頁眉和頁腳是個例外。那些不包括在此容器內的,但將與它的轉場是同步的。注意你的全部可見的網頁內容應該生活在這些頁面部分。jquery
爲了不打開面板時閃爍,咱們迫使WebKit瀏覽器的硬件加速。若是容器有一個CSS多欄佈局(列數),頁面上的按鈕表單元素,在CSS能引發的問題。要解決這個,必須在元素或其容器上,設置如下規則:
-webkit-transform: translate3d(0,0,0);
<div data-role="panel" id="mypanel"><!-- panel content goes here --></div>
<div data-role="panel" id="mypanel" data-position="right" data-display="push"><!-- panel content goes here --></div>
當面板打開在打開狀態時,給面板動態地將內容或使面板隱藏內容可見,你必須在面板上觸發 updatelayout 事件。web
$( "#mypanel" ).trigger( "updatelayout" );
jquery mobile框架將檢查面板內容的新高度,若是超過屏幕高度,設置頁面爲 min-height 能在屏幕高度下顯示出來,而且新定位面板 data-position-fixed="true"。編程
<a href="#mypanel"> Open panel</a> $( "#idofpanel" ).panel( "open" , optionsHash );
當使用標記來控制面板,一次只能打開一個單一的面板。點擊下一個面板連接,上一個已經打開面板將自動關閉。這樣作是爲了保持標記只配置簡單。瀏覽器
<!DOCTYPE html> <html> <head> <title> Page Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.min.css" /> <script src="http://code.jquery.com/jquery-1.9.1.min.js"> </script> <script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"> </script> <style> html, body { padding: 0; margin: 0; } html, .ui-mobile, .ui-mobile body { height: 435px; } .ui-mobile, .ui-mobile .ui-page { min-height: 435px; } .ui-content{ padding:10px 15px 0px 15px; } .panel-content { padding:15px; } </style> </head> <body> <div data-role="page" style="max-height:440px; min-height:440px;"> <div data-role="header"> <h1> Panel Demo</h1> </div> <div data-role="content"> href="#defaultpanel" data-role="button" data-inline="true" data-icon="bars" Default panel</a> </div><!-- defaultpanel --><div data-role="panel" id="defaultpanel" data-theme="b"> <div class="panel-content"> <h3> Default panel options</h3> <p> This panel has all the default options: positioned on the left with the reveal display mode. The panel markup is <em> before</em> the header, content and footer in the source order.</p> <p> To close, click off the panel, swipe left or right, hit the Esc key, or use the button below:</p> href="#demo-links" data-rel="close" data-role="button" data-theme="c" data-icon="delete" data-inline="true" Close panel </div> <!-- /content wrapper for padding --> </div><!-- /defaultpanel --></div> </body> </html> <a><a></a>
//使用面板的關閉方法來關閉面板$( "#idofpanel" ).panel( "close" );//點擊頭部欄中的按鈕打開面板,頭部欄ID值my-header。面板內的關閉按鈕以下:href="#my-header" data-rel="close"Close panel <a></a>
若是瀏覽器支持3D變換,面板將有動畫,同一標準的CSS動畫支持咱們使用的頁面轉換。面板的動畫使用translateX CSS 變換以確保他們的硬件加速和光滑。app
jQuery Mobile 框架有一個功能,試驗檢測所需的CSS屬性支持,若是不可用,將回落到一個簡單的隱藏/顯示。通過完全的測試,非動畫面板的能力較差,由於沒有起伏平臺動畫一個比一個簡單的隱藏/顯示更好的體驗。框架
動畫選項容許你關閉面板動畫的全部設備。關閉動畫經過給面板容器HTML標記,添加 data-animate="false" 屬性。ide
打開面板時,使用硬件加速觸發頁面初始化期間來防止眨眼。由於這增長了內存的使用,若是你使用長的列表或腳本動態注入頁面上的內容與動畫面板,你必須意識到效率問題。工具
面板的顯示位置是CSS屬性的絕對定位:position:absolute。這意味着面板將隨着頁面滾動。當一個面板是打開的狀態的時候,jquery mobile 框架檢查面板內容的底部是否在視圖內,若是沒有,面板滾動到頁面頂部的。
你能夠設置一個面板的位置:position:fixed,並給面板添加 data-position-fixed="true"屬性,因此,不管你滾動頁面多遠,其內容都會顯示。在固定定位前,jquery mobile 框架還檢查是否面板的內容是否在視窗內。由於此屬性將防止面板的內容從滾動和使用溢出不支持足夠使用,在這個時候。若是面板內容太長,在視口內,框架將根本沒有固定的定位顯示面板。
在通常狀況下,咱們建議你把打開面板的按鈕,放置在頂部。這將避免須要滾動,也使得過渡順暢一點。
請注意,有固定的定位在Android WebView應用問題(而不是瀏覽器)會致使佈局問題,尤爲是當沒有啓用硬件加速。咱們建議不若是部署到一個Android應用程序使用固定位置面板選項。同時,若是有一個固定在一個固定的網頁的工具欄,工具欄可能不是過渡與頁面內容。
默認狀況下,面板有很是簡單的方式讓你定製本身的須要。面板基本上只是簡單的塊無 margin,坐在一邊的網頁內容。該框架將面板的內容包含在一個div容器內,其CSS爲ui-pannel-inner類,padding是15像素。若是須要,您能夠重寫此自定義CSS或使用選項classes.panelinner爲div設置不一樣的類名稱。
當打開面板時,面板有一個固定的寬度17em(272px),足以顯示一些頁面內容,在較寬的平板電腦或桌面屏幕,看起來仍是不錯的。給面板設置樣式寬度是至關複雜的,但根據須要這些能夠被重寫CSS。
注意:直接給面板容器添加 padding, borders, or margins 將改變總體尺寸,也可能致使的定位和動畫的影響。爲了不這種狀況,給面板內容容器應用樣式(.ui-pannel-inner)。
除了主題背景,寬度和高度100%樣式,面板有對本身很小的造型。面板的默認主題是「C」。你能夠經過面板容器添加 data-theme 的面板上設置一個不一樣的主題,或設置data-theme="none"添加您本身的CSS類樣式。
這個框架使用用於網頁內容容器的主題。打開一個面板,顯示模式reveal 或者 push,網頁的主題將被設置爲所使用的面板相同的主題。這樣作是爲了掩蓋大部分移動瀏覽器尚未完成的畫面板背景動畫,打開它已經開始了時。若是你使用一個背景圖像的網頁,你必須將它設置爲ui-body-* CSS類的主題,給你使用的頁面,它將被用來做爲背景的內容容器。
當推或揭示顯示用面板,將頁面一邊打開時。由於有些頁面是推畫外,面板是模態的,必須關閉,再次與頁面內容的互動。在更大的屏幕,可能有你想要的工做更像是一個可摺疊的塔板,能夠打開和一塊兒使用的頁面更好地利用屏幕房地產。
使頁面一塊兒工做,打開面板,它須要再流到一個窄的寬度以適合旁邊的面板。這能夠經過純CSS添加一個左或右邊緣與面板的寬度(17em)對網頁內容的再流力。第二,看不見的層放置在頁面上點擊瞭解僱行爲是隱藏的CSS你能夠點擊頁面而不是關閉菜單。
這裏是這些規則的一個例子,包裹在一個媒體查詢僅適用於本以上的行爲35em(560px):
@media (min-width:35em) { /* wrap on wide viewports once open */ .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left, .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left, .ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left, .ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left { margin-right: 17em; } .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right, .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right, .ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, .ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { margin-left: 17em; } .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push, .ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal { width: auto; } /* disable "dismiss" on wide viewports */ .ui-panel-dismiss { display: none; } /* same as the above but for panels with display mode "push" only */ .ui-panel-dismiss-display-push { display: none; } }
中包含的控件類型是一個斷點,這種行爲預設,踢在55em(880px)。此斷點不是默認應用於使你編寫自定義的斷點,最適合你的內容和設計更容易。應用斷點的預設,添加 ui-responsive-panel 類網頁包裝器(不是面板)。