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
attribute สามารถรับค่าต่อไปนี้
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
attribute สามารถรับค่าต่อไปนี้
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
attribute สามารถเกาะต่อพฤติกรรมนี้
ในช่วงที่ไม่มีการเล่นแอนิเมชั่น (ก่อนเริ่ม หลังจากสิ้นสุด หรือทั้งสองปลายทาง)animation-fill-mode
มีความหมายว่ารูปแบบขององค์ประกอบเป้าหมาย
attribute 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 คำขวัญโยน