Jquery 根据调整大小后的宽度计算调整大小前的元素宽度
要设置元素的边距,我要计算它在浏览器调整大小之前和之后的大小差异。如何在resize函数外部访问resizeW变量,或者在resize函数内部使用startW而不改变它Jquery 根据调整大小后的宽度计算调整大小前的元素宽度,jquery,Jquery,要设置元素的边距,我要计算它在浏览器调整大小之前和之后的大小差异。如何在resize函数外部访问resizeW变量,或者在resize函数内部使用startW而不改变它 例如:如果我得到的元素在调整大小之前的宽度是300像素,然后我触发调整大小。之后,元素为200像素。我想计算一下差额。300-200您的大小在函数内部定义。。。所以你有一个范围问题。。。请尝试以下操作: var startW = $('li').width(); // width before resize var resiz
例如:如果我得到的元素在调整大小之前的宽度是300像素,然后我触发调整大小。之后,元素为200像素。我想计算一下差额。300-200您的大小在函数内部定义。。。所以你有一个范围问题。。。请尝试以下操作:
var startW = $('li').width(); // width before resize
var resizeW = startW;
$(window).resize(function() {
resizeW = $('li').width(); // width after resize
var diff = (startW - resizeW); // startW and resizeW are the same
} );
$('li').css('margin-left',(startW - resizeW)); // resizeW is not defined
代码中的主要问题是,调整窗口大小时将调用resize,但您正在执行
$('li').css('margin-left',(startW-resizeW))代码>在声明resize侦听器之后,因此即使将var resizeW
放在外部,它也不会做任何事情
我认为在resize函数中,startW
不应该与resizeW
相同,因此必须有更多的东西。如果您想在每次调整窗口大小时更改左边距,只需将$('li').css('margin-left',(diff))代码>也在调整大小功能内。在初始加载时,这将不起作用,因为(startW-resizeW)
将产生NaN
。要解决这个问题,您可以执行var startW=resizeW=$(li).width()
。这似乎不起作用。StartW和currW总是一样的。@dcc这怎么可能?//你到底想在这里做什么?@dcc your'e试图使元素保持在相同的左侧位置,即使我们调整了窗口的大小?我想你问的是XY问题。你应该解释你想做什么以及为什么,因为你的问题太具体了,可能无法以最好的方式解决你的任务,虽然要实现总体思路,可能有比您现在所做的更好的解决方案。如果在调整大小之前,我得到的元素宽度为300像素,然后触发调整大小。后向元素为200像素。我想计算一下差额。300 - 200@dcc好的,这正是我在上面的评论中发布的演示链接中所看到的。演示的哪个部分不适合您?
var startW = $('li').width(); // width before resize
var resizeW = startW;
$(window).resize(function() {
resizeW = $('li').width(); // width after resize
var diff = (startW - resizeW); // startW and resizeW are the same
} );
$('li').css('margin-left',(startW - resizeW)); // resizeW is not defined
var $li = $('li'), // Cache your element
startW = $li.width(); // Store a variable reference
function setMarginDiff(){ // Create a function that modifies the margin
var currW = $li.width(),
diff = startW - currW ;
$li.css({marginLeft : diff});
}
setMarginDiff(); // Do on DOM ready
$(window).resize(setMarginDiff); // and on resize