【问题标题】:background-attachment: fixed interfering with background-size背景附件:固定干扰背景大小
【发布时间】:2013-05-12 00:10:57
【问题描述】:

我已缩放背景图像以适合其容器内,并且当 Modernizr 检测到浏览器不支持背景大小时,我有适当的后备(未显示)。

.wrap {
    width: 200px;
    height: 116px;
    position: absolute;
    background-image: url(image.jpg);
    background-attachment: fixed;
    background-position: 0 0;
    background-size: 200px 116px;
    background-repeat: no-repeat;
}

这是一个例子:http://jsfiddle.net/crowjonah/6xYNm/

它在 Chrome、Firefox、Safari(桌面和 iOS)中看起来很漂亮,但是我在某些 Android 实例上遇到了问题。

这是正确显示设备的 UA:

Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Xoom Build/IMM76L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30

这是一个不支持的设备的 UA:

Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; sdk Build/JB_MR1.1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

较新版本的 Android(模拟)将固定的背景图像缩放为全部放大和像素化以适应(我认为)视口,并且不注意其容器的大小或定义的 background-size

这一切都很好。其实就是这样MDN says will happen:

如果背景的附件是固定的,则背景定位区域是浏览器窗口的整个区域,不包括滚动条所覆盖的区域(如果存在)。

我的问题是我不知道如何合理地检测何时会或不会出现这种情况,以便我可以做出相应的调整。由于页面上的布局和动画,我真的希望为所有支持它的浏览器修复背景,如果我能弄清楚如何定位它,可以在这种外围情况下解决scroll

更新(2013 年 10 月 3 日): 为了防止混淆,我更新了 fiddle 以演示一个更现实和有问题的示例,证明我定义的更多 CSS 属性是正确的:http://jsfiddle.net/crowjonah/QtpVN/

【问题讨论】:

  • 作为参考,我的问题好像和this one一样。
  • 是的:jsfiddle.net/crowjonah/6xYNm/13 有问题的 Android 模拟器通过了 Modernizr 的 backgroundsize 测试。
  • 你试过这个吗CSS For All Web Browser 我在一些项目中使用了那个东西
  • 我想避免 UA 嗅探,因为我最终会导致网络过于广泛,或者不够广泛:如果我使用您链接到目标 Android 的类似 javascript 库的东西,移动设备,Safari,后备将适用于比实际需要更多的用户。或者,如果我匹配确切有问题的 UA,很可能会有其他变体遭受同样的问题。

标签: android mobile-safari css background-attachment


【解决方案1】:

您可以在 .works {...} 和 .does_not_work {...} 两个类中准备 CSS,然后通过 JavaScript 进行检查,以回答您遇到的问题。根据结果​​,JavaScript 将只针对上面的这些 CSS 类进行调整。最后,谁会在她的手机(即 Android)中关闭 JavaScript?你怎么看这个想法?问候,M。

【讨论】:

  • 我想这样做!知道如何使用 javascript 检查背景附件是否破坏了背景大小?
  • 嗨 Jonah,看起来很规范。在 Android 上,这是一个未解决的问题,不知道为什么(github.com/srobbin/jquery-backstretch/issues/188)。可能会问“你是机器人吗?”如果是这样,请提供一些不同的体验,永远不要忘记,我们有 1000 种可能性。同时,您是否发现了一些新的东西?注册。 M.
  • 这解释了如何检查背景图像的计算大小:stackoverflow.com/questions/7526907/…
【解决方案2】:

删除background-size 添加display:block;

再试一次

【讨论】:

【解决方案3】:

你试过了吗

背景图片:url(image.jpg); 背景尺寸:100%;

带走位置:绝对; 背景附件:固定;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
相关资源
最近更新 更多