JQuery Mobile的固定工具栏和页脚栏消失?

我正在使用JQuery Mobile版本4.1a和使用:

data-position="fixed" 

在页眉和页脚上。

当我滚动的内容消失,然后再次出现。

有没有办法让它保持在它的位置,而不是每次我滚动页面消失?

谢谢

data-tap-toggle="false"到元素

要么

添加到Javascript

 $("[data-role=header]").toolbar({ tapToggle: false }); 

老版本的jQuery使用.fixedtoolbar()

jQuery Mobile Docs – 事件

我find了解决scheme。 我已经在我的项目上testing过它,它的function就像一个魅力。

这是url: https : //github.com/yappo/javascript-jquery.mobile.iscroll

这是与AppML使用的相同的JS解决scheme。

另外,这里是一个演示:

http://yappo.github.com/projects/jquery.mobile.iscroll/livedemo.html

ps:在我的项目上比在他们的实际演示中效果更好,所以值得一试。

享受:o)

我的项目中有jquery mobile iscroll的问题。 也许我使用的一些库是互相干扰的(我正在使用knockout和jquery.templates以及一些其他的东西)。 为我工作的解决scheme是jQuery的移动滚动视图。 演示可以在这里查看。

http://jquerymobile.com/test/experiments/scrollview/

代码在这里

https://github.com/jquery/jquery-mobile/tree/master/experiments/scrollview/

你需要包括

  • jquery.easing.1.3.js
  • jquery.mobile.scrollview.js
  • jquery.mobile.scrollview.css
  • scrollview.js

我最近使用了这个jquery移动项目,它在iphone 3gs上运行得非常好。 在我的旧HTC HTC magi上,它不能很好地工作,但没有任何jquery mobile在该设备上运行良好。 请注意,滚动视图正在试验中,并没有被添加到主jQuery的移动项目。

如果你没有运气与iScroll或jQuery的移动滚动视图,眨眼工具包是另一种select。

http://www.winktoolkit.org/tutorials/119/

就像iScroll一样,我无法得到这个与我的特定项目一起工作,但我不认为我真的努力尝试。

 <div data-role="footer" data-tap-toggle="false" data-theme="c" id="footer" data-position="bottom" > <h4 align="center" >copyright 2012 @KoshWTF</h4> <p>&nbsp;</p> </div> 

PS你也可以为标题做这个,如果你也有问题的话。 干杯

  $(document).bind("mobileinit", function() { $.support.touchOverflow = true; $.mobile.touchOverflowEnabled = true; $.mobile.fixedToolbars.setTouchToggleEnabled(false); }); 

这工作。 在Android 2.3testing

我想给Satch3000的答案添加一个评论,但我没有这个select – 不知道为什么。 我试过https://github.com/yappo/javascript-jquery.mobile.iscroll ,但不幸的是它不能用最新的jQuery移动库(http://code.jquery.com/mobile/1.0b1/jquery 。移动-1.0b1.min.js)

添加到您的页脚class="FixedFooter" ,并确保从页脚中删除data-position="fixed"

添加到你的<head>

 <style type="text/css"> .fixedFooter { position: fixed !important; left: 0px !important; right: 0px !important; bottom: 0px !important; z-index: 999 !important; } 

干杯。

$ .mobile.fixedToolbars.setTouchToggleEnabled(false)对我不起作用,但编辑javascript-jquery.mobile.iscroll文件似乎解决了Satch3000提出的iscroll解决scheme的问题,并由user418775查询。

改行(99)…

