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

use*_*827 5 html css twitter-bootstrap

在此输入图像描述

上图显示了当我用各种图像填充我的引导程序图库时会发生什么.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>
Run Code Online (Sandbox Code Playgroud)

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

Gab*_*oli 8

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

因此,您必须img用a 替换元素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>
Run Code Online (Sandbox Code Playgroud)

和你的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%;
}
Run Code Online (Sandbox Code Playgroud)

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