jQuery Mobile:将页脚置于页面底部


71

有什么方法可以牢记jQuery Mobile框架的操作方式来固定页面,以便页脚始终与页面底部对齐-不管高度如何。

从目前的角度来看,jQuery页面的高度将发生变化,尤其是当设备从纵向旋转为横向时,因此解决方案必须考虑到这一点。

只是为了澄清-我不需要页脚位于视口的底部,而只是为了使默认页面高度不低于视口高度而工作。

谢谢。


这个工作对我来说:stackoverflow.com/questions/4724068/...
botbot

1
对我也有用 似乎最重要的答案已经过时了?
commonpike 2012年

Answers:


115

您可以在CSS文件中添加此代码:

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

因此,页面数据角色现在具有100%的高度,并且页脚处于绝对位置。

此外,Yappo还编写了一个出色的插件,您可以在这里找到:iScroll插件中的jQuery Mobile http://yappo.github.com/projects/jquery.mobile.iscroll/livedemo.html

希望你找到答案!

答案更新

现在,您可以使用该data-position="fixed"属性将页脚元素保持在底部。
文档和演示:http : //view.jquerymobile.com/master/demos/toolbar-fixed/


5
这解决了PC大小的显示器的问题。但是,在手机上,页脚现在大约停留在页面的一半位置。因此,我认为此解决方案无效。但是,我喜欢仅CSS的方法。
zzz 2012年

尝试了此操作后,页脚停留在屏幕底部,直到我尝试滚动。页脚与其他所有内容一起移动。不过,Yappo链接似乎确实起作用。
凯文·施罗德

@KevinSchroeder很好,您发现Yappo的解决方案有效!jQuery Mobile已更新了插件,我不知道它在您的项目中不起作用的原因。您运行什么版本?
菲利普(Philip)

2
我更喜欢position:fixed为页脚,我希望它总是在底部可用。
内森·

1
这个答案已经过时了-检查以下解决方案
merrick

61

由于这个问题有点陈旧,所以很多事情已经改变。

现在,您可以通过将其添加到页脚div中来获得此行为

data-position="fixed"

此处提供更多信息:http : //jquerymobile.com/test/docs/toolbars/bars-fixed.html

还要注意,如果将前面提到的CSS与新的JQM解决方案一起使用,将不会得到适当的行为!


2
应该使用jquerymobile 1.7+将其标记为正确答案
Sudipta Chatterjee 2013年

3
唯一令人烦恼的部分是,它似乎不断地漂浮在您内容的顶部,而不是在没有足够的内容来填补空白时仅停留在底部。
jocull

@SudiptaChatterjee:“使用jQuerymobile 1.7 +” ...很是一个占卜者...:P
SASM

Ahem-不知道这是否是一种夸奖:)
Sudipta Chatterjee

在Windows Phone 8.0 JQM / PG项目上,存在约50像素的间隙,您可以使用媒体查询来解决该间隙,但仍存在一些像素,其中页脚后面列出了“下溢”:-(...
GilesDMiddleton,2013年

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解决方案恕我直言
Joseph Victor Zammit

+1。否则,如果没有足够的空间,页脚将隐藏部分页面内容。
史密斯先生

5

固定基础

要在页眉或页脚上启用此行为,请将data-position="fixed"属性添加 到jQuery Mobile页眉或页脚元素。

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

2
这应该是答案
Cesar Bielich

3

2
不是我想要的方式。基本上,页面只会扩展到内容的高度,因此在具有高分辨率的台式机上,页脚将位于屏幕的一半。id希望它足够智能以进行扩展以填充额外的空间。
塞尔吉奥

我以为他们使用Beta版修复了该问题,如果没有,则可以始终使用CSS修复页面高度:100%
Phill Pafford

2

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

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

2

我以为我会在这里分享我唯一的CSS解决方案。这样,您可以避免为此使用JS的额外开销。

这不是固定位置的页脚。如果页面内容比屏幕高,页脚将不在屏幕上。我认为这样看起来更好。

主体以及.ui页的最小高度和高度对于防止页脚在过渡过程中上下跳跃是必需的。

可以使用最新的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;
}

它对我不起作用,但是jocull甚至更简单/精简的CSS解决方案也能正常工作:stackoverflow.com/a/14669899/1915920
Andreas Covidiot 2014年

这对我来说很有效(JQM 1.4.5),jocull的解决方案也可以使用,但是在我的测试案例中调整浏览器大小时,它存在跳跃问题。ArcadeRenegade顺利!顺便说一句。不要与data-position =“ fixed”混用,否则会造成混淆...
ob.yann

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');
        }
    });
}

1

添加data-position =“ fixed”并在CSS中添加以下样式将解决问题z-index:1;


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.