CSS3 resize属性可以分配给任意元素。我正在寻找一种方法来检测这样的大小,比如说,divs(我不介意它目前只在Firefox中工作):
div {
resize: horizontal;
overflow: hidden;
}
不幸的是,onresize
事件似乎没有在div上触发。我如何在JavaScript中检测到这样一个用户示例化的大小调整发生了?
- 编辑:* FWIW我在Mozilla打开了一个bug报告。如果你想跟踪它:https://bugzilla.mozilla.org/show_bug.cgi?id=701648
6条答案
按热度按时间6ovsh4lw1#
调整大小就像一种风格的改变。因此,它可以用MutationObserver观察到。更具体的
ResizeObserver
可能更好:plicqrtu2#
DOMAttrModified
事件从这个答案中得到的想法,this jsFiddle似乎在Firefox 8中工作(如果你打开控制台)。kkbh8khc3#
由于
resize
事件显然不起作用(至少目前是这样),您可以尝试以下替代选项之一:1.使用
mousedown
、mousemove
和/或mouseup
的组合来判断div
是否正在调整大小。如果你想要真正的细粒度控制,你可以检查每个mousemove
事件,div是否调整了大小。如果你不需要,你可以根本不使用mousemove
,而只是测量mousedown
和mouseup
中的div
,并找出后者是否调整了大小。1.每200 ms左右轮询一次(取决于您的需要),并将当前大小与上次已知大小进行比较。参见
setTimeout()
。zaqlnxep4#
可以使用css-element-queries polyfill的
ResizeSensor
类https://github.com/marcj/css-element-queries
它允许您调用JavaScript函数来改变所有类型元素的大小,而不仅仅是
window
。它设置了一个真实的的传感器,而不是JavaScriptsetTimeout
轮询。这样使用:
支持的浏览器包括:所有包括IE6+。
nnsrf1az5#
这似乎对我很有效:
“使用mousedown、mousemove和/或mouseup的组合”
根据Felix的回答。
特别是在将自定义搜索结果面板与Dev Extremes Scroll View相结合并且您希望完全控制它时非常有用。
puruo6ea6#
根据this site,它只能在internet explorer9中工作。
试试这个小提琴:http://jsfiddle.net/maniator/3Zva3/