我正在为我的客户制作一个网站。
现在,该网站在其着陆页面上有背景图片,在所有PC浏览器中看起来非常棒,但有一个问题......
如果您没有在所有平板电脑和手机上使用谷歌浏览器,它将使背景图像看起来非常放大,并且很奇怪。
有代码(对于css background-image,它应该是响应式的,但它不在很多浏览器中):
body {
height: 100%;
font-family: 'Open Sans';
font-weight:100;
color:#666666;
line-height: 1.7em;
/* Location of the image */
background-image: url(1.jpg);
/* Background image is centered vertically and horizontally at all times */
background-position: center center;
/* Background image doesn't tile */
background-repeat: no-repeat;
/* Background image is fixed in the viewport so that it doesn't move when
the content's height is greater than the image's height */
background-attachment: fixed;
/* This is what makes the background image rescale based
on the container's size */
background-size: cover;
/* Set a background color that will be displayed
while the background image is loading */
background-color: #464646;
}
答案 0 :(得分:2)
不幸的是background-attachment: fixed
和background-size: cover
不能很好地协同工作。
请参阅this question及其最高投票回答。 (以防将来问题可能不存在,这是答案)
不幸的是,这只是一个固定定位的神器 在CSS中工作,在纯CSS中没有办法 - 你必须这样做 使用Javascript。
发生这种情况的原因是由于组合
background-attachment: fixed
和background-size: cover.
当你 指定background-attachment: fixed
它本质上导致了 背景图像表现得好像是一个位置:固定图像, 这意味着它已从页面流和定位上下文中取出 并且变得相对于视口而不是它的元素 背景图片。因此,无论何时一起使用这些属性,封面值都是 相对于视口的大小计算而不管 元素本身的大小,这就是为什么它按预期工作的原因 元素与视口大小相同但被裁剪 当元素小于视口时的意外方式。
要解决此问题,您基本上需要使用
background-attachment: scroll
并将事件侦听器绑定到JS中的scroll
事件。 手动更新相对于多远的背景位置 窗口已滚动,以模拟固定定位但 仍然相对于容器计算background-size: cover
元素而不是视口。
答案 1 :(得分:2)