垂直滑动CSS背景图像

时间:2014-10-17 16:18:43

标签: html css css-animations

我注意到this nice effect on Pinterest

背景图像垂直滚动,让人感觉它比视口大。我试着玩CSS而没有运气。

HTML

<div class="out">
    <div class="inner">hello</div>
</div>

CSS

@keyframes scrollBgGridLinks {
    0% {
        transform: translateY(0px);
    }
    100% {
        transform: translateY(-330px);
    }
}
.inner {
    animation: 35s linear 0s normal forwards 1 scrollBgGridLinks;
    background-color: red;
    position: absolute;
    clip:rect(0px, 50px, 50px, 0px);
    width:200px;
}
.out {
    height:200px;
}

1 个答案:

答案 0 :(得分:4)

伪元素滑动背景

<body>的一个或两个背景伪元素,position: fixed,高度和宽度百分比。

要在背景上方显示元素,请使用:

element-to-show-above {
    position: relative;
    z-index: 1;
}

对于包含大量内容的页面,将上述属性应用于包含所有元素的包装器是有意义的。

两个例子

&#34;显示代码段&#34;然后运行它来观看演示。

#1 - 一个缓慢过渡到顶部并暂停

  • 一个伪元素高度是视口高度和宽度的200%

  • 背景滑动到-50%并暂停forwards选项

注意: Safari currently requires转换属性的-webkit-前缀。

&#13;
&#13;
body {
  margin: 0;
}
body:before {
  content: '';
  display: block;
  -webkit-animation: 80s bg linear forwards;
  animation: 80s bg linear forwards;
  background: url(http://i.stack.imgur.com/zawJr.jpg) no-repeat;
  background-size: 100% 100%;
  position: fixed;
  height: 300%;
  width: 200%;
  top: 0;
  left: 0;
}
@-webkit-keyframes bg {
  0% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
  }
}
@keyframes bg {
  0% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
  }
}
&#13;
&#13;
&#13;

#2 - 永无止境的背景幻灯片

  1. 第一个从0开始,滑到-100%。

  2. 第二个以100%开始并滑动到0。

  3. 它们一起形成一个恒定的运动错觉,不需要额外的HTML!

    &#13;
    &#13;
    body {
      margin: 0;
    }
    body:before {
      content: '';
      display: block;
      -webkit-animation: 5s bg linear infinite;
      animation: 5s bg linear infinite;
      background: url(http://i.stack.imgur.com/zawJr.jpg) no-repeat;
      background-size: 100% 100%;
      position: fixed;
      height: 100%;
      width: 100%;
      top: 0;
      left: 0;
    }
    body:after {
      content: '';
      display: block;
      -webkit-animation: 5s bg2 linear infinite;
      animation: 5s bg2 linear infinite;
      background: url(http://i.stack.imgur.com/zawJr.jpg) no-repeat;
      background-size: 100% 100%;
      position: fixed;
      height: 100%;
      width: 100%;
      top: 0;
      left: 0;
    }
    @-webkit-keyframes bg {
      0% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
      }
      100% {
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
      }
    }
    @-webkit-keyframes bg2 {
      0% {
        -webkit-transform: translateY(100%);
        transform: translateY(100%);
      }
      100% {
        -webkit-transform: translateY(0%);
        transform: translateY(0%);
      }
    }
    @keyframes bg {
      0% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
      }
      100% {
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
      }
    }
    @keyframes bg2 {
      0% {
        -webkit-transform: translateY(100%);
        transform: translateY(100%);
      }
      100% {
        -webkit-transform: translateY(0%);
        transform: translateY(0%);
      }
    }
    &#13;
    &#13;
    &#13;