Jump to Table of Contents

Example: Constrain a Resize

This example shows how to create a resizable element where the resize operation is constrained to a specific aspect ratio.

Resize Me

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.