繁体   English   中英

具有CSS背景图片的宽高比div

[英]Aspect ratio divs with CSS background images

我在div中有相等长宽比(300px x 255px)的图像,占据了大约31%的宽度,以便在台式机/平板电脑上打印3列,然后在移动设备上显示全宽。 图像在div内缩放为100%,高度设置为自动。 我需要将其从img标签更改为背景图片

http://codepen.io/anon/pen/yYagJd

**HTML:**
<div class="hotels">
    <img src="http://www.telodesign.com/test/cavallo-300.jpg" alt=""><br>
Here's a title
</div>

<div class="hotels">
    <img src="http://www.telodesign.com/test/cavallo-300.jpg" alt=""><br>
Here's a title
</div>

<div class="hotels">
    <img src="http://www.telodesign.com/test/cavallo-300.jpg" alt=""><br>
Here's a title
</div>

**CSS:**
.hotels {
    display: inline-block;
    width: 31.8%;
    vertical-align: top;
    margin-bottom: 22px;

}

*emphasized text*.hotels img {
    width: 100%;
    height: auto;
}

有没有办法使这些图像成为背景图像,并且纵横比仍然决定div的高度-允许相同的响应缩放? 我希望有一种方法,如果可能的话,不使用.js。 可以仅使用CSS完成吗? 谢谢!

您可以使用%来设置填充宽度,以作为保持比例的参考。 例如: http : //codepen.io/anon/pen/vNXgJphttp://codepen.io/anon/pen/VvKPMM (下面的演示)

 .hotels { display: inline-block; width: 31.8%; vertical-align: top; margin-bottom: 22px; background: url(http://www.telodesign.com/test/cavallo-300.jpg) no-repeat red; background-size: 100% auto; } .hotels:before { content: ''; padding-top: 85%; float: left; } 
 <div class="hotels"> Here's a title</div> <div class="hotels"> Here's a title</div> <div class="hotels"> Here's a title</div> 

要么

 .hotels { display: inline-block; width: 31.8%; vertical-align: top; margin-bottom: 22px; background: url(http://www.telodesign.com/test/cavallo-300.jpg) no-repeat red; background-size: 100% auto; } .hotels:before { content: ''; padding-top: 85%; display: inline-block; vertical-align: bottom; margin-left: -0.25em; } p { display: inline-block; width: 100%; text-align: center; background: rgba(0, 0, 0, 0.5); margin: 0; padding: 1em; box-sizing: border-box; } 
 <div class="hotels"> <p>Here's a title</p> </div> <div class="hotels"> Here's a title</div> <div class="hotels"> Here's a title</div> 

您可以尝试使用视图宽度来保持比例调整大小:

HTML
<div class="hotels">
Here's a title</div>

<div class="hotels">
Here's a title</div>

<div class="hotels">
Here's a title</div>

CSS

.hotels {
  display: inline-block;
  width: 31.8vw;
  height: 26.3vw;
  vertical-align: top;
    margin-bottom: 22px;
  background-image:url(http://www.telodesign.com/test/cavallo-300.jpg);
   background-size: cover;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM