左右移动.. css仅非常通用

时间:2018-06-29 10:15:27

标签: html css css3 css-animations

我想编写一个通用的CSS动画来左右移动div,触摸容器的边缘..以一种简单的方式应用于我不知道的任何div,除了它具有绝对位置

问题是,简单地将0%然后再设为100%..消失一会儿,我应该使用calc(100%-width)..之类的东西。 放置50%的关键帧几乎就像我想要的一样,但是速度有所下降,并且不是很流畅和线性... 有什么建议,考虑到我不知道我的div多长,而且我不使用js / jquery,而只能使用CSS ..

https://codepen.io/alemarch/pen/vrvgMo

 @keyframes destraSinistra {
  0% {
    left: 0%;
    color: black;
    right: unset;
  }
  50% {
    left:50%;
    right: 50%;
  }

  100% {
    left:unset;
    right: 0px;
    color: green;
  }
}


#div1 {
  position: absolute;
  border: solid 1px lightgray;
  width: 100px;
  top: 200px;
  height: 30px;
  background-color: lightgreen;
  animation-name: destraSinistra;
  animation-duration: 4s; 
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  animation-direction: alternate-reverse 
}

1 个答案:

答案 0 :(得分:6)

结合使用transformleftright以避免添加任何固定值:

@keyframes destraSinistra {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
    transform:translateX(-100%);
  }
}


#div1 {
  position: absolute;
  border: solid 1px lightgray;
  width: 100px;
  height: 30px;
  background-color: lightgreen;
  animation: destraSinistra 1s linear infinite alternate
}
<div id="div1"></div>