背景尺寸:封面在 Android 平板电脑上无法纵向工作

Posted

技术标签:

【中文标题】背景尺寸:封面在 Android 平板电脑上无法纵向工作【英文标题】:background-size: cover not working in portrait on Android tablet 【发布时间】:2013-01-30 07:49:46 【问题描述】:

我正在使用background-size 属性作为全宽和全高背景图像,但无法在 Nexus7 平板电脑的 Chrome 中以纵向视图完全覆盖它。它只覆盖宽度而不是高度,即它下面大约有200px 的空白区域。但是,当我在桌面 Chrome(或其他任何东西)和垂直显示器上查看该网站以模拟纵向尺寸时,它没有问题。

谁有解决办法?

CSS:

html  
    background: url(/images/post_bg.jpg) no-repeat center center fixed; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
    -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/post_bg.jpg', sizingMethod='scale')";

纵向屏幕截图:

【问题讨论】:

【参考方案1】:

我相信你可以通过在 CSS 中定义 html 和 body 标签的高度来修复它,如下所示:

html
 height:100%;
 min-height:100%;
 
body
 min-height:100%;
 

希望对你有帮助

【讨论】:

请注意,在我的情况下,我只需要html 中的heightmin-height 而不需要其他任何东西。【参考方案2】:

我知道这个问题已经很久没有提出来了,但我只是找到了我认为的答案。 对我来说,如果你在后台 CSS 指令中省略了“fixed”,那么 background-size:cover 可以在 android 浏览器和 Android Chrome 中使用。 经过一些测试后,我可以将图像作为 DIV 的背景:

#yourDivSelectorHere  
width: 100%;
height: 100%;  
position: fixed;
top: 0;
left: 0;
z-index: 0; 
background-image: url(/img/backgrounds/1.jpg) ;
background-repeat:no-repeat;
background-position: center center;
/* background-attachment: fixed; removed for Android */
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;

DIV 本身的位置是固定的(与背景图像相反),宽度和高度为 100%,并且放置在所有内容的后面。 与仅将背景图像添加到 HTML 或 BODY 相比,这需要付出一些额外的努力,但对我来说,它适用于我迄今为止测试过的所有浏览器(FF、Chrome、IE8、IE9、Safari)、iPad2 和 Android Chrome 以及安卓浏览器。

【讨论】:

好时机!这对我有用,应该是 IMO 接受的答案! 问题是背景尺寸可以做的远不止封面,这就是它不起作用的地方。【参考方案3】:

我会提供我找到的解决方案,以防将来有人遇到这种情况。我没有使用背景图片,而是使用了<img>

HTML:

<img id="full_bg" src="/images/post_bg.jpg" >

CSS:

#full_bg 
    height: auto;
    left: 0;
    min-height: 100%;
    min-width: 1024px;
    position: fixed;
    top: 0;
    width: 100%;


@media screen and (max-width: 1024px) 
    #full_bg 
        left: 50%;
        margin-left: -512px;
    

这适用于跨浏览器和移动设备。我找到了解决方案here。

【讨论】:

【参考方案4】:

好吧,我可以想出另一个解决方案: 我将它添加到正文中,您需要注意的是 background-attachment:fixed 是最后一条规则:

作品:

body 
        height:100%;
        width:100%;
        background-size:cover;
        background-repeat:no-repeat;
        background-position: center center;
        background-attachment:fixed;

无效:

body 
            height:100%;
            width:100%;
            background-size:cover;
            background-attachment:fixed;
            background-repeat:no-repeat;
            background-position: center center;

真的很遗憾,电话浏览器一般来说都有点错误......

【讨论】:

该死!!我一直在寻找这个。你知道为什么需要固定吗?我一直检查这个。 不,我不知道这是为什么。我认为这只是一个错误,因为它也只有在它是最后一条规则时才有效,这在技术上对我来说毫无意义......【参考方案5】:

使用 HTML 背景代替正文并给出 'height:100%'

html 
    height:100%;
    background: url(bg.jpg) no-repeat center center fixed;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;

【讨论】:

【参考方案6】:

我发现了另一种使用 jquery 东西的解决方案。该修复基于我们使用横向尺寸/比例的图像作为背景的假设。

step1:比较“窗口高度”和“页面内容高度”

step2:如果“窗口高度”小于“页面内容高度”

第三步:将这个应用到body标签

HTML

<body style="background-size: auto 'page content height'; background-attachment: scroll;">

脚本

var wHeight = $(window).height();
    var bodyHeight = $('page-content-element').height();
    if(wHeight < bodyHeight)
        $('body').attr('style', 'background-size: auto '+ (bodyHeight*1.1) +'px;background-attachment: scroll;');
    
    else
        $('body').removeAttr('style');
    

在页面加载和窗口调整大小时调用它

【讨论】:

你能解释一下什么是页面内容元素和页面内容高度吗? IE。你能举一个更完整的例子吗?

以上是关于背景尺寸:封面在 Android 平板电脑上无法纵向工作的主要内容,如果未能解决你的问题,请参考以下文章

是否有相当于背景大小的img(javascript):封面?

我的背景在手机和平​​板电脑上看起来不对,该怎么办?

Android Camera 2 预览尺寸和设备纵横比

在 Android 上针对不同的屏幕尺寸和密度重用可绘制图像

IB,保持 ImageView 居中,但随着屏幕尺寸增长,保持纵横比

Android 在保持纵横比的同时显示图像