下面为引用,源代码有点问题,自己修改了一下。先做记录,回头再细修。

引用部分,但代码有问题

http://www.ptbird.cn/css-background-attachment--fiexed-no-work.html

一、问题

一个网站中使用了 background-attachment:fixed; 来控制背景图不随内容的滚动而滚动,使其固定大小。

我的背景图是作用在 body 上的。

在PC端可以起作用和一些安卓的机器上能够起作用,但是在iphone上没有效果。

二、原因

网上看了很多,都只说怎么解决,解决方法也有好用和不好用的,但是没有人解释为什么。

在 stackoverflow 上查找的时候发现的原因如下:

Fixed-backgrounds have huge repaint cost and decimate scrolling performance, which is, I believe, why it was disabled.

固定背景导致重绘的成本很高,并且滚动表现也不尽人意,所以在一些移动端是被禁止的。

三、解决

移动无法直接应用 background-attachment ,可以曲线救国。

有的推荐使用 javascript 去计算固定位置的,不过我采用的是 css 直接来控制,通过 :before 来控制:

body{
background-image: url(../img/wxfwh_bg_body.jpg);
background-repeat: no-repeat;
background-size:cover;
-webkit-background-size: cover !important;
-moz-background-size: cover !important;
-o-background-size: cover;
background-attachment:fixed;
z-index: -1;
}
body:before{
content: "";
position: fixed;
z-index: -1;
top:;
right:;
bottom:;
left:;
background-image: inherit;
-webkit-background-size: cover!important;
-o-background-size: cover;
background-size: cover!important;
}
 
 

这个回答的地址如下:

stackoverflow 的回答中使用的 height 的单位是 vh,相对于窗口的单位,100vh 自然是整个窗口,不过我因为作用在 body 上,所以用的是 height:100%

原理:

1. 使用 background-position:-9999px,-9999px 来隐藏原来的body的背景图

2. 使用 :before 在body之前添加内容

3. 实际上 :before 添加的内容中 background-image:inhert使用的是body的背景图,并且使用 fixed 定位,宽高为100%.

4. 将 :before 的z-index 设置为 -1 ,置于其他内容之下,这样子,会显示body:before的背景,body的背景实际上是不显示的。

可以在新标签中打开图片查看详细内容

background-attachment: fixed 在iphone设备失效的解决的更多相关文章

  1. 关于iPhone设备不同显示尺寸适配的一些方法

    关于iPhone设备不同显示尺寸适配的一些方法   ------关于适配的理解------ 1.什么是适配? 适配是对不同硬件和系统软件的适应,硬件包括屏幕显示,处理器,内存等等(目前主要是屏幕适配, ...

  2. ios5和ios6横竖屏支持及ipad和iphone设备的判断

    ios5和ios6横竖屏支持及ipad和iphone设备的判断 判断是ipad还是iphone设备.此定义在PayViewControllerDemo-Prefix.pch 定义如下: #define ...

  3. ios7 以后准确获取iphone设备的MAC(物理地址)

    通过参考 钉钉 项目,知道是通过wifi拿到路由的MAC地址.那么可不可以拿到iphone 设备的MAC 地址呢? 经过一番搜索,发现所有文章都是针对 ios 7 以前 可以拿到. 而且方法也都是同一 ...

  4. ios端position为fixed失效的解决办法

    关键代码 document.getElementById("searchInputbox").addEventListener('touchmove', handler, {pas ...

  5. iPhone设备及屏幕适配

    // // Common.h // 微信 // // #ifndef Common_h #define Common_h // iPhone设备及屏幕适配 //4的设备 #define KDevice ...

  6. margin-top失效的解决方法

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 我的是属于这种情况 按照网上的说法,我就是这个现象了 两个层box1和box2,b ...

  7. 前端问题——png图片在IE6下透明失效,解决办法

    今天,一位同事问我问题,png 图片在IE6下透明背景失效. 解决办法,在网上查了很多,最后还是采用两种方案来解决这个问题 1.把这个网页的png格式图片变更为gif格式的图片.问题解决 2.就是让这 ...

  8. [转]iOS Safari 中click点击事件失效的解决办法

    iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...

  9. iOS Safari 中click点击事件失效的解决办法

    问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document  ...

随机推荐

  1. Java tomcat Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost

    关于 下面问题是因为(8005, 8080, 8009) 被原tomcat占用了. Several ports (8005, 8080, 8009) required by Tomcat v9.0 S ...

  2. 使用Git Bash上传代码到新的分支

    1.进入想要提交的项目,点击鼠标右键,选择"Git Bash Here" 2.输入命令,查看当前所有分支 git branch -a 3.输入命令,新建分支 git checkou ...

  3. 163邮箱报错WARN: 535 Error: authentication failed.

    会让输入自定义授权码..用这个密码代替邮箱的密码,就可以发邮件了.

  4. 8 种常被忽视的 SQL 错误用法

      来源:db匠 yq.aliyun.com/articles/72501 sql语句的执行顺序: FROM <left_table> ON <join_condition> ...

  5. Tensorflow数学运算

    一.Tensor 之间的运算规则 1) 相同大小 Tensor 之间的任何算术运算都会将运算应用到元素级 2) 不同大小 Tensor(要求dimension 0 必须相同) 之间的运算叫做广播(br ...

  6. OS模块学习

    import os,sys s = os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 # print(s) # os.chdir('..') #改变当前工作目录 # s ...

  7. leetcode top 100 题目汇总

    首先表达我对leetcode网站的感谢,与高校的OJ系统相比,leetcode上面的题目更贴近工作的需要,而且支持的语言广泛.对于一些比较困难的题目,可以从讨论区中学习别人的思路,这一点很方便. 经过 ...

  8. JS常见兼容性问题

    兼容性问题:函数(方法)兼容 描述:部分W3C指定的函数,有部分老的浏览器不支持 解决: 条件判断,如果有,则使用,添加原型方法,例如 String 的 trim 方法 if(!String.prot ...

  9. python类的动态属性设置

    需求:根据入参,动态添加设置类的属性 实现: self.__setattr__ self.__getattribute__

  10. python_练习04

    选课系统 角色:学校.学员.课程.讲师 要求: 1.创建北京.上海2所学校 2.创建linux.python.go3个课程,linux.python在北京开,go在上海开3.课程包含,周期,价格,通过 ...