1

在我的网站上,在每一页的底部,我都有一组图像。该集合在 7.5 秒后淡入另一个集合。

问题是图像可以有不同的宽度,我需要根据每个图像的宽度计算出每个集合中要放入多少个图像。

我的网站总共有 960 像素宽,每张图片都需要有一个右侧边距,比如 15 像素。所以,如果我有 7 个图像的集合(假设集合中的最后一个图像没有右边距),我正在查看 870 像素的总允许宽度。

我可以检索每个图像的宽度,所以现在我需要一种方法将它们放在一个集合中,该集合具有自己的 div 和 id,以便我使用 jQuery 获取和淡出。

以下代码适用于相同宽度的图像。

JS:

<% @logo_group_size = 7 %>
<script type="text/javascript">
  <% unless (@logos || Logo.order(:position)).empty? %>
    var logo_sets = [<%= (@logos || Logo.order(:position)).in_groups_of(@logo_group_size, false).collect{|x| (@logos || Logo.order(:position)).in_groups_of(@logo_group_size, false).index(x)}.join(', ') %>];
    var logo_sets_max = <%= (@logos || Logo.order(:position)).in_groups_of(@logo_group_size, false).length - 1 %>;
    var logo_set_index = 0;
    function fadeLogoSets() {
      $("#logo_set_" + logo_sets[logo_set_index]).fadeOut();
      if (logo_set_index < logo_sets_max) { logo_set_index += 1; } else { logo_set_index = 0; }
      $("#logo_set_" + logo_sets[logo_set_index]).fadeIn();
      setTimeout("fadeLogoSets()" , 7500);
    }
    $(document).ready(function() {
      setTimeout("fadeLogoSets()", 7500);
    });
  <% end %>
</script>

看法:

<% unless (@logos || Logo.order(:position)).empty? %>
  <% maximum_width = (960 - ((@logo_group_size - 1) * 15)) %>
  <div class="logos">
    <h2>Logos</h2>
    <% (@logos || Logo.order(:position)).in_groups_of(@logo_group_size, false).each_with_index do |logo_set, index| %>
      <% set_width = 0 %>
      <%= content_tag(:div, :id => "logo_set_#{index}", :style => (index.zero? ? "display: block;" : "display: none;")) do %>
        <% logo_set.each_with_index do |logo, index| %>
          <% set_width += MiniMagick::Image.open(("http://#{request.env["HTTP_HOST"]}" + logo.image.home.to_s))["width"].to_i %>
          <% image_options = {} %>
          <% image_options.merge!({:style => "margin-right: 0px;"}) if index == (@logo_group_size - 1) %>
          <% if logo.link.blank? %>
            <%= image_tag(logo.image.home, image_options) %>
          <% else %>
            <%= link_to(image_tag(logo.image.home, image_options), logo.link, {:target => "_blank"}) %>
          <% end %>
        <% end %>
      <% end %>
    <% end %>
  </div>
<% end %>

我确实理解这个问题有些主观。

4

0 回答 0