我的页面上有一个文本区域,上面有resize:both;
我希望只有在用户调整样式大小时才能将样式应用于该文本区域。最好我希望能够使用 CSS 做到这一点,但我认为没有伪选择器或方法仅适用于纯 CSS。我错了吗?
如果做不到这一点,是否有我可以在jQuery中使用的事件?
将文本区域重置为原始大小的最佳方法是什么?这会再次与jQuery一起使用吗?
非常感谢。
在不使用任何其他库的情况下,可以为文本区域创建自己的调整大小事件,如下所示:
演示 js小提琴
$('textarea').on({
mousedown: function(){
$(this).data('size', $(this).width + '*' + $(this).height());
},
mouseup: function(){
if($(this).data('size') != $(this).width + '*' + $(this).height())
$(this).triggerHandler('resize');
},
resize: function(){
console.log('textarea resized!');
}
});
发出 resize 事件之前,您需要先使文本区域可调整大小。你可以通过使用jQuery UI resizeable()来做到这一点,你可以在其中调用resize事件。
.CSS
.resizing {
background: #f2f2f2;
border: 1px solid #4cf;
}
.JS
$("textarea").resizable({ // Making it resizables triggers resize associated events
resize: function() {
$(this).addClass('resizing'); // Add style while resizing
},
stop: function() {
$(this).removeClass('resizing'); // Remove style after resize finishes
}
});
这是一个演示
你可以试试这个。
$("#mytextarea").resizable({
resize: function() {
$(this).css("resize","both");
}
});
http://jsfiddle.net/gR9UV/