css анимация перемещается влево, снова появляется справа и продолжается влево

avatar
stalwart1014
1 июля 2021 в 18:28
139
2
0

Как сделать так, чтобы синяя платформа двигалась влево, снова появлялась справа и продолжала двигаться влево? Для меня это довольно сложно, потому что начинается слева, а если начинается справа, то это было бы проще.

enter image description here

*{
  padding: 0;
  margin: 0;
}
html,body{
  height:100%;
}
.container{
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  align-content: center;
}
#inner{
  width: 500px;
  height: 200px;
  border: 1px solid black;
  margin: auto;
  overflow:hidden
}
#platform{
  width:200px;
  height:50px;
  position: relative;
  top: 150px;
  background: blue;
  animation: move 2s linear infinite;
}
@keyframes move{
  0%{
    left:0px;
  }
  50%{
    left:-200px;
  }
  70%{
    right:200px;
  }
  100%{
  left:0%
}
<div class="container">
    <div id="inner">
      <div id="platform"></div>
    </div>
  </div>
Источник
code
1 июля 2021 в 18:44
0

Разве это не то, что ты сделал? Пожалуйста, изложите свою проблему более четко.

Temani Afif
1 июля 2021 в 19:49
0

из дубликата: coderhelper.com/a/65549414/8620333 .. это противоположное направление, но просто поменяйте левое на правое и удалите отрицательный знак из перевода

stalwart1014
2 июля 2021 в 10:24
0

@TemaniAfif я изменил его вправо и удалил негатив. все еще не работает

Temani Afif
2 июля 2021 в 10:27
0

попробуйте использовать реверс: jsfiddle.net/t97Ljynu

stalwart1014
2 июля 2021 в 10:45
0

да, ход правильный. но я хочу, чтобы отправная точка была слева. сейчас он справа. @ТеманиАфиф

Temani Afif
2 июля 2021 в 11:03
0

но это бесконечное движение? в конце он идет справа налево, начальная точка не имеет большого значения

stalwart1014
2 июля 2021 в 12:16
0

@TemaniAfif да, это бесконечно, но это проблема, которую я пытаюсь решить.

Ответы (2)

avatar
Temani Afif
2 июля 2021 в 11:22
2

Сделайте как показано ниже:

#inner {
  width: 500px;
  height: 200px;
  border: 1px solid black;
  margin: auto;
  overflow: hidden
}

#platform {
  width: 200px;
  height: 50px;
  position: relative;
  top: 150px;
  right: 0;
  transform: translate(100%);
  margin-left: auto;
  background: blue;
  animation: move 2s linear infinite;
}

@keyframes move {
  to {
    right: 100%;
    transform: translate(0);
  }
}
<div id="inner">
  <div id="platform"></div>
</div>

Управление задержкой для запуска слева:

#inner {
  width: 500px;
  height: 200px;
  border: 1px solid black;
  margin: auto;
  overflow: hidden
}

#platform {
  width: 200px;
  height: 50px;
  position: relative;
  top: 150px;
  right: 0;
  transform: translate(100%);
  margin-left: auto;
  background: blue;
  animation: move 2s linear infinite -1.5s;
}

@keyframes move {
  to {
    right: 100%;
    transform: translate(0);
  }
}
<div id="inner">
  <div id="platform"></div>
</div>
avatar
Sean Stopnik
1 июля 2021 в 19:04
1

Это довольно грубо, но вы поняли идею:

https://codepen.io/seanstopnik/pen/164585fcf077f8cefaef6d0f4fbd9dad

body {
  padding: 60px;
}

.container {
  position: relative;
  width: 400px;
  height: 400px;
  border: 1px solid #333;
  overflow: hidden;
}

.box {
  position: absolute;
  top: 0;
  left: -100px;
  height: 60px;
  width: 100px;
  background: blue;
  -webkit-animation: box 2s linear infinite;
          animation: box 2s linear infinite;
}

@-webkit-keyframes box {
  0% {
    transform: translateX(500px);
  }
}

@keyframes box {
  0% {
    transform: translateX(500px);
  }
}
<div class="container">
  <div class="box"></div>
</div>