【问题标题】:jQuery Mobile: Stick footer to bottom of pagejQuery Mobile:将页脚粘贴到页面底部
【发布时间】:2011-10-15 06:16:44
【问题描述】:

考虑到 jQuery Mobile 框架的运行方式,有什么方法可以修复页面,使页脚始终与页面底部对齐 - 无论高度如何。

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

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

谢谢。

【问题讨论】:

标签: css jquery-mobile


【解决方案1】:

你可以在你的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/

【讨论】:

  • 这解决了 PC 尺寸显示器的问题。然而,在手机上,页脚现在停留在页面的一半左右。因此,我认为这个解决方案行不通。不过,我确实喜欢纯 CSS 的方法。
  • 试过这个并且页脚粘在屏幕底部,直到我尝试滚动。页脚与其他所有内容一起移动。不过,Yappo 链接似乎确实有效。
  • @KevinSchroeder 很高兴您发现 Yappo 的解决方案有效! jQuery Mobile 已更新插件,我不知道它在您的项目中不起作用的原因。你运行什么版本?
  • 我更喜欢 position:fixed 的页脚,我希望它总是在底部可用。
  • 此答案已过时 - 请查看以下解决方案
【解决方案2】:

由于这个问题有点老了,很多事情都发生了变化。

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

data-position="fixed"

更多信息在这里: http://jquerymobile.com/test/docs/toolbars/bars-fixed.html

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

【讨论】:

  • 这应该被标记为正确答案,使用jquerymobile 1.7+
  • 唯一令人讨厌的部分是,当没有太多内容可以填补空白时,它似乎总是漂浮在您的内容之上,而不是仅仅停留在底部。
  • @SudiptaChatterjee:“使用 jquerymobile 1.7+”......你真是个预言家......:P
  • 咳咳 - 不确定这是不是恭维:)
  • 在 windows phone 8.0 JQM/PG 项目上,有大约 50 像素的间隙,您可以通过媒体查询来修复,但在页脚后面的列表“下溢”处仍有几个像素 :-(...
【解决方案3】:

就我而言,如果内容不多,我需要使用类似这样的东西将页脚固定在底部,但不要像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%;
}

【讨论】:

  • 最好的纯 CSS 解决方案恕我直言
  • +1。否则页脚会在空间不足时隐藏部分页面内容。
【解决方案4】:

Fixed basics

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

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

【讨论】:

  • 这应该是答案
【解决方案5】:

【讨论】:

  • 不是我想要的方式。基本上页面只会延伸到内容的高度,因此在具有大分辨率的台式机上,页脚将位于屏幕的一半。我喜欢它足够聪明,可以扩展以填充额外的空间。
  • 我以为他们用 beta 版解决了这个问题,如果没有,你总是可以使用 css 来修复页面高度:100%
【解决方案6】:

以下几行可以正常工作...

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

【讨论】:

    【解决方案7】:

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

    这不是固定位置的页脚。如果页面内容高于屏幕,页脚将在屏幕外。我觉得这样更好看。

    body 和 .ui-page min-height 和 height 是防止页脚在过渡期间上下跳跃所必需的。

    适用于目前最新的 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
    • 这对我有用 (JQM 1.4.5) 并且 jocull 的解决方案也有效,但是在我的测试用例中调整浏览器大小时它会出现跳跃问题。 ArcadeRenegade 的流畅!顺便提一句。不要与 data-position="fixed" 混合,这会引起混淆......
    【解决方案8】:

    这个脚本似乎对我有用...

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

    【讨论】:

      【解决方案9】:

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

      【讨论】:

        【解决方案10】:

        http://ryanfait.com/sticky-footer/

        您可以使用它并使用 jQuery 来更新元素的 css 高度以确保它保持原位。

        【讨论】:

          猜你喜欢
          • 2014-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 2016-04-21
          • 1970-01-01
          相关资源
          最近更新 更多