Moveable Tiles

by Rick Rose

HTML

<body>
    <div class="column">
        <div class="portlet" id="resizable">
            <div class="portlet-header">Feeds</div>
            <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
        </div>
        <div class="portlet">
            <div class="portlet-header">News</div>
            <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
        </div>
    </div>
    <div class="column">
        <div class="portlet">
            <div class="portlet-header">Shopping</div>
            <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
        </div>
    </div>
    <div class="column">
        <div class="portlet">
            <div class="portlet-header">Links</div>
            <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
        </div>
        <div class="portlet">
            <div class="portlet-header">Images</div>
            <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
        </div>
    </div>
</body>

CSS

body {
    min-width: 520px;
}
.column {
    width: 170px;
    float: left;
    padding-bottom: 100px;
}
.portlet {
    margin: 0 1em 1em 0;
    padding: 0.3em;
}
.portlet-header {
    padding: 0.2em 0.3em;
    margin-bottom: 0.5em;
    position: relative;
}
.portlet-toggle {
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -8px;
}
.portlet-content {
    padding: 0.4em;
}
.portlet-placeholder {
    border: 1px dotted black;
    margin: 0 1em 1em 0;
    height: 50px;
}

#resizable { width: 140px; height: 163px; min-height:163px;min-width:140px;}
#resizable h3 { text-align: center; margin: 0; }

JavaScript

$(function () {
    $(".column").sortable({
        connectWith: ".column",
        handle: ".portlet-header",
        cancel: ".portlet-toggle",
        placeholder: "portlet-placeholder ui-corner-all"
    });
    $(".portlet")
        .addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
        .find(".portlet-header")
        .addClass("ui-widget-header ui-corner-all")
        .prepend("<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>");
    $(".portlet-toggle").click(function () {
        var icon = $(this);
        icon.toggleClass("ui-icon-minusthick ui-icon-plusthick");
        icon.closest(".portlet").find(".portlet-content").toggle();
    });
    $(".portlet").click(function(){
        alert(($(this).children(".portlet-header").text()));
    });
   	$( "#resizable" ).resizable({
		grid: [170,10],
		resize: function(event, ui)
		{
			
		}
	});
});