问题
正常情况下,用background
以下设置可以使背景图居中在屏幕中间,不随滚动条往下滑动
但是,听反馈说在 iPhone 手机上,那个背景图是整个篇幅的居中
示例代码
.background {
background-image: url(./logo.jpeg);
background-position: center;
background-attachment: fixed;
background-repeat: no-repeat;
background-size: 50%;
}
<div class="background">
<p>在国内汽车市场有着各种各样的车型,有时尚的,自然也有复古的,但往往复古车型的价格并不便宜。今天介绍的这款车型可以称得上是非常复古,也相当可爱,并且还拥有德国与英国两种血统。没错,今天介绍的这款新车就是宝马的子品牌MINI(图片|配置|询价)。我们所介绍的新车就是MINI,具体配置为2023款1.5TCOOPER弧光特别版,新车的厂家指导价27.38万元。值得一提的是,这款新车是今年刚刚上市的新款,也同样是一辆全进口的新车。</p>
<p>在国内汽车市场有着各种各样的车型,有时尚的,自然也有复古的,但往往复古车型的价格并不便宜。今天介绍的这款车型可以称得上是非常复古,也相当可爱,并且还拥有德国与英国两种血统。没错,今天介绍的这款新车就是宝马的子品牌MINI(图片|配置|询价)。我们所介绍的新车就是MINI,具体配置为2023款1.5TCOOPER弧光特别版,新车的厂家指导价27.38万元。值得一提的是,这款新车是今年刚刚上市的新款,也同样是一辆全进口的新车。</p>
......
</div>
正确效果(安卓手机√)
原因
background-attachment:fixed;
在 iPhone 上失效了。
Fixed-backgrounds have huge repaint cost and decimate scrolling performance, which is, I believe, why it was disabled.
固定背景导致重绘的成本很高,并且滚动表现也不尽人意,所以在一些移动端是被禁止的。 —— stackoverflow
解决方案
background-attachment:fixed;
用position:fixed;
替代,并且背景图写在元素::before
.background::before {
content: ""; /* content 一定要有,不然 ::before 不生效 */
background-image: url(./logo.jpeg);
background-position: center;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-repeat: no-repeat;
background-size: 50%;
}
iPhone 上能看到效果了,但是听说(毕竟我没有 iPhone )效果还是会有点问题,背景图会抖动