使用jquery对所有设备进行垂直对齐?

我发现在页面上垂直对齐一些元素是有问题的,而不改变其他元素布局。

这个问题在移动设备上被放大了。 如此多的屏幕尺寸,分辨率,肖像,风景……

var x=window.innerHeight - $('#myDiv').height(); $('#myDiv').css ('margin-top', x/2); 

这适用于所有设备,移动设备和桌面设备。 你认为这些方法有任何缺点吗?

据我了解,今天所有设备都支持JavaScript。 但是,某些设备是否可能支持JS但不支持jQuery?

您应该使用$('#myDiv').parent().height()而不是window.innerHeight ,因为如果您的#myDiv元素被另一个元素包装,您的方法可能无法正常工作。
您还可以将代码封装到jQuery plugin ,如下所示:

 jQuery.fn.verticalAlign = function () { return this .css("margin-top",($(this).parent().height() - $(this).height())/2 + 'px' ) }; 

然后你就可以使用它:

 $('#myDiv').verticalAlign(); 

is it possible that some device support JS but doesn't support jQuery ? 不,所有支持正确版本的JS必须兼顾jQuery ,因为jQuery的核心是纯JS
但是,如果要在浏览器屏幕中垂直对齐元素,可以使用以下代码:

 jQuery.fn.verticalAlignScreen = function () { return this .css("position", "absolute") .css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) + $(window).scrollTop()) + "px"); }; 

JQuery – 是一样的JavaScript! 它只是一个可以使用预编写函数的容器(框架)。 所以,如果JS工作–JQ工作。 但移动设备的不同之处在于Java Script引擎。 我可以说Safari JS引擎比Google好,这意味着你的Web应用程序将在iOS上运行得更快

实际上,如果你知道你的div的高度,你可以使用纯css,例如我有弹出窗口,高度为540px。 要在所有不同设备上垂直对齐,我会使用:

 .popup{ top:50%; margin-top:-270px; } 

水平对齐也是如此。 只有在那里你使用另一种造型。 例如,您的div宽度为480px:

 .popup{ left:50% margin-left:-240px; } 

另一种接近垂直对齐的方法,如果你不知道高度,并且不想关心它,则遵循jquery方法:

  var a = Math.round( $(".popup").height()/2 );//here we get half of our divs height $(".window_popup").css("margin-top", ( - a + "px" ) );//here we give to //variable negative value and get necessary result :)