一種簡單的CSS翻牌效果實現方式


css翻牌效果在一些活動頁面使用的還是比較多的,目前網上大部分的方案都是使用 backface-visibility 等復雜且兼容性差的方案,本文介紹一種非常簡單的方案。以撲克牌的翻轉為例,如果事先准備好下面的兩張圖片

實現圖片的翻轉很簡單,沿Y軸翻轉180度的同時更換背景圖片即可

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Static Template</title>
    <style>
      #card {
        width: 470px;
        height: 640px;
        transition: 0.5s ease-in-out;
        /* 撲克牌背面 */
        background-image: url("front.png");
        background-size: cover;
      }
      #card.card-flip {
        transform: rotateY(180deg);
        /* 撲克牌正面 */
        background-image: url("back.png");
      }
    </style>
  </head>
  <body>
    <div id="card"></div>
    <script>
      const card = document.querySelector("#card");
      card.addEventListener("click", function () {
        this.classList.toggle("card-flip");
      });
    </script>
  </body>
</html>

但是直接翻轉180度,數字面呈現的是牌7沿Y軸的鏡像,如下圖所示
2021-02-21_22-48-21 -1-

解決這個問題有個簡單的方案,我們准備圖片的時候直接准備鏡像后的圖片,這樣翻轉后就能正常展示了

其實還有一種更簡單的css處理方式,使用scaleX(-1) 同樣能實現沿Y軸的鏡像。

transform: rotateY(180deg) scaleX(-1);

效果如下
https://codesandbox.io/s/ecstatic-sanne-7w14c?file=/index.html
2021-02-20_10-57-48 -1-

另外,如果圖片加載速度慢,建議做預加載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM