在Rails中使用Masonry - 不移动窗口大小的框

时间:2012-12-20 13:28:59

标签: ruby-on-rails jquery-masonry

我尝试使用Masonry网站上的文件以及砌体轨道宝石,但我遇到了同样的问题。

基本上,当我调整浏览器窗口的大小时,框不会移动以适应新的页面大小。相反,我只是在浏览器中出现滚动条。

我知道文件正在加载正确,并选择正确的选择器,因为如果我更改masonry()参数中的列宽,当我加载页面时,这些框确实出现在不同的位置。

另外,我正在使用Bootstrap,如果这是相关的,但我已经命名了选择器,因此它们不会与为bootstrap保留的选择器冲突 - 例如使用#masonry-container代替#container。

非常感谢任何帮助,谢谢!!

的application.js:

//= require masonry/jquery.masonry

message_board /显示:

<div id="show-message-board">
    <%= render :partial => "show_message_board", :locals => { :messages => current_user.messages }, :remote => true %>  
</div>


<script>
$(function(){
  $('#masonry-container').masonry({
    // options
    itemSelector : '.item',
    columnWidth : 50,
    isAnimated: true
  });
});


</script>

_show_message_board.html.erb:

<div id="masonry-container" class="transitions-enabled infinite-scroll clearfix">
<% messages.each do |message| %>
  <div class="item">
    <p class="message_from"><%= message.user.first_name %> <%= message.user.last_name %>:</p>
    <p class="message_content"><%= message.content %></p>
  </div>
<% end %>

编辑:

我尝试过按照其他地方的建议使用以下内容,但仍然无效!:

$(function(){
    var $container = $('#masonry-container');
    $container.imagesLoaded( function(){
        $container.masonry({
            itemSelector : '.item'
        });
    });
});

1 个答案:

答案 0 :(得分:0)

以下是我让Masonry在我的Rails项目中工作的方法。也许这会对你有帮助......

  1. 我从网站下载了“jquery.masonry.min.js”文件并将其放在我的app \ assets \ javascripts目录中。

  2. 我补充说

    //= require jquery.masonry.min
    到我的application.js文件

  3. 我在app \ assets \ stylesheets目录下创建了一个单独的css文件,用于砌筑(只是为了保持整洁),名为“masonry.css.scss”。这是我的CSS(我使用的是“box”而不是你的“item”):

    .box {
      margin: 5px;
      padding: 5px;
      background: #D8D5D2;
      font-size: 11px;
      line-height: 1.4em;
      float: left;
      -webkit-border-radius: 5px;
      -moz-border-radius: 5px;
      border-radius: 5px;
      display: inline;
      width: 260px;
    }

    .box img { width: 100%; }

  4. 由于我在“home \ index.html.erb”文件中使用了代码,因此我在app \ assets \ javascripts“目录下创建了一个”home.js“文件。这是js代码我有:

  5. jQuery(document).ready(function () {
            var $container = $('#UserShoppingRequestsContainer');
            $container.imagesLoaded(function () {
                $container.masonry({
                    itemSelector:'.box',
                    isAnimated:true,
                    animationOptions:{
                        duration:750,
                        easing:'linear',
                        queue:false
                    }
                });
            });
        })
    

    1. 最后,在我的“home \ index.html.erb”文件中,我有类似的内容:

       <div id="UserShoppingRequestsContainer">
          <% @shopping_requests.each do |shopping_request| %>
             <div class="box col3" id="<%= shopping_request.id.to_s %>">
                <%= link_to image_tag(shopping_request.request_picture.url(:medium)),                    user_shopping_request_path(shopping_request.user, shopping_request) %>
                <p class="serif1_no_padding"><%= shopping_request.category.name %></p>
             </div>
          <% end %>
       </div>
      
    2. 我认为就是这样。