#

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.