索尼 Xperia Z1 移动设备上的背景图像被截断

Background image cut off on Sony Xperia Z1 mobile device

我正在构建一个需要整页背景图片的应用程序。我正在使用 Angular JSCSS3 作为背景图片。

在页面加载时,<body back-img> 自定义指令 被命中并运行以下代码:

var grindModule = angular.module('grindApp', ['ngRoute'])
grindModule.directive('backImg', function(){
    return function(scope, element, attrs){
    var url = ['./../static/images/pushup.jpg', './../static/images/work.jpg']
    var idx = Math.floor(Math.random() * url.length)
    element.css({
        'background': 'url(' + url[idx] +') no-repeat center center fixed',
        'background-size' : 'cover'
    });
};

生成随机索引,然后用于从存储它们的数组中获取随机图像url。然后它把 url 放在下面的代码 background: url().

页面加载后页面如下所示:

注意屏幕截图底部的黑白色 space。我不想要这个。此背景适用于除此特定 phone(据我所知)之外的所有设备。仅当我使用 Chrome 浏览器的移动版本时才会出现此错误。当我使用移动 Firefox 浏览器时,不会发生这种情况。似乎是 Chrome 具体的,但我可能错得很离谱。

以下是我的所有代码,如果您觉得这对您有帮助:Grind Github

我看过你的网站。

这是我的思路:

1) 该手机上的浏览器可能已过时,无法正确支持 "cover" 属性。但是这个问题是你已经添加了 "center center" 作为背景位置,所以,在最坏的情况下,浏览器 - 应该 - 显示与页面中心对齐的图像,它是全尺寸的中心,事实并非如此。

2) 图片甚至没有居中,这让我觉得 "body" 元素在高度设置为 100% 时无法正常工作。尝试将高度 100% 添加到您的 HTML 标签。

html,body {
    height: 100%;
}

3) 如果 #2 没有修复它,那么我会尝试在页面中添加另一个元素,就在开始 <body> 标记之后,如下所示:

<div class="bg-fullpage-wrapper"></div>

此元素的样式应为:

div.bg-fullpage-wrapper {
    /* Your current background stuff here ie:
    background: url("./../static/images/work.jpg") 50% 50% / cover no-repeat fixed;
    */
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
}

为此尝试从正文标签中删除高度 100%。当你这样做时,你必须修复元素的 z-index。

4) 如果这个 DIV 不起作用,那么我可能会开始考虑浏览器资源 运行 out 等,因为似乎为我加载的图像是对于 Web 格式来说非常庞大,缩小 from/to 该分辨率可能会出现问题。

这是一个 CSS 问题,不是 JS 问题。然而,除此之外,我不知道幕后发生了什么。

head {min-height: 100%}

这就是我所知道的。

在 Xperia Z2 上转载 Chrome https://developers.google.com/web/tools/chrome-devtools/debug/remote-debugging/remote-debugging