【问题标题】:Scaling images to 16:9 aspect ratio将图像缩放到 16:9 纵横比
【发布时间】:2014-08-01 04:44:01
【问题描述】:

我有一个background image which is getting scaled,,但问题是在较小的分辨率下它会变得拉伸并且看起来更丑。

.bcg {
    background-position: center center;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    height: 100%;
    width: 100%;
}
/* Slide 1 */
#slide-1 .bcg {background-image:url('../img/bcg_slide-1.png'); 
             background-size: 100% 100%}

HTML 标记

        <section id="slide-1" class="homeSlide">
            <div class="bcg">
                <div class="hsContainer">
                    <div class="hsContent">
                        <h2>Hello1</h2>                         
                    </div>
                </div>
            </div>
        </section>

如果我使用background-size: 100% auto;,那么它不是perfectly fitting the entire window。是否有任何解决方案可以使 div 中的 background-image 适合所有 resolutionssizes

【问题讨论】:

  • background-size: contain
  • 你试过"background-size": "contain" or "cover"
  • 两者都不起作用...
  • 您是否在移动版 Safari 中看到了这个问题? background-size: cover 有点不靠谱。如果是这样,您可能会发现 this earlier question 很有帮助。

标签: html css responsive-design


【解决方案1】:

从幻灯片中删除背景大小,让 .bcg 类的背景大小:cover 起作用。 Cover 将保持纵横比,并调整图像大小,使其最小,同时仍覆盖整个区域。 Contain 的工作方式类似,但会调整其大小,以便其中一个维度覆盖整个区域。

【讨论】:

    【解决方案2】:

    background-position: contain; 确实有效。但是,您需要稍微调整一下 CSS 结构才能使百分比正常工作。

    html, body, #slide-1, .bcg {
        height: 100%;
    }
    
    #slide-1 .bcg {
        background: url('http://placekitten.com/g/1600/900') top center no-repeat; 
        background-size: contain;
    }
    

    http://jsfiddle.net/CPBy2/1/


    或者,如果您确实需要将 DIV 缩放为 16:9,以便其他内容在页面上流畅地流动,您也可以使用填充技巧来做到这一点。

    #content {
        position: relative;
        background: url('http://placekitten.com/g/1600/900') top center no-repeat;
        background-size: contain;
    }
    
    #content:after {
        content: "";
        display: block;
        padding-top: 56.25%;
    }
    
    <div id="content"></div>Content after
    

    http://jsfiddle.net/46A5R/

    【讨论】:

    • 它可以工作,但是当我重新调整大小时,两种情况下的高度都不会 100%
    • 所以你想要一个 1600x900 的 div 缩放以适应垂直方向?还是您的意思是由于 HTML 和 BODY 标记上的默认边距/填充,图像不会顶部和底部?
    • 你想要一个 1600x900 的 div 缩放以垂直适应 - 是的
    • 我知道垂直缩放 div 的唯一方法是使用 Javascript。由于填充(甚至顶部和底部填充)基于元素的宽度,而不是高度,因此基于垂直高度缩放 ​​div 不适用于 CSS。你可以使用背景尺寸:封面;这可能就是你要找的东西jsfiddle.net/CPBy2/2
    猜你喜欢
    • 2019-03-19
    • 2017-07-30
    • 2019-07-26
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多