UNPKG

isotope-masonry-horizontal

Version:
243 lines (206 loc) 7 kB
<!doctype html> <html> <head> <meta charset="utf-8"> <title>horizontal layout modes</title> <link rel="stylesheet" href="sandbox.css" /> <style> body, html { height: 100%; } #container { position: relative; height: 70%; margin-bottom: 20px; } .element.alkali { width: 170px; height: 190px; } .element.alkaline-earth {} .element.lanthanoid { height: 190px; } .element.actinoid { width: 170px; } .element.transition { width: 220px; } .stamp { background: #DDD; border: 2px dotted; position: absolute; } .stamp1 { height: 30%; width: 80px; left: 30px; top: 10%; } .stamp2 { height: 200px; width: 40px; left: 15px; top: 100px; } </style> </head> <body> <h1>horizontal layout modes</h1> <div id="options"> <h2>Filter</h2> <div class="option-set" data-isotope-key="filter"> <button data-isotope-value="*">show all</button> <button data-isotope-value=".metal">metal</button> <button data-isotope-value=".post-transition">post-transition</button> </div> <h2>Sort</h2> <div class="option-set" data-isotope-key="sortBy"> <button data-isotope-value="original-order">original-order</button> <button data-isotope-value="number">number</button> <button data-isotope-value="name">name</button> <button data-isotope-value="symbol">symbol</button> <button data-isotope-value="weight">weight</button> <button data-isotope-value="category">category</button> </div> </div> <div id="container"> <div class="stamp stamp1"></div> <div class="stamp stamp2"></div> <div class="element transition metal " data-symbol="Hg" data-category="transition"> <p class="number">80</p> <h3 class="symbol">Hg</h3> <h2 class="name">Mercury</h2> <p class="weight">200.59</p> </div> <div class="element metalloid " data-symbol="Te" data-category="metalloid"> <p class="number">52</p> <h3 class="symbol">Te</h3> <h2 class="name">Tellurium</h2> <p class="weight">127.6</p> </div> <div class="element post-transition metal " data-symbol="Bi" data-category="post-transition"> <p class="number">83</p> <h3 class="symbol">Bi</h3> <h2 class="name">Bismuth</h2> <p class="weight">208.9804</p> </div> <div class="element transition metal " data-symbol="Cd" data-category="transition"> <p class="number">48</p> <h3 class="symbol">Cd</h3> <h2 class="name">Cadmium</h2> <p class="weight">112.411</p> </div> <div class="element alkaline-earth metal " data-symbol="Ca" data-category="alkaline-earth"> <p class="number">20</p> <h3 class="symbol">Ca</h3> <h2 class="name">Calcium</h2> <p class="weight">40.078</p> </div> <div class="element transition metal " data-symbol="Re" data-category="transition"> <p class="number">75</p> <h3 class="symbol">Re</h3> <h2 class="name">Rhenium</h2> <p class="weight">186.207</p> </div> <div class="element post-transition metal " data-symbol="Tl" data-category="post-transition"> <p class="number">81</p> <h3 class="symbol">Tl</h3> <h2 class="name">Thallium</h2> <p class="weight">204.3833</p> </div> <div class="element metalloid " data-symbol="Sb" data-category="metalloid"> <p class="number">51</p> <h3 class="symbol">Sb</h3> <h2 class="name">Antimony</h2> <p class="weight">121.76</p> </div> <div class="element transition metal " data-symbol="Co" data-category="transition"> <p class="number">27</p> <h3 class="symbol">Co</h3> <h2 class="name">Cobalt</h2> <p class="weight">58.933195</p> </div> <div class="element lanthanoid metal inner-transition " data-symbol="Lu" data-category="lanthanoid"> <p class="number">71</p> <h3 class="symbol">Lu</h3> <h2 class="name">Lutetium</h2> <p class="weight">174.9668</p> </div> <div class="element noble-gas nonmetal " data-symbol="Ar" data-category="noble-gas"> <p class="number">18</p> <h3 class="symbol">Ar</h3> <h2 class="name">Argon</h2> <p class="weight">39.948</p> </div> <div class="element alkali metal " data-symbol="Rb" data-category="alkali"> <p class="number">37</p> <h3 class="symbol">Rb</h3> <h2 class="name">Rubidium</h2> <p class="weight">85.4678</p> </div> <div class="element other nonmetal " data-symbol="N" data-category="other"> <p class="number">7</p> <h3 class="symbol">N</h3> <h2 class="name">Nitrogen</h2> <p class="weight">14.0067</p> </div> <div class="element actinoid metal inner-transition " data-symbol="Np" data-category="actinoid"> <p class="number">93</p> <h3 class="symbol">Np</h3> <h2 class="name">Neptunium</h2> <p class="weight">(237)</p> </div> <div class="element actinoid metal inner-transition " data-symbol="Ac" data-category="actinoid"> <p class="number">89</p> <h3 class="symbol">Ac</h3> <h2 class="name">Actinium</h2> <p class="weight">(227)</p> </div> </div> <script src="../bower_components/ev-emitter/ev-emitter.js"></script> <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/fizzy-ui-utils/utils.js"></script> <script src="../bower_components/outlayer/item.js"></script> <script src="../bower_components/outlayer/outlayer.js"></script> <script src="../bower_components/isotope/js/item.js"></script> <script src="../bower_components/isotope/js/layout-mode.js"></script> <script src="../bower_components/isotope/js/isotope.js"></script> <script src="../masonry-horizontal.js"></script> <script> var container = document.querySelector('#container'); var iso = window.iso = new Isotope( container, { itemSelector: '.element', stamp: '.stamp', layoutMode: 'masonryHorizontal', transitionDuration: '0.8s', masonryHorizontal: { rowHeight: 100 }, cellsByColumn: { columnWidth: 130, rowHeight: 140 }, getSortData: { number: '.number parseInt', symbol: '.symbol', name: '.name', category: '[data-category]', weight: function( itemElem ) { // remove parenthesis var value = itemElem.querySelector('.weight').textContent return parseFloat( value.replace( /[\(\)]/g, '') ); } } }); var options = document.querySelector('#options'); options.onclick = function( event ) { if ( !matchesSelector( event.target, 'button' ) ) { return; } // var opt = {}; var key = event.target.parentNode.getAttribute('data-isotope-key'); var value = event.target.getAttribute('data-isotope-value'); console.log( key, value ); iso.options[ key ] = value; iso.arrange(); }; iso.on( 'arrangeComplete', function( items ) { console.log( 'arrangeComplete', items.length ); }); </script> </body> </html>