This example shows how to create a resizable element where the resize operation is constrained to a specific aspect ratio.
Setting up the Node
First we need to create an HTML element to make resizable.
<div id="demo">Resize Me</div>
Next, we'll give that element some CSS to make it visible.
#demo {
height: 100px;
width: 100px;
border: 1px solid black;
background-color: #8DD5E7;
position: relative;
padding: 1em;
margin: 2em;
}
Setting up the YUI Instance
Now we need to create our YUI instance and tell it to load the resize module. This module is a rollup that includes the resize-constrain submodule; that means we have access to the ResizeConstrained plugin.
YUI().use('resize');
Making the Node resizable
Now that we have a YUI instance with the resize module, we need to instantiate the Resize instance on this Node.
YUI().use('resize', function(Y) {
var resize = new Y.Resize({
//Selector of the node to resize
node: '#demo'
});
});
Adding the Constrained Plugin
Now we will plug ResizeConstrained into our Resize instance. This plugin will allow you to limit the resize dimensions in special ways.
YUI().use('resize', function(Y) {
var resize = new Y.Resize({
//Selector of the node to resize
node: '#demo'
});
resize.plug(Y.Plugin.ResizeConstrained, {
minWidth: 50,
minHeight: 50,
maxWidth: 300,
maxHeight: 300,
preserveRatio: true
});
});
In this case, we've used the constraint feature to specify minimum height and width for the element while setting preserveRatio to true, locking in the original aspect ratio for the element.