CSS background-size:cover background-attachment:固定裁剪背景图片

前端之家收集整理的这篇文章主要介绍了CSS background-size:cover background-attachment:固定裁剪背景图片前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含背景图像的数字列表。类似以下内容
<ul>
  <li>
    <figure style="background-image: url(...);"></figure>
  </li>
  <li>
    <figure style="background-image: url(...);"></figure>
  </li>
  <li>
    <figure style="background-image: url(...);"></figure>
  </li>
</ul>

这些图像中的每一个都将其背景大小设置为覆盖,背景附件设置为固定。

figure {
  width: 100%;
  height: 100%;
  background-size: cover;
  background-attachment: fixed;
}

当每个图形占据整个视口时,这样做很好,但是如果有任何类型的偏移,则背景图像被剪切。

据我所知,这是设计(https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#Values)。

我想要图像垂直或水平剪辑,但不是两者,并且以图形本身的大小为中心。

我知道有javascript解决方案,但是有没有办法使用CSS?

这是一个工作示例:http://codepen.io/Godwin/pen/KepiJ

解决方法

不幸的是,这只是一个固定的定位工作在CSS中的工件,而纯CSS中没有办法 – 你必须使用Javascript。

原因是由于background-attachment:fixed和background-size:cover的组合。当您指定background-attachment:固定它本质上会使背景图像的行为就像是一个位置:固定图像,这意味着它被从页面流和定位上下文中取出,并且变得相对于视口而不是元素的背景图像。

因此,无论何时使用这些属性,相对于视口大小计算盖值,而不考虑元素本身的大小,这就是为什么当元素与视口的大小相同但被裁剪时,它的预期工作原理当元素小于视口时,以意想不到的方式。

为了解决这个问题,您基本上需要使用background-attachment:滚动并将事件侦听器绑定到JS中的滚动事件,手动更新背景位置相对于窗口滚动的距离,以模拟固定位置,但仍然计算background-size:相对于容器元素而不是视口的coverage。

原文链接:https://www.f2er.com/css/218724.html

猜你在找的CSS相关文章