我发现的唯一解决方案是使用当前值设置最大和最小高度或宽度。
例:
foo.resizable({
maxHeight: foo.height(),
minHeight: foo.height()
});
但这确实很难看,尤其是当我必须以编程方式更改元素的高度时。
Answers:
尽管发帖人主要要求仅调整水平尺寸,但这个问题的确也要求垂直尺寸。
垂直情况有一个特殊问题:即使调整了浏览器窗口的大小,您可能也要设置一个相对宽度(例如50%)。但是,一旦您第一次调整元素的大小,jQuery UI就会以px为单位设置绝对宽度,并且相对宽度会丢失。
如果发现以下代码可用于此用例:
$("#resizable").resizable({
handles: 's',
stop: function(event, ui) {
$(this).css("width", '');
}
});
另请参见http://jsfiddle.net/cburgmer/wExtX/和jQuery UI resizable:单独使用东向手柄时的自动高度
px
。
height
为)''
resize
stop
一个非常简单的解决方案:
$( ".selector" ).resizable({ grid: [1, 10000] }); // horizontal
$( ".selector" ).resizable({ grid: [10000, 1] }); // vertical
这也适用于draggable()。示例:http://jsfiddle.net/xCepm/
{handles: 'se', grid: [10000, 1], autoHide: true}
解决方案是配置可调整大小的尺寸,以便取消不需要的尺寸更改。
这是一个仅可垂直调整大小的示例:
foo.resizable({
resize: function(event, ui) {
ui.size.width = ui.originalSize.width;
}
});
我想在浏览器调整大小时允许调整宽度,但是当用户更改元素的大小时不允许这样做,这很好:
foo.first().resizable({
resize: function(event, ui) {
ui.element.css('width','auto');
},
});
对我来说,同时具有句柄和resize
处理程序的解决方案都可以正常工作,因此用户可以看到句柄,但只能水平调整大小,类似的解决方案应适用于垂直。没有右下角的处理程序用户可能不知道他可以调整元素的大小。
当使用元素时,如果元素的大小从初始状态更改ui.size.height = ui.originalSize.height;
,它将无法正常工作。
foo.resizable({
// Handles left right and bottom right corner
handles: 'e, w, se',
// Remove height style
resize: function(event, ui) {
$(this).css("height", '');
}
});
为了获得更好的性能,$(this)
可以将其删除:
var foo = jQuery('#foo');
foo.resizable({
// Handles left right and bottom right corner
handles: 'e, w, se',
// Remove height style
resize: function(event, ui) {
foo.css("height", '');
}
});
Successfully working div position Vertically and horizontally
-------------------------------------------------------------
<head>
<style>
.resizable {
height: 100px;
width: 500px;
background: #09C;
}
.resizable-x {
height: 100px;
width: 500px;
background: #F60;
}
</style>
<script>
$(function() {
$( ".resizable" ).resizable({
grid: [10000, 1]
});
$( ".resizable-x " ).resizable({
grid: [1, 10000]
});
$( ".resizable" ).draggable();
});
});
</script>`enter code here`
</head>
<body>
<div class="resizable"></div>
<div class="resizable-x"></div>
</body>