0

我使用了 jQuery 砌体脚本。在那个脚本中,我使用了角印章。我的代码如下所示。

  jQuery.Mason.prototype.resize = function() {
    this._getColumns();
    this._reLayout();
  };

  jQuery.Mason.prototype._reLayout = function( callback ) {
    var freeCols = this.cols;
    if ( this.options.cornerStampSelector ) {

      var containerWidth = this.cols * this.columnWidth - this.options.gutterWidth;
      this.element.css({ width: containerWidth });

      var $cornerStamp = this.element.find( this.options.cornerStampSelector ),
          cornerStampX = $cornerStamp.offset().left - 
            ( this.element.offset().left + this.offset.x + parseInt($cornerStamp.css('marginLeft')) );
      freeCols = Math.floor( cornerStampX / this.columnWidth );
    }
    // reset columns
    var i = this.cols;
    this.colYs = [];
    while (i--) {
      this.colYs.push( this.offset.y );
    }

    for ( i = freeCols; i < this.cols; i++ ) {
      this.colYs[i] = this.offset.y + $cornerStamp.outerHeight(true);
    }

    // apply layout logic to all bricks
    this.layout( this.$bricks, callback );
  };

但现在它显示“jQuery.Mason 未定义”。我的代码有什么问题,请建议我。

4

1 回答 1

0

我的代码也有类似的问题。我按照masonry.desandro.com上的说明进行操作,但该脚本无法使用 jQuery 1.8.3 运行。

我将 $.Mason.prototype._reLayout 函数更改为以下内容:

$.Mason.prototype._reLayout = function(callback) {
var freeCols = this.cols;
if (this.options.cornerStampSelector) {
  //jQuery Selector
  var cornerStamp = $(this.options.cornerStampSelector);
  var cornerStampX = cornerStamp.offset().left - (this.element.offset().left + this.offset.x + parseInt(cornerStamp.css('marginLeft')));
  var freeCols = Math.floor(cornerStampX / this.columnWidth);
}
//Reset columns
var i = this.cols;
this.colYs = [];
while (i--) {
  this.colYs.push( this.offset.y );
}
for (i = freeCols; i < this.cols; i++ ) {
  this.colYs[i] = this.offset.y + cornerStamp.outerHeight(true);
}
//Apply layout logic to all bricks
this.layout(this.$bricks, callback); };

如果您有与砖石示例中设置的 CSS 类似的 CSS,代码就可以工作!

于 2013-02-06T12:57:29.493 回答