Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

สร้างเอฟเฟกต์ Flip In Y ด้วย CSS Animation


เอฟเฟกต์ Flip In Y

องค์ประกอบพลิกเข้ามาจากแกน Y (แนวตั้ง) เริ่มจาก 90° (มองไม่เห็น) หมุนมาเป็น 0° พร้อมเด้งเล็กน้อย (overshoot) ใช้ perspective สร้างความลึก

โค้ดตัวอย่างสมบูรณ์

<html>
<head>
  <style>
    .animated {
      background-image: url(/css/images/logo.png);
      background-repeat: no-repeat;
      background-position: left top;
      padding-top: 95px;
      margin-bottom: 60px;
      -webkit-animation-duration: 1s;
      animation-duration: 1s;
      -webkit-animation-fill-mode: both;
      animation-fill-mode: both;
    }

    @-webkit-keyframes flipInY {
      0%   { -webkit-transform: perspective(400px) rotateY(90deg); opacity: 0; }
      40%  { -webkit-transform: perspective(400px) rotateY(-10deg); }
      70%  { -webkit-transform: perspective(400px) rotateY(10deg); }
      100% { -webkit-transform: perspective(400px) rotateY(0deg); opacity: 1; }
    }
    @keyframes flipInY {
      0%   { transform: perspective(400px) rotateY(90deg); opacity: 0; }
      40%  { transform: perspective(400px) rotateY(-10deg); }
      70%  { transform: perspective(400px) rotateY(10deg); }
      100% { transform: perspective(400px) rotateY(0deg); opacity: 1; }
    }

    .flipInY {
      -webkit-backface-visibility: visible !important;
      -webkit-animation-name: flipInY;
      backface-visibility: visible !important;
      animation-name: flipInY;
    }
  </style>
</head>
<body>
  <div id="animated-example" class="animated flipInY"></div>
  <button onclick="myFunction()">Reload page</button>
  <script>
    function myFunction() { location.reload(); }
  </script>
</body>
</html>

การวิเคราะห์ Keyframes

ขั้นตอนRotate YOpacityพฤติกรรม
0%90°0เริ่มหมุนตั้ง (มองไม่เห็น)
40%-10°-หมุนเกินจุด (ซ้าย)
70%10°-เด้งกลับ (ขวา)
100%0°1หยุดตรงหน้า

ความสำคัญของ backface-visibility

backface-visibility: visible จำเป็นต้องมี เพราะขณะหมุน 90° ด้านหลังของ element จะมองเห็น ถ้าไม่ตั้งค่านี้ จะมองไม่เห็นขณะหมุน