3

这是我来自 Block Grid 示例的代码 http://foundation.zurb.com/docs/components/block-grid.html

<ul class="small-block-grid-2 my-grid">
  <li><img src="http://static4.businessinsider.com/image/50098bda69beddb65e000008-480/iphone-example-camera-photo.jpg"></li>
  <li><img src="http://foundation.zurb.com/docs/img/demos/demo2.jpg"></li>
  <li><img src="http://foundation.zurb.com/docs/img/demos/demo3.jpg"></li>
  <li><img src="http://foundation.zurb.com/docs/img/demos/demo4.jpg"></li>
</ul>

链接:http: //jsfiddle.net/qhoc/ckMEN/1/

我尝试处理的问题是图像大小不同。我的后端将强制拥有min width = x以及min height = y如何处理布局,以便:

  1. 如果宽度 < 高度:裁剪并居中高度
  2. 如果宽度 > 高度:裁剪并居中宽度

但是,所有图像必须具有相同的li大小。另外当窗口大小发生变化时如何处理,这会使裁剪变得混乱吗?

我的另一种选择是避免block-grid完全使用并且仅具有固定大小li. 那也可以。所以基本上li会根据屏幕大小改变wxh。

但如果它有效,我更喜欢玩这个把戏。

请帮忙。谢谢!

4

2 回答 2

5

通过将图像设置为,background-images您可以更好地控制<li>元素中图像的裁剪和定位。

这样做的一个缺点是您需要固定<li>元素的高度。尽管一些简单的 javascript 或媒体查询可以纠正这个问题。

HTML

<div class="row">
  <div class="small-12 small-centered columns">
    <ul class="small-block-grid-4 large-block-grid-4 my-grid">
      <li>
          <div style="background-image:url(http://static4.businessinsider.com/image/50098bda69beddb65e000008-480/iphone-example-camera-photo.jpg);"></div>
      </li>
      <li>
          <div style="background-image:url(http://foundation.zurb.com/docs/img/demos/demo2.jpg);"></div>
      </li>
      <li>
          <div style="background-image:url(http://foundation.zurb.com/docs/img/demos/demo3.jpg);"></div>
      </li>
      <li>
          <div style="background-image:url(http://foundation.zurb.com/docs/img/demos/demo4.jpg);"></div>
      </li>
    </ul>
  </div>
</div>

CSS

.my-grid li {
    display:block;
    height:150px;
    overflow:hidden;
}

.my-grid li > div {
    height:100%;
    width:100%;
    background-size:cover;
    background-position:center center;
}

编辑

<li>添加了一些 jQuery 来根据宽度调整高度。

$(document).ready(function(){

    function reheight() {
        $('.my-grid > li').each(function() {
            $(this).height($(this).width() * 0.75);
        });
    }

    reheight();

    $(window).resize(function(){
        reheight();
    });

});

这是一个完整的例子

于 2013-07-24T23:00:59.337 回答
1

您可以将每个图像插入到 div 中:

overflow:hidden;

并将图像定位在 div 的中心,然后:

$("img").each(function(){

    var width = $(this).width();
    var height = $(this).height();

    if(height < width){

        $(this).height($("#div").height()); //if the width > height, set the image height equal to the div height.. 
            //let's assume that this image is into the div with id="div"
    }
    else{
        $(this).width($("#div").width());
    }

});
于 2013-07-24T14:05:31.247 回答