【发布时间】:2014-11-29 09:08:30
【问题描述】:
我正在尝试解决移动浏览器上 css“位置:固定”属性的问题。我有一个固定的 div:
<div id="logo">
...other content here...
</div>
用css:
#logo{
position: fixed;
-webkit-backface-visibility: hidden;
bottom: 100px;
right: 0px;
width: 32px;
height: 32px;
}
因此,通常行为正是所需的行为,div 位置始终位于窗口的右下角,与滚动位置无关。 我的问题是,在移动浏览器上,当用户缩放页面时,在一定缩放级别后,div 的位置是错误的(有时 div 会从窗口消失)。
我知道移动浏览器不能很好地支持固定位置,但我想知道是否有一些解决方法。我尝试使用此 js 代码 onScroll 事件:
window.addEventListener('scroll', function(e){
drag.style['-webkit-transform'] = 'scale(' +window.innerWidth/document.documentElement.clientWidth + ')';\\I want to avoid zoom on this element
var r = logo.getBoundingClientRect();
var w = window.innerWidth;
var h = window.innerHeight;
if(r.right != w){
rOff = r.right - w;
logo.style.right = rOff;
}
if(r.top+132 != h){\
tOff = r.top + 132 - h;
logo.style.bottom = tOff;
}
});
不幸的是,代码似乎返回了错误的位置。
有人有什么建议吗?
【问题讨论】:
-
能否修复视口以使用户无法放大?
-
不,我想让用户可以缩放页面
-
如果没有工作示例,则不是 100%,但是您看到的错误定位可能是因为固定的 div 是相对于文档而不是固定到窗口的。因此,当您放大时,它仍然位于右下角,但不在屏幕上。你能把它放在一个jsfiddle吗?
-
我认为无法在 jsfiddle 上对其进行测试,因为代码是在结果 iframe 内执行的,因此除非缩放整个页面,否则无法缩放它
标签: javascript html css css-position mobile-browser