CSS การเคลื่อนไหว
- หน้าก่อนหน้า CSS การเปลี่ยนแปลง
- หน้าต่อไป CSS ข้อความช่วยเหลือ
CSS การเคลื่อนไหว
CSS สามารถทำให้มีการทำอนิเมชั่นในองค์ประกอบ HTML โดยไม่ต้องใช้ JavaScript หรือ Flash!
ในบทนี้ คุณจะเรียนรู้คุณสมบัติต่อไปนี้:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
การสนับสนุนเบราซเรอร์ของอนิเมชั่น
ตัวเลขในตารางระบุสูตรเบราซเรอร์ที่สนับสนุนคุณสมบัตินี้ครั้งแรก。
属性 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
อะไรคือ CSS อนิเมชั่น?
อนิเมชั่นทำให้องค์ประกอบเปลี่ยนแปลงระหว่างสไตล์หนึ่งไปยังสไตล์อื่นๆ โดยเรียบเรียง。
คุณสามารถเปลี่ยนแปลง CSS ทางแยกได้มากมายตามที่คุณต้องการ。
เพื่อใช้อนิเมชั่น CSS คุณจำเป็นต้องกำหนดจุดภาพหลักของอนิเมชั่นก่อน
จุดภาพหลักมีสไตล์ขององค์ประกอบที่มีที่เหมาะสมที่สุดในช่วงเวลาที่กำหนด。
@keyframes รูปแบบ
ถ้าคุณมี @keyframes
รูปแบบนี้กำหนดสไตล์ CSS ที่จะเปลี่ยนแปลงเรียบเรียงตามเวลาที่กำหนด。
เพื่อที่อนิเมชั่นจะมีผล คุณจำเป็นต้องเชื่อมโยงอนิเมชั่นกับองค์ประกอบเฉพาะอย่างหนึ่ง。
ตัวอย่างดังนี้จะเชื่อมโยง "example" อนิเมชั่นกับ <div> โมดูล อนิเมชั่นจะใช้เวลา 4 วินาที และเปลี่ยนสีของ <div> โมดูลจาก "red" ไปเป็น "yellow" แบบเรียบเรียง:
实例
/* รหัสอนุรักษ์เคลื่อนไหว */ @keyframes example { from {background-color: red;} to {background-color: yellow;} } /* ใช้กระบวนการอนิเมชั่นในองค์ประกอบนี้ */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
ข้อเตือน:animation-duration
ขอบเขตนี้กำหนดเวลาที่จะใช้ในการสิ้นสุดอนิเมชั่น。ถ้าไม่ระบุ animation-duration
ถ้าไม่มีขอบเขตนี้ อนิเมชั่นจะไม่เกิดขึ้น เพราะค่าเริ่มต้นคือ 0s (0 วินาที)。
ในตัวอย่างดังกล่าว ด้วยการใช้คำสั่งว่า "from" และ "to" (ที่แสดงถึง 0% สำหรับเริ่มต้นและ 100% สำหรับสิ้นสุด) เรากำหนดสไตล์ที่จะเปลี่ยนแปลงเมื่อไหร่。
คุณยังสามารถใช้ขอบเขตเปอร์เซ็นต์ได้เช่นกัน。ด้วยการใช้เปอร์เซ็นต์ คุณสามารถเพิ่มการเปลี่ยนแปลงสไตล์ที่คุณต้องการได้มากกว่าหนึ่งรายการ。
ตัวอย่างดังนี้จะเปลี่ยนสี배경ของ <div> โมดูลเมื่ออนิเมชั่นเสร็จ 25%,เสร็จ 50% และอนิเมชั่นเสร็จ 100%:
实例
/* รหัสอนุรักษ์เคลื่อนไหว */ @keyframes example { 0% {background-color: red;} 25% {background-color: yellow;} 50% {background-color: blue;} 100% {background-color: green;} } /* องค์ประกอบที่ใช้อนุรักษ์เคลื่อนไหว */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
ตัวอย่างด้านล่างจะเปลี่ยนสีพื้นหลังและตำแหน่ง <div> ขณะที่อนุรักษ์เคลื่อนไหวเสร็จ 25%, 50% และ 100%:
实例
/* รหัสอนุรักษ์เคลื่อนไหว */ @keyframes example { 0% {background-color:red; left:0px; top:0px;} 25% {background-color:yellow; left:200px; top:0px;} 50% {background-color:blue; left:200px; top:200px;} 75% {background-color:green; left:0px; top:200px;} 100% {background-color:red; left:0px; top:0px;} } /* องค์ประกอบที่ใช้อนุรักษ์เคลื่อนไหว */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
ละงานอนุรักษ์เคลื่อนไหว
animation-delay
属性กำหนดเวลาละงานก่อนที่จะเริ่มอนุรักษ์เคลื่อนไหว.
ตัวอย่างด้านล่างจะมีการละงาน 2 วินาทีก่อนที่จะเริ่มอนุรักษ์เคลื่อนไหว:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
ค่าลบก็เป็นที่อนุญาติ. ถ้าใช้ค่าลบ อนุรักษ์เคลื่อนไหวจะเริ่มเล่น โดยเหมือนว่ามันเล่นแล้ว N วินาที.
ในตัวอย่างด้านล่าง อนุรักษ์เคลื่อนไหวจะเริ่มเล่น โดยเหมือนว่ามันเล่นแล้ว 2 วินาที:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
ตั้งค่าจำนวนครั้งที่อนุรักษ์เคลื่อนไหวควรเล่น
animation-iteration-count
属性กำหนดจำนวนครั้งที่อนุรักษ์เคลื่อนไหวควรเล่น:
ตัวอย่างด้านล่างจะทำให้อนุรักษ์เคลื่อนไหวเล่น 3 ครั้งก่อนหยุด:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
ตัวอย่างด้านล่างใช้ค่า "infinite" ที่ทำให้อนุรักษ์เคลื่อนไหวเล่นตลอด:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
เล่นอนุรักษ์เคลื่อนไหวทิศทางตรงกันหรือเล่นกลับกัน
animation-direction
属性กำหนดว่าอนุรักษ์เคลื่อนไหวจะเล่นไปทางหน้าหน้า หลังหลังกัน หรือเล่นกลับกัน:
animation-direction
มีความสามารถรับค่าที่ต่อไปนี้ได้:
normal
- อนุรักษ์เคลื่อนไหวปกติ (เข้าหน้าหน้า). ค่าเริ่มต้นreverse
- อนุรักษ์เคลื่อนไหวด้วยทิศทางตรงกัน (หลัง)alternate
- อนุรักษ์เคลื่อนไหวเข้าหน้าหน้า แล้วหลังหลังกันalternate-reverse
- อนุรักษ์เคลื่อนไหวหลังหลังกัน แล้วเข้าหน้าหน้า
ตัวอย่างด้านล่างจะทำให้อนุรักษ์เคลื่อนไหวด้วยทิศทางตรงกัน (หลัง):
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
ตัวอย่างด้านล่างใช้ค่า "alternate" ที่ทำให้อนุรักษ์เคลื่อนไหวเข้าหน้าหน้า แล้วหลังหลังกัน:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
ตัวอย่างด้านล่างใช้ค่า "alternate-reverse" ที่ทำให้อนุรักษ์เคลื่อนไหวหลังหลังกัน แล้วเข้าหน้าหน้า:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
กำหนดเส้นทางความเร็วของการ์ตูน
animation-timing-function
มีความหมายในการกำหนดเส้นทางความเร็วของการ์ตูน
animation-timing-function
มีความสามารถรับค่าที่ต่อไปนี้ได้:
ease
- กำหนดการ์ตูนที่เริ่มช้า หลังจากนั้นเร็วขึ้นแล้วจบช้า (ค่าเริ่มต้นโดยมาตราฐาน)linear
- กำหนดการ์ตูนที่มีความเร็วเดียวกันตั้งแต่เริ่มจนถึงจบease-in
- กำหนดการ์ตูนที่เริ่มช้าease-out
- กำหนดการ์ตูนที่จบช้าease-in-out
- กำหนดการ์ตูนที่เริ่มและจบช้าcubic-bezier(n,n,n,n)
- ประกาศค่าของคุณของตัวเองในสามเส้นโค้งเบซิเออร์
ตัวอย่างดังกล่าวนี้แสดงให้เห็นบางรูปแบบความเร็วที่สามารถใช้ได้:
实例
#div1 {animation-timing-function: linear;} #div2 {animation-timing-function: ease;} #div3 {animation-timing-function: ease-in;} #div4 {animation-timing-function: ease-out;} #div5 {animation-timing-function: ease-in-out;}
กำหนดโครงรูปการ์ตูน
การ์ตูน CSS จะไม่ส่งผลต่อองค์ประกอบก่อนหน้าหรือหลังจากการ์ตูนต้นแบบหรือสุดท้ายanimation-fill-mode
มีความสามารถในการเลื่อนทางการปฏิบัติตามพฤติกรรมนี้
เมื่อไม่มีการเล่นการ์ตูน (ก่อนเริ่มเล่นหรือหลังจากจบหรือทั้งสอง)animation-fill-mode
มีความหมายในการกำหนดสไตลขององค์ประกอบเป้าหมาย
animation-fill-mode สามารถรับค่าที่ต่อไปนี้ได้:
none
- ค่าเริ่มต้นโดยมาตราฐาน。การ์ตูนจะไม่ประกาศคุณสมบัติใดๆต่อองค์ประกอบก่อนหน้าหรือหลังจากการประกาศforwards
- องค์ประกอบจะรักษาคุณสมบัติที่กำหนดโดยอนุกรมต้นแบบสุดท้าย (ขึ้นอยู่กับ animation-direction และ animation-iteration-count)backwards
- องค์ประกอบจะได้รับคุณสมบัติที่กำหนดโดยอนุกรมต้นแบบแรก (ขึ้นอยู่กับ animation-direction) และรักษาค่านี้ระหว่างช่วงเวลาที่การ์ตูนหยุดลงboth
- การ์ตูนจะปฏิบัติตามกฎทั้งทางหน้าและทางหลังพร้อมๆกับการขยายคุณสมบัติการ์ตูนในทั้งสองทาง
ตัวอย่างดังกล่าวทำให้ <div> องค์ประกอบคงทางแบบที่เห็นในทางสุดท้ายของอนุกรมต้นแบบในระหว่างการประกาศแรงโน้ม
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
下面的例子在动画开始之前(在动画延迟期间)使 <div> 元素获得由第一个关键帧设置的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
下面的例子在动画开始之前使 <div> 元素获得第一个关键帧设置的样式值,以及在动画结束时保留最后一个关键帧的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
动画简写属性
下例使用六种动画属性:
实例
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
使用简写的 animation
属性也可以实现与上例相同的动画效果:
实例
div { animation: example 5s linear 2s infinite alternate; }
CSS 动画属性
下表列出了 @keyframes 规则和所有 CSS 动画属性:
属性 | 描述 |
---|---|
@keyframes | 规定动画模式。 |
animation | 设置所有动画属性的简写属性。 |
animation-delay | 规定动画开始的延迟。 |
animation-direction | 定动画是向前播放、向后播放还是交替播放。 |
animation-duration | 规定动画完成一个周期应花费的时间。 |
animation-fill-mode | 规定元素在不播放动画时的样式(在开始前、结束后,或两者同时)。 |
animation-iteration-count | 规定动画应播放的次数。 |
animation-name | 规定 @keyframes 动画的名称。 |
animation-play-state | กำหนดว่าแอนิเมชันจะทำงานหรือหยุด |
animation-timing-function | กำหนดความเร็วของแอนิเมชัน |
- หน้าก่อนหน้า CSS การเปลี่ยนแปลง
- หน้าต่อไป CSS ข้อความช่วยเหลือ