在移动版Safari中,是否有可能相对于视口固定位置?正如许多人所指出的那样,position: fixed
无法使用,但Gmail刚刚推出了一种几乎符合我的要求的解决方案-请参见邮件视图上的浮动菜单栏。
通过JavaScript获取实时滚动事件也是一个合理的解决方案。
在移动版Safari中,是否有可能相对于视口固定位置?正如许多人所指出的那样,position: fixed
无法使用,但Gmail刚刚推出了一种几乎符合我的要求的解决方案-请参见邮件视图上的浮动菜单栏。
通过JavaScript获取实时滚动事件也是一个合理的解决方案。
只需两行代码即可实现此固定位置的div,它会在滚动时将div移动到页面底部。
window.onscroll = function() {
document.getElementById('fixedDiv').style.top =
(window.pageYOffset + window.innerHeight - 25) + 'px';
};
iOS 5支持使用position:fixed。
查看Google对此问题的解决方案。基本上,您需要使用JavaScript自己滚动内容。Sencha Touch还提供了一个库,可以以非常高效的方式获取此行为。
它对我有效:
function changeFooterPosition() {
$('.footer-menu').css('top', window.innerHeight + window.scrollY - 44 + "px");
}
$(document).bind('scroll', function() {
changeFooterPosition();
});
(44是我的进度条的高度)
尽管进度条只在滚动结束时移动...
// css
#sticky.stick {
width:100%;
height:50px;
position: fixed;
top: 0;
z-index: 1;
}
// jquery
//sticky nav
function sticky_relocate() {
var window_top = $(window).scrollTop();
var div_top = $('#sticky-anchor').offset().top;
if (window_top > div_top)
$('#sticky').addClass('stick');
else
$('#sticky').removeClass('stick');
}
$(window).scroll(function(event){
// sticky nav css NON mobile way
sticky_relocate();
var st = $(this).scrollTop();
// sticky nav iPhone android mobile way iOS<5
if (navigator.userAgent.match(/OS 5(_\d)+ like Mac OS X/i)) {
//do nothing uses sticky_relocate() css
} else if ( navigator.userAgent.match(/(iPod|iPhone|iPad)/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) ) {
var window_top = $(window).scrollTop();
var div_top = $('#sticky-anchor').offset().top;
if (window_top > div_top) {
$('#sticky').css({'top' : st , 'position' : 'absolute' });
} else {
$('#sticky').css({'top' : 'auto' });
}
};
<meta name="viewport" content="width=320, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
height=device-height
有助于防止页面上本来不存在的额外页脚填充。菜单栏高度增加了视口高度,导致固定背景变得可滚动。http://www.quirksmode.org/blog/archives/2013/12/position_fixed_1.html
我们的解决方案是在用户缩放时在“position:fixed”和“position:absolute”之间切换。这将替换我们的“浮动”标题,使其具有可预测的行为,这对于可用性非常重要。当缩放时,行为不是我们想要的,但用户可以通过反向缩放轻松解决这个问题。// On iOS, "position: fixed;" is not supported when zoomed, so toggle "position: absolute;".
header = document.createElement( "HEADER" );
document.body.appendChild( header );
if( navigator.userAgent.match( /iPad/i ) || navigator.userAgent.match( /iPhone/i )) {
addEventListener( document.body, function( event ) {
var zoomLevel = (( Math.abs( window.orientation ) === 90 ) ? screen.height : screen.width ) / window.innerWidth;
header.style.position = ( zoomLevel > 1 ) ? "absolute" : "fixed";
});
}
position:fixed;top:50%;left:50%;
。 - testing