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.