2011-07-28 385 views
67

有沒有什麼辦法,考慮到jQuery Mobile框架的運行方式,修復頁面以便頁腳始終與頁面底部對齊 - 無論高度如何。jQuery Mobile:將頁腳粘貼到頁面底部

由於jQuery頁面的高度將會改變,特別是當設備被旋轉到縱向時,所以解決方案必須考慮到這一點。

只是澄清 - 我不需要腳註在視口的底部,只是工作,以便默認頁面高度不低於視口高度。

謝謝。

+0

這個工作對我來說:http://stackoverflow.com/questions/4724068/how-to-keep-jquery-mobile-header-and-footer-fixed – botbot

+1

這對我來說工作。它似乎最好的答案是過時的? – commonpike

回答

108

你可以在你的CSS文件中添加此:

[data-role=page]{height: 100% !important; position:relative !important;} 
[data-role=footer]{bottom:0; position:absolute !important; top: auto !important; width:100%;} 

所以頁面數據角色現在有100%的高度,和頁腳是絕對位置。在iScroll插件 http://yappo.github.com/projects/jquery.mobile.iscroll/livedemo.html

希望你找到了答案 jQuery Mobile的:

而且Yappo已經寫了一個很好的插件,你可以在這裏找到!

的回答更新

您現在可以使用data-position="fixed"屬性,讓您的腳部構件上的底部。
文檔和演示:http://view.jquerymobile.com/master/demos/toolbar-fixed/

+5

這解決了PC大小顯示器的問題。但是,在手機上,現在頁腳在頁面的一半左右。因此,我不認爲這個解決方案有效。但是,我喜歡僅用CSS的方法。 – zzz

+0

試過這個,頁腳卡在屏幕的底部,直到我嘗試滾動。頁腳與其他所有內容一起移動。不過,Yappo鏈接確實有效。 –

+0

@KevinSchroeder你很高興找到Yappo的解決方案! jQuery Mobile已經更新了插件,我不知道它在你的項目中不起作用的原因。你運行什麼版本? – Philip

3
+2

不是我想要的樣子。基本上這個頁面只會延伸到內容的高度,所以在一個大分辨率的臺式機上,頁腳會坐在屏幕的一半。 id喜歡它足夠聰明,可以擴展以填充額外的空間。 – Sergio

+0

我以爲他們修正了測試版,如果不是,你總是可以使用CSS來修正頁面高度:100% –

1

這個腳本似乎爲我工作...

$(function(){ 
    checkWindowHeight(); 
    $(document).bind('orientationchange',function(event){ 
     checkWindowHeight(); 
    }) 
}); 

function checkWindowHeight(){ 
     $('[data-role=content]').each(function(){ 
     var containerHeight = parseInt($(this).css('height')); 
     var windowHeight = parseInt(window.innerHeight); 
     if(containerHeight+118 < windowHeight){ 
      var newHeight = windowHeight-118; 
      $(this).css('min-height', newHeight+'px'); 
     } 
    }); 
} 
59

由於這個問題是慈祥的老人很多事情都變了。

您現在可以通過添加此頁腳DIV

data-position="fixed" 

更多的信息在這裏得到這樣的行爲: http://jquerymobile.com/test/docs/toolbars/bars-fixed.html

另外要注意,如果你用新的JQM一起使用前面提到的CSS解決方案,你不會得到適當的行爲!

+2

這應該被標記爲正確的答案,使用jquerymobile 1.7+ –

+3

關於這個問題唯一令人討厭的部分是,它似乎不斷浮現在你的內容的頂部,而不是僅僅在沒有太多內容來填補空白。 – jocull

+0

@SudiptaChatterjee:「使用jquerymobile 1.7 +」...相當一個預言家,你是......:P – SASM

2

以下行工作得很好......

var headerHeight = $('#header').height(); 
var footerHeight = $('#footer').height(); 
var footerTop = $('#footer').offset().top; 
var height = (footerTop - (headerHeight + footerHeight)); 
$('#content').height(height); 
15

就我而言,我需要使用像這樣保持在底部牽制頁腳如果沒有太多的內容,但不浮在不斷的一切像data-position="fixed"似乎做的頂部...

.ui-content 
{ 
    margin-bottom:75px; /* Set this to whatever your footer size is... */ 
} 

.ui-footer { 
    position: absolute !important; 
    bottom: 0; 
    width: 100%; 
} 
+1

最好的CSS解決方案恕我直言 –

+0

+1。否則,頁腳隱藏頁面內容的一部分 –

1

添加數據位=「固定」並添加下面的風格在CSS會解決這個問題的z-index:1;

2

我想我會在這裏分享我的CSS唯一的解決方案。這樣你可以避免使用JS的額外開銷。

這不是一個固定位置頁腳。如果頁面內容比屏幕高,頁腳將不在屏幕上。我認爲這樣看起來更好。

正文和.ui-page最小高度和高度是防止頁腳在轉換過程中上下跳動所必需的。

作品與最新版本的JQM截至目前,1.4.0

body, 
.ui-page { 
    min-height:100% !important; 
    height:auto !important; 
} 

.ui-content { 
    margin-bottom:42px; /* HEIGHT OF YOUR FOOTER */ 
} 

.ui-footer { 
    position:absolute !important; 
    width:100%; 
    bottom:0; 
} 
+0

它不適合我,但jocull的更簡單/減少的CSS解決方案工作正常:http://stackoverflow.com/a/14669899/1915920 –

+0

這項工作對我來說(JQM 1.4.5)和joolll的解決方案也能正常工作,但在測試用例中調整瀏覽器的大小時會出現跳躍問題,而ArcadeRenegade的平滑度!順便說一句,不要與data-position =「fixed」混合,這會導致混淆。 –

2

Fixed basics

若要能夠在頁眉或頁腳這種行爲, data-position="fixed"屬性添加到一個jQuery移動頁眉或頁腳 元素。

<div data-role="footer" data-position="fixed"> 
    <h1>Fixed Footer!</h1> 
</div>