【问题标题】:Object-fit: cover; alternative? [duplicate]适合对象:封面;选择? [复制]
【发布时间】:2013-11-12 02:44:40
【问题描述】:

我的页面上有一张图片,我想保持其比例,但会根据屏幕尺寸调整大小。我希望它使宽度和高度中的较小者完全适合元素,而较大的尺寸会溢出元素。

我找到了

object-fit: cover; 

适合我需要的风格,但很快发现对此的支持非常有限(几乎仅限于歌剧)。还有什么我可以用来实现这一点的吗?

提前非常感谢:)

【问题讨论】:

    标签: html image css


    【解决方案1】:

    如果您能够将此图像作为背景添加到页面中,那么您可以使用:

    background-size: cover;
    

    该属性也可以接受contain 值。尝试一下,你会发现不同的。

    cover 强制图像填充整个容器。这意味着如果图像的比例与容器的比例不匹配,图像将被裁剪。
    contain 强制图像适合容器。这意味着图像永远不会超出容器的范围。如果比例(图像和容器)不同,则图像两侧(左右或上下)会有空格。

    相应地支持covercontain 值:

    Chrome    Firefox   IE    Opera    Safari
    3.0       3.6       9.0   10.0     4.1
    

    【讨论】:

    • 非常感谢您的回复。我觉得自己像个白痴,甚至没有考虑将图像作为背景应用到 div,然后使用'background-size:cover;' .非常感谢您的帮助和回答:)
    • 我写了一个微型库,它自动将object-fit 的所有值的修复应用到许多浏览器:github.com/bfred-it/object-fit-images
    • 不要忘记添加:“background-position:center”,这样它就可以像“object-fit:cover”一样保持图像居中。
    【解决方案2】:

    我有类似的问题。我用 just CSS 解决了它。

    基本上Object-fit: cover 在 IE 中不起作用,它占用 100% 的宽度和 100% 的高度,并且纵横比失真。换句话说,我在 chrome 中看到的图像缩放效果不存在。

    我采用的方法是使用 absolute 将图像放置在容器内,然后使用以下组合将其放在中心

    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    

    一旦它在中心,我给图像,

    // For vertical blocks (i.e., where height is greater than width)
    height: 100%;
    width: auto;
    
    // For Horizontal blocks (i.e., where width is greater than height)
    height: auto;
    width: 100%;
    

    这使得图像得到Object-fit:cover的效果。


    这里是上述逻辑的演示。

    https://jsfiddle.net/furqan_694/s3xLe1gp/

    此逻辑适用于所有浏览器。

    【讨论】:

    • 值得一提的是,此解决方案会在图像中引入轻微的模糊
    • @JoãoAlves 如果我没记错的话,这完全取决于您的图像分辨率。如果不是这样,那么我很想知道为什么。请分享您的发现。
    • 这个答案stackoverflow.com/a/44168045/1424951 有助于理解原因。我正在寻求您的解决方案并注意到这种模糊,所以我只想让其他人知道我面临的问题!
    • 我明白了。感谢分享。但这增加了一个额外的复杂答案,尽管在所有情况下都可能不需要。但相当有趣。我之前没有注意到模糊。
    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多