摘要:考慮到要為頁腳留空間,結合傳統網頁中的固定頁腳的做法,得到完整的假定頁腳的高度為以上就是在這種條件下的固定頁腳的實現方法。結語移動單頁應用的頁面結構是比較特別,所以固定頁腳這么有用的東西做起來又是一個新話題了。
一種單頁應用的頁面結構
面向移動端的單頁應用(Single Page Web Application),從頁面代碼上來說,會使用較一般網頁不同的結構。單頁應用并不是說應用只需要一個視圖,而是說可以將組成應用的多個視圖集合在一個網頁內呈現,且在視圖之間能夠自由切換(平滑的動畫形式居多)。
我制作單頁應用使用的是一種常見方法,像下面這樣:
.view-page{ display: none; position: absolute; width: 100%; height: 100%; left: 0; top: 0; } .view-current{ display: block; }
可以看出,其原理是視圖都由絕對定位的覆蓋屏幕大小(可見視口)的元素構成,在某一時間點,只會顯示一個視圖。
固定頁腳的問題那么,固定頁腳是一個什么問題呢?請看下圖:
先說說什么是固定頁腳吧。上圖右可以看到,當頁面內容較多,超出一屏的高度時,頁腳是“自然地”緊跟在內容后邊,滾動到底部時,才會看到位于最下方的頁腳。同時,上圖左可以看到,當頁面內容較少時,頁腳則直接位于屏幕最下方,剩余區域則是空白。這就是固定頁腳,它可以算是一種比較理想的“總是在它應該在的位置”的頁腳。
那么,問題來了。參考上圖左,除了固定頁腳的效果之外,現在還要求當頁面內容較少時,頁面內容(Content)可以水平垂直居中于剩余的空間(Container)。在上述單頁應用的頁面結構中,應該如何實現呢?
方法探討 水平垂直居中與Flexbox讓我們一步一步來。先完成“水平垂直居中”。由于內容高度不確定,所以這里適合使用彈性盒模型 (Flexbox)。
關于彈性盒模型的指南,推薦閱讀A Complete Guide to Flexbox[] 。
應用Flexbox實現水平垂直居中可以先得到這樣的代碼(由于其他視圖不再需要,這里只保留一個視圖):
上面的div.container對應前面圖中的剩余空間(作為容器),div.content則是需要水平垂直居中的內容。對應的css是:
.container{ min-height: 100%; }
flex-container、justify-content-center、align-items-center都是彈性盒模型的輔助class(熟悉了Flexbox就可以很快理解)。使用輔助class是因為彈性盒模型從前到后幾經變化,兼容處理需要稍多代碼。這些輔助class的css是:
.flex-container{ display: -webkit-box; display: -webkit-flexbox; display: -ms-flexbox; display: -webkit-flex; display: flex; } .justify-content-center{ -webkit-box-pack: center; -webkit-flex-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; } .align-items-center{ -webkit-box-align: center; -webkit-flex-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; }
到此,水平垂直居中就完成了。
實現固定頁腳現在加入頁腳的部分。這時候html代碼變成:
注意,div.view-page是絕對定位,且定義了height: 100%;,而此時div.container也定義了min-height: 100%;。考慮到要“為頁腳留空間”,結合傳統網頁中的固定頁腳的做法,得到完整的css:
.container{ min-height: 100%; margin-bottom: -120px; padding-bottom: 120px; -webkit-box-sizing: border-box; box-sizing: border-box; } .footer{ height: 120px; /*假定頁腳的高度為120px*/ }
以上就是在這種條件下的固定頁腳的實現方法。雖然最后看起來只是這樣一小段代碼,但我還是思考了相當一段時間加上試驗才得到。其中padding-bottom和負值的margin-bottom的結合應用很關鍵。此外,作為移動端的網頁,要想到使用box-sizing這個配合百分比會非常有用的CSS3屬性。
其他形式的嘗試?我也試過使用主軸為垂直方向的Flexbox來實現,但可惜經過測試,flex-direction: column;還沒有被現在的主流手機瀏覽器所支持。
傳統網頁的固定頁腳關于傳統網頁的固定頁腳,有一個專門的站點HTML5 CSS Sticky Footer[]。
結語移動Web單頁應用的頁面結構是比較特別,所以固定頁腳這么有用的東西做起來又是一個新話題了。想到并試驗成功后,我第一反應就是趕緊記下來,真是擔心以后忘掉了還得費勁重想...
如果你也碰到過類似的需求或有過類似的想法,相信本文可以提供一點參考!
(重新編輯自我的博客,原文地址:http://acgtofe.com/posts/2014/10/sticky-footer-for-single-page-web-app)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110931.html
摘要:主題主題醬茄開源版自媒體資訊博客主題模板醬茄主題由醬茄開發的一款免費開源的主題,主題專為博客資訊自媒體網站而設計,遵循開源協議發布。wordpress主題 醬茄Free v1.0.0開源版自媒體資訊博客主題模板醬茄free主題由醬茄開發的一款免費開源的WordPress主題,主題專為WordPress博客、資訊、自媒體網站而設計,遵循GPL V2.0開源協議發布。運行環境醬茄Free主題當前...
摘要:在本文中,將探討如何從一個應用程序中直接生成一個。然而,再次受到瀏覽器對和支持的限制。使用來實現規范嘗試使用實現規范實際上是創建了。就從應用程序使用這些工具而言,需要在服務器上安裝它們。希望這是一個有用的工具總結,可用幫你的應用程序創建。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 在一些場景下,用戶都要求一些需要的數...
摘要:但目前來看,單頁應用在技術實現和體驗上還有更大的發展空間,而這就是所要推進的。模塊化頁面模塊化單頁應用的特點之一是將頁面劃分為多個模塊,跳轉時更新模塊的內容。與其他單頁庫相比,它們的職責更清晰,也易于理解。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303);單頁Web應用作為新一代Web模式,為用戶提供了更流暢的體驗滿足感...
摘要:但目前來看,單頁應用在技術實現和體驗上還有更大的發展空間,而這就是所要推進的。模塊化頁面模塊化單頁應用的特點之一是將頁面劃分為多個模塊,跳轉時更新模塊的內容。與其他單頁庫相比,它們的職責更清晰,也易于理解。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303);單頁Web應用作為新一代Web模式,為用戶提供了更流暢的體驗滿足感...
閱讀 1200·2021-11-24 11:16
閱讀 3428·2021-11-15 11:38
閱讀 1920·2021-10-20 13:47
閱讀 546·2021-09-29 09:35
閱讀 2192·2021-09-22 15:17
閱讀 1013·2021-09-07 09:59
閱讀 3374·2019-08-30 13:21
閱讀 2904·2019-08-30 12:47