CSS将图像从各种比例标准化为4:3

时间:2015-03-10 21:29:43

标签: html css twitter-bootstrap

enter image description here

上面的图片显示了当我用各种图像填充我的引导程序图库时会发生什么。 html看起来像这样:

<ul class="row">
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/1920x1080"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/1920x1080"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/800x600"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/1920x1080"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/1920x1080"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/800x600"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/800x600"></li>
    <li class="col-lg-3 col-md-3 col-sm-6"><img class="img-responsive img-thumbnail" src="http://placehold.it/800x600"></li>
</ul>

有没有办法让图像标准化为4:3而无需预处理或使它们无响应?

2 个答案:

答案 0 :(得分:7)

您可以使用百分比padding技巧(相对于其容器宽度)设置元素的比率

因此,您必须将img元素替换为div,并将图像设置为背景。使用background-size:cover将缩放图像以填充其容器而不拉伸。当然会发生一些种植*)

所以你的html变成了

<ul class="row">
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/1920x1080')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/1920x1080')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/800x600')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/1920x1080')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/1920x1080')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/800x600')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/800x600')"></div>
  </li>
  <li class="col-lg-3 col-md-3 col-sm-6">
    <div class="img-responsive img-thumbnail ratio-4-3" style="background-image:url('http://placehold.it/800x600')"></div>
  </li>
</ul>

和你的CSS

/* CSS used here will be applied after bootstrap.css */
ul{
  list-style:none;
  margin:0;
  padding:0;
}
.ratio-4-3{
  width:100%;
  position:relative;
  background:url() 50% 50% no-repeat;
  background-size:cover;
  background-clip:content-box;
}
.ratio-4-3:before{
    display:block;
    content:"";
    padding-top:75%;
}

http://www.bootply.com/gpetrioli/thU89Ryoer

演示

答案 1 :(得分:-4)

将此添加到您的css:

img {
    width: 100%;
}