监测div大小变化_如何检测DIV的尺寸变化?

我有以下示例html,有一个DIV,其宽度为100%。 它包含一些元素。 在执行窗口调整大小时,内部元素可能会重新放置,并且div的尺寸可能会更改。 我问是否有可能挂钩div的尺寸更改事件? 以及如何做到这一点? 我目前将回调函数绑定到目标DIV上的jQuery resize事件,但是,没有控制台日志输出,请参见以下内容:

$('#test_div').bind('resize', function(){

console.log('resized');

});

#1楼

有一种非常有效的方法来确定元素的大小是否已更改。

该库具有ResizeSensor类,可用于调整大小检测。

它使用基于事件的方法,因此该死的速度很快,并且不会浪费CPU时间。

例:

new ResizeSensor(jQuery('#divId'), function(){

console.log('content dimension changed');

});

请不要使用jQuery onresize插件,因为它使用setTimeout()循环来检查更改。

这是缓慢且不够精确的 。

披露:我直接与此图书馆有联系。

#2楼

规范中仅存在Window.onResize ,但是您始终可以利用IFrame在DIV中生成新的Window对象。

请检查此答案 。 有一个新的小jquery插件 ,可移植且易于使用。 您始终可以检查源代码以了解其完成方式。

// (2) use the detectResizing plugin to monitor changes to the element's size:

$monitoredElement.detectResizing({ onResize: monitoredElement_onResize });

// (3) write a function to react on changes:

function monitoredElement_onResize() {

// logic here...

}

#3楼

我以为无法完成,但是后来我想到了,您可以通过style =“ resize:both;”手动调整div的大小。 为了做到这一点,您必须单击它,因此添加了一个onclick函数来检查元素的高度和宽度,并且它可以正常工作。 仅使用5行纯JavaScript(确保它可能更短) http://codepen.io/anon/pen/eNyyVN

οnclick="myFunction()">

WxH

This my example demonstrates how to run a resize check on click for resizable div.

Try to resize the box.

function myFunction() {

var boxheight = document.getElementById('box').offsetHeight;

var boxhwidth = document.getElementById('box').offsetWidth;

var txt = boxhwidth +"x"+boxheight;

document.getElementById("sizeTXT").innerHTML = txt;

}

#4楼

最好的解决方案是使用所谓的元素查询 。 但是,它们不是标准的,没有规范-如果您想这样做,唯一的选择是使用一种可用的polyfills /库。

元素查询背后的想法是允许页面上的特定容器响应提供给它的空间。 这将允许编写一次组件,然后将其放在页面上的任何位置,同时它将其内容调整为当前大小。 无论窗口大小是多少。 这是我们在元素查询和媒体查询之间看到的第一个区别。 每个人都希望在某个时候可以创建一个规范,以标准化元素查询(或达到相同目标的东西)并使它们本机,干净,简单且健壮。 大多数人都认为媒体查询非常有限,对模块化设计和真正的响应能力没有帮助。

有一些polyfills /库以不同方式解决问题(尽管可以称为替代方法,而不是解决方案):

我已经看到了针对类似问题的其他解决方案。 通常他们使用计时器或引擎盖下的窗口/视口大小,这不是真正的解决方案。 此外,我认为理想上应该主要在CSS中解决,而不是在javascript或html中解决。

#5楼

var el = new Clay('.element');

el.on('resize', function(size) {

console.log(size.height, size.width);

});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值