如何检测CSS3调整大小事件
How to detect CSS3 resize events
CSS3 resize属性可以分配给任意元素。我正在寻找一种方法来检测divs上的这种调整大小(我不介意它目前只在Firefox中工作(:
div {
resize: horizontal;
overflow: hidden;
}
不幸的是,似乎没有在div上触发onresize
事件。当这样的用户实例化的resize发生时,我如何在JavaScript中检测?
编辑:FWIW我在Mozilla上打开了一个错误报告。如果要跟踪它:https://bugzilla.mozilla.org/show_bug.cgi?id=701648
调整大小就像是一种样式更改。因此,它可以用突变观察者来观察。更具体的ResizeObserver
可能更好:
let observer = new ResizeObserver(function(mutations) {
console.log('mutations:', mutations);
});
let child = document.querySelector('textarea');
observer.observe(child);
<textarea></textarea>
收听DOMAttrModified
事件。根据这个答案,这个jsFiddle似乎可以在Firefox8中工作(如果你打开控制台(。
由于resize
事件显然不起作用(至少目前(,您可以尝试以下替代选项之一:
- 使用
mousedown
、mousemove
和/或mouseup
的组合来判断div
是否正在调整大小。如果您想要真正细粒度的控制,您可以在每个mousemove
事件中检查div的大小。如果您不需要,您可以简单地根本不使用mousemove
,只需测量mousedown
和mouseup
中的div
,并确定后者中是否调整了其大小 - 每200毫秒左右轮询一次(根据您的需要(,并将当前大小与上次已知大小进行比较。参见
setTimeout()
您可以使用css元素的ResizeSensor
类从查询polyfill
https://github.com/marcj/css-element-queries
它允许您对所有类型的元素(不仅仅是window
(的大小更改调用javascript函数。它设置了一个真正的传感器,而不是javascript setTimeout
轮询。
这样使用:
new ResizeSensor($('#myelement'), function() {
console.log("myelement's size has changed");
});
支持的浏览器有:全部包括IE6+。
这似乎对我很有效:
$("body").on('mousedown mousemove', ".resizeItem", function () {
console.log($(this).height());
})
"使用mousedown、mousemove和/或mouseup的组合">
按照Felixs的回答。
当将自定义搜索结果面板与Dev Extremes Scroll View相结合,并且您希望完全控制它时,特别有用。
$("body").on('mousedown mousemove', ".scrollContainer", function () {
var h = $(this).height() - 20;
$(".scrollArea").dxScrollView('instance').option('height', h);
});
根据这个网站,它只在InternetExplorer9中工作。
试试这把小提琴:http://jsfiddle.net/maniator/3Zva3/
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- Chrome应用程序调整窗口大小保持纵横比
- 如何自动调整标签的高度以适应内容
- 导航栏没有调整到浏览器屏幕的大小
- 调整屏幕大小后不显示子菜单
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 合并两个数组,重新调整循环js
- Morris.js折线图x轴标签在调整大小后消失
- 关键帧之间的css3动画延迟
- 调整缩放窗口高度提升缩放
- 调整屏幕大小时更改属性值
- 尝试创建一个具有z-index的堆叠菜单'使用HTML5/CSS3/JS
- 如何针对Android股票/本地浏览器来调整CSS
- 计算CSS3缩放框在另一个框中的最高位置
- JQuery如何像css3一样进行条件调整大小
- 如何检测CSS3调整大小事件
- requestAnimationFrame可以轻松地在IE 9+中调整DIV的大小(没有jQuery或CSS3)
- JavaScript调整大小w/ CSS3问题