有没有办法让一个元素在移动浏览器的视口上居中?
这意味着,当用户捏合缩放时,他们仍应在其视口中心看到该元素(比如说一个样式为窗口的 div)。
事实证明,捏缩放会在我的 ipad mini 和我的 android 4.something 设备上的 ios 浏览器中触发一个窗口滚动事件。
$(window).on("resize scroll", function () {
clearTimeout(pinchToZoomCheckTimer);
pinchToZoomCheckTimer = setTimeout( function () {
var width = window.innerWidth || document.documentElement.clientWidth;
var height = window.innerHeight || document.documentElement.clientHeight;
dlgInner.width(width);
dlgInner.height(height);
dlgInner.css("top",window.pageYOffset+"px");
dlgInner.css("left",window.pageXOffset+"px");
}, 50);
});
这会将 div 集中在视口使用的确切位置上。由于它是透明的,它“有点”占据了整个视口。我读过一些浏览器报告了 window.innerWidth 的更多像素,但我可以忍受 ~20px 的位移。
http://jsfiddle.net/agilius/yFajk/show在我的 ipad mini 和 android nexus 上放大并在放大后滚动时工作。
您可以尝试将 div 定位固定,并使用边距和上/左的组合将其居中:
.center {
position:fixed;
z-index:999;
width:200px;
height:200px;
background:#4679BD;
top:50%;
margin-left:-100px;
margin-top:-100px;
left:50%;
}
JSFiddle:http: //jsfiddle.net/HGtQA/
我找不到使用 HTML\CSS 的直接方法。
您可以使用 JavaScript 检测页面缩放,然后计算相对于原始大小和缩放系数的绝对大小。
看看这个: 如何在所有现代浏览器中检测页面缩放级别? 有一个非常好的和通用的方法。
“他们仍然应该看到元素”是什么意思?如果用户缩放,他将只看到图像的一部分。但是,如果您愿意,可以使用此元禁用缩放:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />