如何获得图像横幅垂直滚动?

时间:2015-11-15 09:05:28

标签: css css3 css-animations banner keyframe

我试图使用我在网上找到的这个代码制作一个动态图像横幅,但我的问题是我似乎无法让它垂直滚动。现在,只有第一张图片正在移动,我不知道为什么。 Here是原始代码的链接。

这是我到目前为止所拥有的。

CSS:

<style>
  body {
    background: url('images/dark_geometric.png');
  }
  #container {
    width: 800px;
    height: 705px; 
    overflow: hidden;
  }
  .photobanner {
    height: 233px;
    width: 3550px;
    margin-bottom: 80px;
  }
  /*keyframe animations*/
  .first {
    -webkit-animation: bannermove 30s linear infinite;
    -moz-animation: bannermove 30s linear infinite;
    -ms-animation: bannermove 30s linear infinite;
    -o-animation: bannermove 30s linear infinite;
    animation: bannermove 30s linear infinite;
  }
  @keyframes "bannermove" {
    0% {
      margin-top: 0px;
    }
    100% {
      margin-top: -2125px;
    }
  }
  @-moz-keyframes bannermove {
    0% {
      margin-top: 0px;
    }
    100% {
      margin-top: -2125px;
    }
  }
  @-webkit-keyframes "bannermove" {
    0% {
      margin-top: 0px;
    }
    100% {
      margin-top: -2125px;
    }
  }
  @-ms-keyframes "bannermove" {
    0% {
      margin-top: 0px;
    }
    100% {
      margin-top: -2125px;
    }
  }
  @-o-keyframes "bannermove" {
    0% {
      margin-top: 0px;
    }
    100% {
      margin-top: -2125px;
    }
  }
</style>

HTML:

<body>
  <div id="container">
    <div class="photobanner">
      <img class="first" src="images/rsz_event1.png" alt="">
      <img src="images/rsz_event2.png" alt="">
      <img src="images/rsz_event3.png" alt="">
      <img src="images/rsz_event4.png" alt="">
      <img src="images/rsz_event5.png" alt="">
      <img src="images/rsz_event6.png" alt="">
      <img src="images/rsz_event7.png" alt="">
      <img src="images/rsz_event8.png" alt="">
      <img src="images/rsz_event1.png" alt="">
      <img src="images/rsz_event2.png" alt="">
      <img src="images/rsz_event3.png" alt="">
      <img src="images/rsz_event4.png" alt="">
    </div>
  </div>
</body>

如果有人可以帮我指出正确的方向,我会非常感激。刚开始学习。

1 个答案:

答案 0 :(得分:3)

图像不是块级元素,因此如果您需要让图像在另一个下方显示并使用margin-top属性设置动画,则应向其添加display: block设置。

链接的示例并不需要这样,因为这是一个水平滚动,默认情况下所有这些图像元素都排成一行。

&#13;
&#13;
body {
  background: url('http://lorempixel.com/600/400/abstract/1');
}
#container {
  width: 800px;
  height: 600px; /* modify as per your need, would be better to set it to multiples of image height */
  overflow: hidden;
}
.photobanner {
  width: 3550px;
  height: 200px; /* modify as per your need, this is the height of each image */
  margin-bottom: 80px;
}
.first {
  animation: bannermove 30s linear infinite;
}
img {
  display: block;
}
@keyframes bannermove {
  0% {
    margin-top: 0px;
  }
  100% {
    margin-top: -1600px; /* container height - (no. of images - 1) * image height */
  }
}
&#13;
<div id="container">
  <div class="photobanner">
    <img class="first" src="http://lorempixel.com/800/200/nature/1" alt="">
    <img src="http://lorempixel.com/800/200/nature/2" alt="">
    <img src="http://lorempixel.com/800/200/nature/3" alt="">
    <img src="http://lorempixel.com/800/200/nature/4" alt="">
    <img src="http://lorempixel.com/800/200/nature/5" alt="">
    <img src="http://lorempixel.com/800/200/nature/6" alt="">
    <img src="http://lorempixel.com/800/200/nature/7" alt="">
    <img src="http://lorempixel.com/800/200/nature/8" alt="">
    <img src="http://lorempixel.com/800/200/nature/1" alt="">
    <img src="http://lorempixel.com/800/200/nature/2" alt="">
    <img src="http://lorempixel.com/800/200/nature/3" alt="">
    <img src="http://lorempixel.com/800/200/nature/4" alt="">
  </div>
</div>
&#13;
&#13;
&#13;