WEB 之因此看起來很 WEB,除了自身慢的問題還有由於它具有了一些獨有的特性,好比連接跳轉,物理像素,不能獲取軟鍵盤高度等具備 WEB 特點的問題。css
而今天我想講一點你們都不在乎的一個問題,圖片流式加載的問題html
咱們先來看一個短片:ios
很明顯咱們能看出問題所在,這個仿 iOS 桌面程序的背景加載很是具備 WEB 特點,雖然在某些場景來講這是一個優勢,好比傳統網頁上,但對於一個應用級產品(對於如此般挑剔的我來講)這樣的體驗仍是難以接受的app
那麼咱們就上手改造吧,先把改造後的效果 po 出來:url
對於這樣的效果不少同窗都能拿出各類的方案,若是今天咱們只是討論傳統方案就沒意思了,咱們看一下 IOING 中的實現方法是怎樣的,而後分析一下它是如何作到的。
傳送門:IOING 的相關文檔spa
這裏給出兩段 CSS 示例:code
/*片斷 1*/ .bg { background: #fff onload url(./bg.png) center no-repeat; }
<!--片斷 2--> <div style="background-image: onload url(./bg.png);"></div>
咱們仔細看一下後發現,這個語法中多了一個 onload 的屬性,這個定義就是表示後面 url 中的背景圖在載入完成後纔會進行展現htm
上面這兩段 CSS 示例中第二個示例的解決方案仍是比較好梳理的,在 IOING 中模版文件會被解析成虛擬 DOM 樹,在這解析過程當中會把 style 屬性的內容丟給 IOING 內置的 CSS 引擎來處理,而第一段的 CSS 則沒有明確關聯的 DOM 節點,但不要緊,咱們能夠分爲兩個邏輯段分別處理blog
先來看一下片斷 2 的解決流程事件
其實原理比較簡單,重點是如何把 CSS 與 DOM 節點關聯起來,顯然第一段的實現就難在這個問題上,因爲 CSS 在解析時 IOING 的內置引擎是知道該 CSS 的來源的,好比是模塊 CSS 或者是組件 CSS,這樣咱們就能夠首先定位到所做用的 DOM Tree
到這裏基本就完成了使用 CSS 語法定義背景圖的渲染方式了,原理其實並不複雜,對於不瞭解 IOING 的 DOM 引擎 和 CSS 引擎 的同窗看到這裏可能仍是不太會明白。不過不要緊,接下來我會在這裏不按期更新關於 IOING 的種種,包括你們最關心的如何把 WEB App 作成 Native 的體驗
附上一個用 IOING 半天開發的小demo
掃碼二維碼關注個人公衆號