if($ .mobile.activePage.data(“iscroll”)==“enable”){

至…

(($ .mobile.activePage)&&($ .mobile.activePage.data(“iscroll”)==“enable”)){

我是法国人对不起,我的英语;

我用这个代码解决了这个问题,但它并不完美(必须适应你的情况):

 $("body").live('scrollstart', function (event, ui) { if ($(".divDel").length == 0) { //prevents the offset var taill = $("[data-role=header]").height(); $("[data-role=header]").after("<div class='divDel' style='height:" + taill + "px;'></div>"); $("[data-position=fixed]").css("display", "none"); } }).live('vmouseup scrollstop', function (event, ui) { $(".divDel").remove(); $("[data-position=fixed]").css("display", "block"); }); $.mobile.fixedToolbars.setTouchToggleEnabled(false); 

这对我来说是有效的:

ResizePageContentHeight()函数内添加一行:

 $page.children('.ui-footer').css('position','fixed'); 

就在之前:

 $content.height(wh - (hh + fh) - (pt + pb)) 

完整的代码:(在底部的jquery.scrollview.js中添加)

 function ResizePageContentHeight(page) { var $page = $.mobile.activePage, $content = $page.children( ".ui-content" ), hh = $page.children( ".ui-header" ).outerHeight() || 0, fh = $page.children( ".ui-footer" ).outerHeight() || 0, pt = parseFloat($content.css( "padding-top" )), pb = parseFloat($content.css( "padding-bottom" )), wh = window.innerHeight; $page.children('.ui-footer').css('position','fixed'); $content.height(wh - (hh + fh) - (pt + pb)); } $( ":jqmData(role='page')" ).live( "pageshow", function(event) { var $page = $( this ); $page.find( ".ui-content" ).attr( "data-" + $.mobile.ns + "scroll", "y" ); $page.find( ":jqmData(scroll):not(.ui-scrollview-clip)" ).each(function () { var $this = $( this ); if ( $this.hasClass( "ui-scrolllistview" ) ) { $this.scrolllistview(); } else { var st = $this.jqmData( "scroll" ) + "", paging = st && st.search(/^[xy]p$/) != -1, dir = st && st.search(/^[xy]/) != -1 ? st.charAt(0) : null, opts = { direction: dir || undefined, paging: paging || undefined, scrollMethod: $this.jqmData("scroll-method") || undefined }; $this.scrollview( opts ); } }); ResizePageContentHeight( event.target ); }); $( window ).bind( "orientationchange", function( event ) { ResizePageContentHeight( $( ".ui-page" ) ); }); 

这很简单。

  <div data-role="header" data-position="fixed" data-tap-toggle="false"> </div> 

这个对我有用。

如果你已经尝试了一切,而你仍然在努力解决这个问题(就像我一样),试着更新你的jQuery手机版本。 在v1.3.1 data-position="fixed"作品就像它应该开箱即用。 我没有看到这个build议,这是在尝试任何代码之前首先要检查,所以我想我会提到它。

我遇到了同样的问题,我可以通过将以下转换代码添加到固定位置元素( transform: translateZ(0);-webkit-transform: translateZ(0); )来强制浏览器使用硬件加速访问设备的graphics处理单元(GPU),使像素飞行。 另一方面,Web应用程序运行在浏览器的上下文中,这使软件可以执行大部分(如果不是全部)的渲染,从而导致转换的function减弱。 但是networking一直在追赶,大多数浏览器厂商现在都通过特定的CSS规则来提供graphics硬件加速。

使用-webkit-transform:translate3d(0,0,0); 将启动GPU进行CSS转换,使其更平滑(更高的FPS)。

注意: translate3d(0,0,0)根据所看到的不做任何事情。 它将对象在x,y和z轴上移动0px。 这只是一个强制硬件加速的技术。

 #element { position: fixed; ... /* MAGIC HAPPENS HERE */ transform: translateZ(0); -webkit-transform: translateZ(0); } 

在JQM 1.3.2这里是我的解决scheme

  1. 将data-tap-toggle =“false”添加到固定的页眉/页脚
  2. 添加下面的CSS以覆盖JQM CSS
 .ui-header-fixed.ui-fixed-hidden, .ui-footer-fixed.ui-fixed-hidden{ position: fixed !important; } header.ui-panel-animate { -webkit-transition: none !important; } header.slidedown.out.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slidedown.in.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slidedown.out { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slidedown.in { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slideup.out.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slideup.in.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slideup.out { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } header.slideup.in { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.ui-panel-animate { -webkit-transition: none !important; } footer.slidedown.out.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slidedown.in.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slidedown.out { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slidedown.in { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slideup.out.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slideup.in.reverse { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slideup.out { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } footer.slideup.in { -webkit-transform: none !important; -webkit-animation-name: none !important; -webkit-animation-duration: 0ms !important; transform: none !important; animation-name: none !important; animation-duration: 0ms !important; } 
 $.mobile.fixedToolbars.setTouchToggleEnabled(false); 

这将阻止工具栏在您点击/触摸页面时隐藏。