enmi12/glossaire/_posts/custom-layout-modes/2011-07-07-masonry-corner-stamp.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: Masonry corner stamp
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: custom-layout-modes
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
  .corner-stamp {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    width: 280px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    height: 340px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    padding: 10px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    margin: 10px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
    float: right;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    background: red;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    color: white;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    -webkit-border-radius: 5px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
       -moz-border-radius: 5px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
            border-radius: 5px;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
</style>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
<section id="copy">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
  <p><a href="../docs/layout-modes.html#modified_layout_modes">Modified masonry layout mode</a> for corner stamp. An element can be "stamped" in the right top corner.</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
  <p>Set <code>cornerStampSelector</code> within <code>masonry</code> options. <code>itemSelector</code> needs to be set as well.</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
{% highlight javascript %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
$('#container').isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
  itemSelector: '.item',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
  masonry: {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    columnWidth: 120,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    cornerStampSelector: '.corner-stamp'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
{% endhighlight %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
</section>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
<section id="options" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
  {% include filter-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
  {% include sort-buttons.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
  <h3>Etc</h3>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
  <ul id="etc" class="clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    <li id="toggle-sizes"><a href="#toggle-sizes">Toggle variable sizes</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    <li id="insert"><a href="#insert">Insert new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    <li id="append"><a href='#append'>Append new elements</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    <li id="shuffle"><a href='#shuffle'>Shuffle</a></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
  </ul>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
</section> <!-- #options -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
<div id="container" class="clickable clearfix">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
  <div class="corner-stamp">corner stamp here.</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
  {% for elem_number in site.best_of_order %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    {% assign element = site.elements[elem_number] %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    {% include element-partial.html %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
  {% endfor %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
</div> <!-- #container -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
<script src="../{{ site.jquery_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
<script src="../{{ site.isotope_js }}"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
<script src="../js/fake-element.js"></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
<script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
  $.Isotope.prototype._masonryResizeChanged = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
  };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
  $.Isotope.prototype._masonryReset = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    // layout-specific props
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    this.masonry = {};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    this._getSegments();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    var i = this.masonry.cols;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    this.masonry.colYs = [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    while (i--) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
      this.masonry.colYs.push( 0 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    if ( this.options.masonry.cornerStampSelector ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
      var $cornerStamp = this.element.find( this.options.masonry.cornerStampSelector ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
          stampWidth = $cornerStamp.outerWidth(true) - ( this.element.width() % this.masonry.columnWidth ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
          cornerCols = Math.ceil( stampWidth / this.masonry.columnWidth ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
          cornerStampHeight = $cornerStamp.outerHeight(true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
      for ( i = Math.max( this.masonry.cols - cornerCols, cornerCols ); i < this.masonry.cols; i++ ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
        this.masonry.colYs[i] = cornerStampHeight;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
  };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
  $(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    var $container = $('#container');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    {% include random-sizes.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    $container.isotope({
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
      itemSelector : '.element',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
      masonry : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
        columnWidth : 120,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        cornerStampSelector: '.corner-stamp'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
      },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
      getSortData : {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        symbol : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
          return $elem.attr('data-symbol');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
        category : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
          return $elem.attr('data-category');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
        number : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
          return parseInt( $elem.find('.number').text(), 10 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
        weight : function( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
          return parseFloat( $elem.find('.weight').text().replace( /[\(\)]/g, '') );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
        },
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
        name : function ( $elem ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
          return $elem.find('.name').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
    });
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 option-set-buttons.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
    {% include add-buttons.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
    {% include change-sizes.js %}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
    var $sortBy = $('#sort-by');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    $('#shuffle a').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
      $container.isotope('shuffle');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
      $sortBy.find('.selected').removeClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
      $sortBy.find('[data-option-value="random"]').addClass('selected');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
      return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
    });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
  });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
</script>