Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在移动浏览器上使元素在视口宽度和高度上居中?_Javascript_Css_Html - Fatal编程技术网

Javascript 如何在移动浏览器上使元素在视口宽度和高度上居中?

Javascript 如何在移动浏览器上使元素在视口宽度和高度上居中?,javascript,css,html,Javascript,Css,Html,有没有办法使元素在移动浏览器的视口中居中 这意味着,当用户收缩以进行缩放时,他们仍应在视口中心看到元素(比如样式为窗口的div)。您所说的“他们仍应看到元素”是什么意思?如果用户缩放,他将只看到图像的一部分。但如果需要,可以使用此元禁用缩放: <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 我找不到HTML\CS

有没有办法使元素在移动浏览器的视口中居中

这意味着,当用户收缩以进行缩放时,他们仍应在视口中心看到元素(比如样式为窗口的div)。

您所说的“他们仍应看到元素”是什么意思?如果用户缩放,他将只看到图像的一部分。但如果需要,可以使用此元禁用缩放:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

我找不到HTML\CSS的直接方法

您可以使用JavaScript检测页面缩放,然后计算相对于原始大小和缩放因子的绝对大小

看看这个:
有一种非常好且通用的方法。

您可以尝试定位固定的div,并使用边距和上/左组合将其居中:

.center {
    position:fixed;
    z-index:999;
    width:200px;
    height:200px;
    background:#4679BD;
    top:50%;
    margin-left:-100px;
    margin-top:-100px;
    left:50%;
}

JSFiddle:

事实证明,在我的ipadmini和安卓4.0设备的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的位移


在我的ipad mini和安卓nexus上放大后,在收缩缩放和滚动时工作

android 2.2Flat out上的相当多的bug禁用缩放对于真正想要缩放的人来说有点像是一个愚蠢的举动。是的,对于@Roko来说,这个示例代码只适用于iOS Safari。如果他找不到问题的解决方案,这只是一个解决方案。@Aliasse,谢谢,我正在使用类似的方法,当弹出框出现时,我正在替换metatag,基本上禁用缩放。这在android 4.0上的chrome浏览器中也可以使用。当页面缩放到元素溢出视口的位置时,您认为会发生什么情况?您是否尝试过“位置修复”?因为在我看来,这很简单,只需将浏览器的高度与元素的高度偏移即可。但是当你缩放时,整个点是放大到某一点,为什么你要保持一个元素在中间?@ JAMEHUTBER FYEAUDION <代码>位置:固定< /代码>对任何IOSNONE都不起作用,所以谢谢你的提示:)JAMEHUTBER这是上面的请求。我没有提出这个要求。我个人认为我们应该完全禁用缩放功能,并使用css媒体查询根据屏幕大小调整内容。由于这可能不是一个选项,我想知道我是否错过了任何机会。该块将在缩放后错位。我正在使用类似的css居中方法。它不适用于缩放。