【问题标题】:How do I have a background-image only scale down to fit its element, but not scale up?如何让背景图像仅按比例缩小以适合其元素,但不能按比例放大?
【发布时间】:2015-06-05 11:10:31
【问题描述】:

我有背景图像的 div 大小未知。它可以是 16 像素高,也可以是 1600 像素,以及介于两者之间的任何值。那里有一个大约 440 像素宽和 250 像素高的背景图像。

当 div 大于 250px 时,背景图片不会缩放。这是期望的行为。到目前为止一切顺利。

如果 div 的高度低于 250 像素,则背景图像将被剪裁。这是不需要的:我希望它缩放到 div 的较小高度。

我如何使用 css(或者,如果不可能的话,js)在背景图像不适合其 div 时缩小背景图像,但在 div 大于自身时从不放大?本质上,我想使用background-size: contain;,但将最大值设置为图像的高度。

我尝试了各种封面和包含,但都没有达到预期的效果。

This question 也无济于事,因为我无法在 div 上设置最大高度。它包含网站编辑器添加的内容。如果这很多,必须全部显示出来。

这是一个小提琴:http://jsfiddle.net/Bakabaka/2zetkrg0/

【问题讨论】:

  • 您能否展示一些代码示例。我理解您的要求,但发现很难在没有看到 /a 代码示例的情况下找到解决方案。干杯
  • 我怀疑您可能必须将背景图像包含在它自己的元素/div 中,并在 CSS 中将该元素设置为具有最大尺寸或 background-size:contain;

标签: css background-image scale background-size


【解决方案1】:

是否只是在要为选项提供背景的元素内插入img

您可以在图像上使用max-width:100%; max-height:100%;,这样它就不会超过容器尺寸,但仍会保持其纵横比并且不会比其原始尺寸大。接下来,您可以将图像绝对定位并给它z-index:-1,这样它就会在所有内容的后面并且不会受到它的影响。最后,如果您希望图像在其容器中居中,只需提供图像top:50%; left:50%; transform:translate(50%,50%);

这是一个演示:https://jsfiddle.net/ilpo/9dnqd6bc/1/

如果您想为背景设置最小尺寸,您甚至可以设置 min-widthmin-height

【讨论】:

  • 如果事实证明它不适用于纯 CSS,那将是我的后备方案。谢谢!
  • 我确实先尝试了div::before{content:url(background.jpg);,但不幸的是我找不到控制其尺寸的方法。
【解决方案2】:

试试这个,希望它会工作:)

container{
    background-image:  url("/assets/pic.jpg");
    background-size:   cover;   
    background-repeat: no-repeat;
    max-height:250px;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2016-09-15
    • 2012-02-17
    • 2019-10-03
    相关资源
    最近更新 更多