焦点/活动中的CSS动画无法正常工作

时间:2015-12-11 22:52:49

标签: html css animation focus

我有一个网页,其中包含一些css,可以从左侧显示图像,然后稍微向右移动。但是,只要页面加载就会完成此动画,因此它根本不会移动。我想在用户向下滚动到图像所在页面部分时触发动画。我该怎么做呢?这是我当前的动画代码:

@-webkit-keyframes move
{
    from {
        left: -100%;
    }
    to {
        left: -10%;
    }
}
@keyframes move
{
    from {
        left: -100%;
    }
    to {

        left: -10%;
    }
}
 .rotator{
    text-decoration: none;
    padding-right: 20px;
    left: -10%;
    position: absolute;
    -webkit-animation: move 5s;
    animation: move 5s;
}
.rotator img {
    -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out; 
    -o-transition: all 1s ease-in-out; 
    -ms-transition: all 1s ease-in-out; 
    border-radius:60px;
    transition-duration: 1s;
    }

这是我放在网页上的html:

<a class="rotator"><img src="img/lc.png" /></a>

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用JQuery来衡量用户是否已到达网站上的某个点。如果是这样,那么你应该添加一个包含动画的类。

<强> JQuery的:

$(document).scroll(function() {
  if ($(document).scrollTop() == 200) {
    $("#block").addClass("animate");
  }
});

if ($(document).scrollTop() == 200)行中,200等于应该动画的元素的y-coördinate。

示例:

$(document).scroll(function() {
  if ($(document).scrollTop() == 200) {
    $("#block").addClass("animate");
  }
});
body {
  height: 2000px;
  margin: 0px;
}
#block {
  width: 120px;
  height: 120px;
  line-height: 120px;
  text-align: center;
  border: 2px solid red;
  margin: 200px auto;
}
.animate {
  animation: spin 4s linear infinite;
}
@keyframes spin {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="block">
  Block
</div>

答案 1 :(得分:-1)

你的代码没有渲染动画......那里有些不对劲。我建议你找一段工作代码,然后阅读并适应。例如,这个菜单有一个菜单,但您可以更改所有菜单以使其适用于您的目的。

检查此示例是否有效并重复使用代码。

菜单栏在页面加载时向下滑动,纯CSS。

Spannable
header {
  background: #666;
  color: #fff;
  height: 20px;
  position: relative;
  padding: 10px;
  -moz-animation-name: dropHeader;
  -moz-animation-iteration-count: 1;
  -moz-animation-timing-function: ease-in;
  -moz-animation-duration: 0.5s;
  -webkit-animation-name: dropHeader;
  -webkit-animation-iteration-count: 1;
  -webkit-animation-timing-function: ease-in;
  -webkit-animation-duration: 0.5s;
  animation-name: dropHeader;
  animation-iteration-count: 1;
  animation-timing-function: ease-in;
  animation-duration: 0.5s;
}
header ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
header ul li {
  display: inline-block;
  margin-right: 20px
}
header ul li a {
  color: #eee;
  text-decoration: none;
}
@-moz-keyframes dropHeader {
  0% {
    -moz-transform: translateY(-40px);
  }
  100% {
    -moz-transform: translateY(0);
  }
}
@-webkit-keyframes dropHeader {
  0% {
    -webkit-transform: translateY(-40px);
  }
  100% {
    -webkit-transform: translateY(0);
  }
}
@keyframes dropHeader {
  0% {
    transform: translateY(-40px);
  }
  100% {
    transform: translateY(0);
  }
}
/* For aesthetics only */

body {
  margin: 0;
  font-family: Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif;
}
.intro {
  padding: 40px;
}
.intro h1 {
  font: 200 1.7em Segoe UI, "Segoe UI Light", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif;
  font-weight: 200;
  color: #666;
}
.intro p {
  max-width: 600px;
}