dojox/widget/Standby
簡介
在 dojo 中使用宣告法建立 dijit 時,在 dojo 的剖析器剖析 HTML 時,介面元件會先以流覽器的預設樣式顯示,然後再以 dijit 的外觀呈現。在這個過程中,畫面上會有「閃動」的情況發生,造成使用者的經驗不佳。最好的方式是顯示一個下載中的訊息或動畫,將畫面遮住,等到 dijit 準備好了,才顯示在畫面上。dojo 的套件也提供了一個動畫元件 dojox/widget/Standby 來做這件事。每建立一個 Standy 元件,可以在畫面上顯示一個下載中的動畫,可以透過設定來改變動畫顯示的位置。如果要同時在畫面上顯示數個下載中的動畫,則每一個動畫需建立一個 Standby 元件,並分別指定動畫顯示的位置。
範例
範例中建立了二個方形區域及三個按鈕,二個方形區域是用來展現 dojox/widget/Standby 的功能。另外建立了三個按鈕,一個用來顯示下載中的動畫,一個用來取消動畫,第三個按鈕用來在二個方形區域中切換動畫顯示的位置。
CSS
<style> html { width:100%; height:100%; } body { margin: 0 auto; width:1000px; height: 100%; padding: 20px; } </style>
沒有特別的樣式需要定義。
HTML
<body class="claro"> <br> <br> </body>
Script
第 16~18 行建立一個 Standby 的元件。
target 指定動畫要遮蔽的區域,必須給一個 id 值,或是一個 dom node。
image 指定動畫的來源,可以用來改變預設的動畫。但要注意的是,如果動畫的尺寸大於要遮蔽的區域,就會看不到動畫了。預設的動畫只有 32 x 32 的大小。
color 指定動畫遮蔽膜的顏色。
duration 指定動畫在顯示及隱藏時所運作的時間,以 ms(千分之一秒)為單位。
第 26 行的寫法看起來有點奇怪,這是因為 standby.target 的值,在經過 dojo 的處理後,變成了一個 dom node,所以要讀取原來的 string 值時,必須寫成 standby.get("target").id,單純的寫 standby.get("target") 時,只會讀到一個 dom node。
第 23~28 行是切換動畫顯示位置的函式。
沒有留言:
張貼留言