CSS-анимация: как перевернуть изображение?

#css #css-animations

Вопрос:

Я пытаюсь сделать простую анимацию в CSS, где изображение перемещается горизонтально. В конце горизонтального перемещения (то есть в самых левых и самых правых точках) я хочу, чтобы изображение перевернулось по вертикальной оси. Я НЕ хочу, чтобы изображение переворачивалось во время горизонтального движения; я хочу, чтобы переворот происходил только в самых левых и самых правых точках.

Вот что у меня есть до сих пор:

 <!DOCTYPE html>
<html>

  <head>
  </head>

  <body>
    <div class="duck"></div>

  </body>

</html>

.duck {
  width: 100px;
  height: 100px;
  position: relative;
  animation: duck 8s infinite;
}

@keyframes duck {
  0% {
    top: 20px;
    left: 250px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
  }

  50% {
    top: 20px;
    left: 20px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
  }

  100% {
    top: 20px;
    left: 250px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
  }
}
 

https://jsfiddle.net/vnu4hyxg/

Как мне сделать сальто?

Ответ №1:

Попробуй это. Я добавил дополнительный кадр, 51%, и установил преобразование на 50, 51 и 100.

 .duck {
  width: 100px;
  height: 100px;
  position: relative;
  animation: duck 8s infinite;
}

@keyframes duck {
  0% {
    top: 20px;
    left: 250px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
  }

  50% {
    top: 20px;
    left: 20px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
    transform: scaleX(1);
  }
  51%{ transform: scaleX(-1);}

  100% {
    top: 20px;
    left: 250px;
    background: url("https://e7.pngegg.com/pngimages/644/738/png-clipart-yellow-duck-toy-plastic-duck-animals-ducks-thumbnail.png") no-repeat;
    background-size: contain;
    transform: scaleX(-1)
  }
} 
 <!DOCTYPE html>
<html>

  <head>
  </head>

  <body>
    <div class="duck"></div>

  </body>

</html> 

Ответ №2:

попробуйте это

 <style>
img:hover {
  -webkit-transform: scaleX(-1);
  transform: scaleX(-1);
}
</style>

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHcAAABUCAMAAACP31ggAAAAeFBMVEX///8AUZf2 vsAPY Cn8MATJUAT5aoudLi6fEASpSgtc7CzN7R3OjL1ONIcaj5 /0AQJBeg7E1Z6IFV5uInsMARZLu8/cAN4wnYJ wv9a x9sAK4iQpsZ3k7sjY6CbsMtSeqwAMIoAIIVsi7ZxlrxAdqoAJYa3yd0JiWMVAAADTElEQVRoge2Y63KrIBSFUWLERIOJ9ZZqNE1b3/8ND7hRuRk7p2emZ6Z8fyIL9l5qNiIi5HA4HA6Hw FwfJvYBKHCosaErkZJPYga2Wz4VRSoRDlCVxyYeNlHKKIKT4lKaynjoMZif81XI0i5r65ynyjCZT35KpykjH2uhK34ojo0QIgcTBXoyHi2uizdaD2U2n1/Ct/ErsrdZv96vhXbrMQad/b/vuqiBKu7Ite0NyLykU t53WtroK9Bq/n1NPVGQ8nqMg0LdqJfE2uDU/tvrTZGbDpaYoSA/JtQeBrdKzc6J FAlaR6m2qtxfRIj2jCTLOvlHUfBSzdIq/QNvrRbv1Mgl P lNErx22zfyOHN1AHgUvXL23cOoKV8LUUB ZEqCJSXa9q3PQKioPYj95NuKUUfR7s4yjaF0m76/jfBy4lzUOwOiznku00Yd8EAPdWRj Og8rSuFfUTm/jaAqPd8/E0JBOTvoAfbddXdLpyber3VxeS22KIdRFXDCfo 4KcfRLaXTd/fRg1TtbfOX5Vi6ReztR/mmc15oKRfZvRzxOql15V1GVyM2wjWzRB1y qXN2gQ2b5QV1BClVpXmaWuLtUyj3YiqkZkKcGKoKPQt uK s/WIxVf7/eVoeNb0lfXo5/i AJcFbUFsZ3OuxGjEtGul7YvDl9adr2xOK7RFit1BS9Z93kdDNR6WeoKoRP0BfwN/ut11eCcg1Xf yjmn9M/WqUg3ET7AVHlgV97Ccf8HAY4xo9NXyredalV1du 2ob6oUsCSm3Z/hPCgw6bxKQzVKk/RlRrIxECuyclurNftbkPhf2gZR86USbqPhQfxkRs7xcF48NM2YmK/aDu7mc41SiZ710XF3DE9imRKLG5rsYqw fxSNTYSHrnvqSpO21WERN2NhZ1ptCj4InNY DaCi0bort4GJLhO XwV4RFSI6JujwlRwN2xldTBa5j5VBFE68g5BpPB3IAEzoaDg1SfP0qjzQw 39L4zsDJ8evsGIVeykK6opdwZt4sR7krxQlu/ekHmhXdKqvkR1bv2 wcvVujXhkFHt5vPBFGVrxRfVQxOqzECUmLK9FTeJlxadKx7znFr9qtLj1CXI4HA6Hw FwOP4BfwB7YGP7W9EsdQAAAABJRU5ErkJggg==" alt="Paris"> 

Комментарии:

1. Я не уверен, что это должно сделать с моей анимацией.