UNPKG

packery

Version:

Gapless, draggable grid layouts

103 lines (82 loc) 2.73 kB
<!doctype html> <html> <head> <meta charset="utf-8"> <title>add/remove</title> <link rel="stylesheet" href="css/examples.css" /> <link rel="stylesheet" href="css/basics.css" /> </head> <body> <h1>add/remove</h1> <p> <button id="append">Append items</button> <button id="prepend">Prepend items</button> </p> <div class="container"> <div class="item w2"></div> <div class="item h4"></div> <div class="item w2"></div> <div class="item h4"></div> <div class="item"></div> <div class="item h2"></div> <div class="item w4"></div> <div class="item w4"></div> <div class="item w4"></div> </div> <script src="../bower_components/get-size/get-size.js"></script> <script src="../bower_components/desandro-matches-selector/matches-selector.js"></script> <script src="../bower_components/ev-emitter/ev-emitter.js"></script> <script src="../bower_components/fizzy-ui-utils/utils.js"></script> <script src="../bower_components/outlayer/item.js"></script> <script src="../bower_components/outlayer/outlayer.js"></script> <script src="../js/rect.js"></script> <script src="../js/packer.js"></script> <script src="../js/item.js"></script> <script src="../js/packery.js"></script> <script src="examples.js"></script> <script> function getItemFragment() { var fragment = document.createDocumentFragment(); var items = []; for ( var i=0; i < 3; i++ ) { var item = document.createElement('div'); var wRand = Math.random(); var widthClass = wRand > 0.85 ? 'w4' : wRand > 0.7 ? 'w2' : ''; var hRand = Math.random(); var heightClass = hRand > 0.85 ? 'h4' : hRand > 0.7 ? 'h2' : ''; item.className = 'item ' + widthClass + ' ' + heightClass; fragment.appendChild( item ); items.push( item ) } return { items: items, fragment: fragment }; } var container = document.querySelector('.container'); var pckry = window.packery7 = new Packery( container ); var appendButton = document.querySelector('#append'); appendButton.addEventListener( 'click', function( event ) { var itemFrag = getItemFragment(); container.appendChild( itemFrag.fragment ); pckry.appended( itemFrag.items ); }); var prependButton = document.querySelector('#prepend'); prependButton.addEventListener( 'click', function( event ) { var itemFrag = getItemFragment(); container.insertBefore( itemFrag.fragment, container.firstChild ); pckry.prepended( itemFrag.items ); }); container.addEventListener( 'click', function( event ) { var elem = event.target; if ( !matchesSelector( elem, '.item' ) ) { return; } pckry.remove( elem ); pckry.layout(); }); </script> </body> </html>