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

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


เอฟเฟกต์ Light Speed In

องค์ประกอบบินเข้ามาจากขวา พร้อม skew เงาเอียง แล้วปรับกลับมาตรง เร็วมาก (0.5s) คู่คู่กับ Light Speed Out

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

<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 lightSpeedIn {
      0%   { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; }
      60%  { -webkit-transform: translateX(-20%) skewX(30deg); opacity: 1; }
      80%  { -webkit-transform: translateX(0%) skewX(-15deg); opacity: 1; }
      100% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; }
    }
    @keyframes lightSpeedIn {
      0%   { transform: translateX(100%) skewX(-30deg); opacity: 0; }
      60%  { transform: translateX(-20%) skewX(30deg); opacity: 1; }
      80%  { transform: translateX(0%) skewX(-15deg); opacity: 1; }
      100% { transform: translateX(0%) skewX(0deg); opacity: 1; }
    }

    .lightSpeedIn {
      -webkit-animation-name: lightSpeedIn;
      animation-name: lightSpeedIn;
      -webkit-animation-timing-function: ease-out;
      animation-timing-function: ease-out;
    }

    .animated.lightSpeedIn {
      -webkit-animation-duration: 0.5s;
      animation-duration: 0.5s;
    }
  </style>
</head>
<body>
  <div id="animated-example" class="animated lightSpeedIn"></div>
  <button onclick="myFunction()">Reload page</button>
  <script>
    function myFunction() { location.reload(); }
  </script>
</body>
</html>

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

ขั้นตอนTransformOpacityพฤติกรรม
0%translateX(100%) skewX(-30°)0เริ่มนอกจอขวา ก้มเอียง
60%translateX(-20%) skewX(30°)1บินเข้ามาเกินจุด ขวาเอียง
80%translateX(0%) skewX(-15°)1ปรับกลับ เริ่มตรง
100%translateX(0%) skewX(0°)1หยุดตรงจุด

ความแตกต่าง In vs Out

คุณสมบัติLight Speed InLight Speed Out
ทิศทางขวา → ซ้าย (เข้า)ซ้าย → ขวา (ออก)
Skew เริ่ม-30°0°
Skew กลาง+30° → -15°-30°
Timingease-outease-in
Duration0.5s0.25s

การใช้งานคู่กัน: Page Transition

.page-enter { animation: lightSpeedIn 0.5s ease-out; }
.page-exit  { animation: lightSpeedOut 0.25s ease-in; }