enmi12/glossaire/_posts/demos/2011-09-30-fluid-responsive.html
author ymh <ymh.work@gmail.com>
Mon, 14 Oct 2019 17:39:30 +0200
changeset 7 cf61fcea0001
parent 0 d970ebf37754
permissions -rwxr-xr-x
resynchronize code repo with production
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
---
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
title: Fluid / responsive
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
layout: default
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
category: demos
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
---
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
<style>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
  /* percentage-based widths for fluid/responsive layout */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
  .element {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    margin: 5px 1%;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    width: 18%;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  .variable-sizes .element.width2 { width: 38%; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
  .element.large, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  .variable-sizes .element.large, 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
  .variable-sizes .element.large.width2.height2 {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    width: 58%;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
  #container {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    padding: 5px 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
</style>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
<section id="copy">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
  <p>This hack allows you to use percentage-based widths for item elements for fluid / responsive layouts.</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
{% highlight javascript %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
var $container = $('#container')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
// initialize Isotope
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
$container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
  // options...
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
  resizable: false, // disable normal resizing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
  // set columnWidth to a percentage of container width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
  masonry: { columnWidth: $container.width() / 5 }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
// update columnWidth on window resize
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
$(window).smartresize(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
  $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    // update columnWidth to a percentage of container width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    masonry: { columnWidth: $container.width() / 5 }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
{% endhighlight %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
</section>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
<section id="options" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
  {% include filter-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
  {% include sort-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
  <h3>Etc</h3>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
  <ul id="etc" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    <li id="toggle-sizes"><a href="#toggle-sizes">Toggle variable sizes</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    <li id="insert"><a href="#insert">Insert new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    <li id="append"><a href='#append'>Append new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    <li id="shuffle"><a href='#shuffle'>Shuffle</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
  </ul>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
</section> <!-- #options -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
<div id="container" class="clickable variable-sizes clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
  {% for elem_number in site.best_of_order %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    {% assign element = site.elements[elem_number] %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    {% include element-partial.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
  {% endfor %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
</div> <!-- #container -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
<script src="../{{ site.jquery_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
<script src="../{{ site.isotope_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
<script src="../js/fake-element.js"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
<script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
  $(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    var $container = $('#container');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    {% include random-sizes.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
      itemSelector : '.element',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
      // disable resizing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
      resizable: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
      // set columnWidth to a percentage of container width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
      masonry: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
        columnWidth: $container.width() / 5
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
      getSortData : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        symbol : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
          return $elem.attr('data-symbol');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
        category : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
          return $elem.attr('data-category');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
        number : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
          return parseInt( $elem.find('.number').text(), 10 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
        weight : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
          return parseFloat( $elem.find('.weight').text().replace( /[\(\)]/g, '') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
        name : function ( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
          return $elem.find('.name').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    // update columnWidth on window resize
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
    $(window).smartresize(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
      $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
        // set columnWidth to a percentage of container width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
        masonry: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
          columnWidth: $container.width() / 5
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
      });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    {% include option-set-buttons.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
    {% include add-buttons.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
    {% include change-sizes.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
    var $sortBy = $('#sort-by');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
    $('#shuffle a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
      $container.isotope('shuffle');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
      $sortBy.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
      $sortBy.find('[data-option-value="random"]').addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
</script>