เมื่อคุณออกแบบหน้าเว็บ คุณอาจต้องการเพิ่มการเปลี่ยนผ่านไปยังองค์ประกอบ การเปลี่ยนแปลงจะเกิดขึ้นเมื่อตรงตามเงื่อนไขที่กำหนด ตัวอย่างเช่น คุณอาจต้องการให้สีพื้นหลังของปุ่มเปลี่ยนไปเมื่อผู้ใช้วางเมาส์เหนือปุ่ม
คุณสามารถใช้คุณสมบัติการเปลี่ยน CSS และคุณสมบัติย่อยเพื่อสร้างเอฟเฟกต์ภาพเคลื่อนไหวเมื่อคุณสมบัติขององค์ประกอบ HTML เปลี่ยนไป
บทช่วยสอนนี้จะกล่าวถึงตัวอย่างบางส่วนเกี่ยวกับพื้นฐานของการเปลี่ยน CSS และวิธีใช้คุณสมบัติการเปลี่ยนเพื่อสร้างภาพเคลื่อนไหว CSS ในตอนท้ายของบทช่วยสอนนี้ คุณจะเป็นผู้เชี่ยวชาญในการทำงานกับการเปลี่ยน CSS และคุณสมบัติการเปลี่ยน
การเปลี่ยน CSS
โดยค่าเริ่มต้น เมื่อค่าของคุณสมบัติ CSS เปลี่ยนแปลง หน้าเว็บจะนำการเปลี่ยนแปลงไปใช้ทันที
ตัวอย่างเช่น หากคุณสร้างการเปลี่ยนแปลงรูปแบบที่เปิดใช้งานเมื่อเคอร์เซอร์วางเมาส์เหนือปุ่ม สไตล์ใหม่จะถูกนำมาใช้ทันทีที่ผู้ใช้วางเคอร์เซอร์ไว้เหนือปุ่ม ทันทีที่เคอร์เซอร์ของผู้ใช้เคลื่อนออกจากปุ่ม ปุ่มจะเปลี่ยนกลับเป็นสไตล์เริ่มต้นทันที
คุณลักษณะการเปลี่ยน CSS ใช้เพื่อสร้างการเปลี่ยนแปลงที่ราบรื่นระหว่างสองสไตล์ เมื่อคุณใช้คุณสมบัติการเปลี่ยน หน้าเว็บจะทำให้การเปลี่ยนแปลงระหว่างสองสไตล์เคลื่อนไหว คุณสมบัตินี้ช่วยให้คุณสร้างการเปลี่ยนแปลงสไตล์ที่สวยงามน่าพึงพอใจยิ่งขึ้น
มีสององค์ประกอบของการเปลี่ยน CSS เหล่านี้คือ:
- คุณสมบัติ CSS ใหม่ที่คุณต้องการนำไปใช้กับองค์ประกอบ
- ระยะเวลาของการเปลี่ยนแปลง
โดยค่าเริ่มต้น ระยะเวลาของการเปลี่ยนจะถูกตั้งค่าเป็น 0 วินาที ซึ่งหมายความว่าถ้าคุณไม่กำหนดระยะเวลา การเปลี่ยนแปลงที่คุณระบุจะไม่มีผล กล่าวคือ การเปลี่ยนแปลงรูปแบบจะเกิดขึ้นทันที
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ตัวอย่างการเปลี่ยน CSS
สมมติว่าเรากำลังออกแบบปุ่มสำหรับเว็บไซต์ และเราต้องการให้รูปแบบของปุ่มเปลี่ยนไปเมื่อผู้ใช้วางเคอร์เซอร์ไว้เหนือปุ่มนั้น เมื่อผู้ใช้ไม่ได้วางเคอร์เซอร์ไว้เหนือปุ่ม ปุ่มควรมีเส้นขอบสีน้ำเงิน จากนั้น เมื่อผู้ใช้วางเคอร์เซอร์เหนือปุ่มนั้น สีพื้นหลังของปุ่มควรเปลี่ยนจากสีเริ่มต้น (สีขาว) เป็นสีน้ำเงิน
ในทั้งสองสถานะ ปุ่มควรมีความสูง 100px กว้าง 100px และข้อความในปุ่มควรอยู่ตรงกลาง การเปลี่ยนแปลงระหว่างสองสถานะควรใช้เวลาสองวินาที
นี่คือรหัสที่เราจะใช้สร้างปุ่มนี้:
index.html <div><p>This is a button.</p></div> styles.css div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition: background-color 2s; } div:hover { background-color: #33CCFF; }
รหัสของเราส่งคืน:
[Code result here]
ในโค้ดของเรา เราระบุว่าปุ่มของเราควรมีความกว้าง 100px สูง 100px และเนื้อหาของปุ่มควรมีการจัดตำแหน่งกึ่งกลาง นอกจากนี้เรายังระบุเส้นขอบสีน้ำเงินทึบกว้าง 3 พิกเซลสำหรับปุ่มของเรา
เมื่อคุณวางเคอร์เซอร์ไว้เหนือปุ่ม คุณจะเห็นว่าสีพื้นหลังของปุ่มเปลี่ยนเป็นสีน้ำเงิน เมื่อคุณเลื่อนเคอร์เซอร์ออกไป สีพื้นหลังของปุ่มจะเปลี่ยนกลับเป็นสีขาว
ในตัวอย่างนี้ เราระบุช่วงการเปลี่ยนภาพสองวินาทีสำหรับคุณสมบัติสีพื้นหลัง ซึ่งหมายความว่าเมื่อผู้ใช้วางเคอร์เซอร์เหนือปุ่มนั้น สีพื้นหลังของปุ่มจะใช้เวลาสองวินาทีในการเปลี่ยนจากสีขาวเป็นสีน้ำเงินทั้งหมด หรืออีกนัยหนึ่ง การเปลี่ยนแปลงไม่ได้เกิดขึ้นทันที
ในทำนองเดียวกัน เมื่อผู้ใช้เลื่อนเคอร์เซอร์ออกจากปุ่ม สีพื้นหลังจะเปลี่ยนจากสีน้ำเงินเป็นสีขาวในช่วงสองวินาที ดังนั้นอีกครั้ง ไม่ใช่ในทันที ดังนั้น เราจึงสามารถเปลี่ยนสีพื้นหลังใหม่ได้ภายใน 2 วินาทีอย่างราบรื่นโดยอิงตามตำแหน่งของเคอร์เซอร์บนหน้า
จากนั้นเราระบุรูปแบบที่เราต้องการเรียกใช้เมื่อผู้ใช้วางเคอร์เซอร์เหนือปุ่ม เราทำได้โดยใช้ตัวเลือก :hover โปรแกรมใช้สไตล์ที่กำหนดไว้ในตัวเลือก :hover กับองค์ประกอบเมื่อผู้ใช้วางเมาส์เหนือองค์ประกอบนั้นด้วยเคอร์เซอร์
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ CSS :hover selector โปรดอ่านคู่มือ CSS :hover selector ของเรา
เส้นโค้งความเร็วการเปลี่ยนภาพ
คุณสมบัติ Transition-timing-function ช่วยให้คุณสามารถระบุเส้นโค้งความเร็วของเอฟเฟกต์การเปลี่ยนแปลงได้ นี่คือค่าบางส่วนที่คุณสมบัตินี้ยอมรับ:
ค่านิยม (และคำอธิบายที่สอดคล้องกัน)
ของคุณสมบัติการเปลี่ยนเวลา-ฟังก์ชัน
ค่า | คำอธิบายของเส้นโค้งความเร็วการเปลี่ยน |
ง่าย | สตาร์ทช้า แล้วก็เร่งเร็ว แล้วก็จบช้า (ค่าเริ่มต้น) |
ง่ายต่อการใช้งาน | สตาร์ทช้า ตามด้วยเร่งเร็ว |
ผ่อนสบาย | เริ่มเร็ว แล้วก็จบช้า |
เชิงเส้น | ความเร็วเท่าเดิมตั้งแต่ต้นจนจบ |
cubic-bezier(n,n,n,n) | การเปลี่ยนแปลงแบบลูกบาศก์เบซิเยร์ |
อย่างที่คุณเห็น ค่าแรกในตารางนี้—“ease”—คือค่าดีฟอลต์ ซึ่งหมายความว่าถ้าคุณไม่ระบุค่าสำหรับคุณสมบัติ Transition-timing-Function หรือหากคุณไม่ได้ระบุคุณสมบัติเลยเมื่อกำหนดสไตล์การเปลี่ยนแปลง หน้าเว็บจะใช้ค่าเริ่มต้นตามค่านี้
ลองใช้โค้ดจากตัวอย่างสุดท้ายของเราเพื่อแสดงให้เห็นว่าคุณสมบัติ Transit-timing-function ทำงานอย่างไร ในตัวอย่างที่แล้ว เราระบุเส้นโค้งความเร็ว "ง่าย" ซึ่งหมายความว่าการจัดรูปแบบปุ่มของเราจะเปลี่ยนจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่งด้วยการสตาร์ทช้า การเร่งความเร็วที่รวดเร็ว และการสิ้นสุดที่ช้า
อย่างไรก็ตาม สมมติว่าเราต้องการให้ปุ่มของเราเปลี่ยนเป็นสีพื้นหลังใหม่โดยใช้การเปลี่ยนเชิงเส้น เราสามารถทำได้โดยการระบุค่า "ความง่ายใน" นี่คือรหัสสำหรับสิ่งนี้:
<div><p>This is a button.</p></div> div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition: background-color 2s linear 0.5s; } div:hover { background-color: #33CCFF; }
รหัสของเราส่งคืน:
[Result of code]
สไตล์ของเราส่วนใหญ่จะเหมือนกับสไตล์ที่เราใช้ในตัวอย่างที่แล้ว ข้อแตกต่างเพียงอย่างเดียวคือแทนที่จะระบุ ease
การเปลี่ยนแปลง เราระบุ linear
การเปลี่ยนแปลง ซึ่งหมายความว่าความเร็วของการเปลี่ยนแปลงจะยังคงสม่ำเสมอเมื่อมีการทริกเกอร์
ความล่าช้าในการเปลี่ยน
คุณสมบัติการหน่วงเวลาการเปลี่ยนภาพทำให้คุณสามารถระบุการหน่วงเวลาสำหรับเอฟเฟกต์การเปลี่ยนแปลงได้ ค่าที่กำหนดให้กับคุณสมบัติการหน่วงเวลาการเปลี่ยนควรเป็นหน่วยวินาที
สมมติว่าเราต้องการให้ปุ่มของเราเปลี่ยนเป็นสีพื้นหลังใหม่หลังจากผ่านไปหนึ่งวินาที เราสามารถทำภารกิจนี้ให้สำเร็จโดยใช้รหัสต่อไปนี้:
<div><p>This is a button.</p></div> div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition: background-color ease-in 0.5s; transition-delay: 1s; } div:hover { background-color: #33CCFF; }
รหัสของเราส่งคืน:
[Code result here]
ในโค้ดของเรา เราระบุการหน่วงเวลาของการเปลี่ยนเป็นหนึ่งวินาที ดังนั้น การเปลี่ยนแปลงจะไม่เริ่มจนกว่าจะถึงหนึ่งวินาทีหลังจากที่ผู้ใช้เริ่มวางเคอร์เซอร์เหนือปุ่ม
การใช้การเปลี่ยนหลายครั้ง
เมื่อคุณทำงานกับทรานซิชัน คุณอาจตัดสินใจว่าคุณต้องการให้เอฟเฟกต์การเปลี่ยนเกิดขึ้นมากกว่าหนึ่งรายการ
คุณสามารถทำได้โดยระบุทรานซิชันหลายๆ แบบและคั่นทรานซิชันแต่ละรายการด้วยเครื่องหมายจุลภาค การเปลี่ยนแต่ละครั้งสามารถมีระยะเวลา เส้นโค้งความเร็ว และคุณลักษณะอื่นๆ ที่การเปลี่ยนแปลงปกติจะใช้
ตัวอย่างเช่น ลองมาดูตัวอย่างปุ่มของเราก่อนหน้านี้ สมมติว่าเราต้องการเปลี่ยนไม่เพียงแต่สีพื้นหลังของปุ่มของเราเป็นสีน้ำเงิน แต่ยังต้องการเปลี่ยนสีขอบของปุ่มของเราเป็นสีชมพูด้วย ทั้งสองสิ่งนี้ควรเกิดขึ้นเมื่อผู้ใช้วางเมาส์เหนือองค์ประกอบด้วยเคอร์เซอร์ เราสามารถใช้รหัสต่อไปนี้เพื่อทำงานนี้ให้สำเร็จ:
div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition: background-color 2s, border 2s; } div:hover { background-color: #33CCFF; border: solid 3px lightpink }
รหัสของเราส่งคืน:
[Code result here]
เมื่อคุณวางเมาส์เหนือปุ่ม สีพื้นหลังของปุ่มจะเปลี่ยนเป็นสีน้ำเงินและสีของเส้นขอบจะเปลี่ยนเป็นสีชมพูอ่อน การเปลี่ยนแปลงนี้ใช้เวลาสองวินาทีจึงจะเสร็จสมบูรณ์
ลำดับที่การเปลี่ยนแปลงแต่ละรายการในรายการการเปลี่ยนจะไม่ส่งผลต่อลักษณะการเปลี่ยนที่ปรากฏ
การเปลี่ยน CSS Longhand เทียบกับ Shorthand
ในตัวอย่างข้างต้น เราใช้คุณสมบัติการเปลี่ยนแปลงเพื่อจัดรูปแบบการเปลี่ยนแปลงของเรา คุณสมบัติการเปลี่ยนแปลงเป็นการจดชวเลขสำหรับคุณสมบัติย่อยสี่รายการที่ใช้ในการกำหนดการเปลี่ยนแปลงใน CSS คุณสมบัติย่อยสี่เหล่านี้คือ:
- คุณสมบัติการเปลี่ยนผ่าน :ตั้งค่าคุณสมบัติที่จะใช้เอฟเฟกต์การเปลี่ยนแปลง
- ช่วงการเปลี่ยนภาพ :ระบุว่าการเปลี่ยนแปลงจะใช้เวลานานแค่ไหน
- ฟังก์ชันเวลาเปลี่ยนผ่าน :กำหนดความเร็วของการเปลี่ยนแปลง
- การเปลี่ยนแปลง-ล่าช้า :ชะลอการเริ่มต้นของการเปลี่ยนแปลง
ลองใช้ตัวอย่างข้างต้นของเราเพื่อแสดงให้เห็นว่าคุณสมบัติเหล่านี้ทำงานอย่างไร สมมติว่าเราต้องการสร้างปุ่มขนาด 100px คูณ 100px ที่มีเส้นขอบสีน้ำเงิน สีพื้นหลังเริ่มต้น (สีขาว) และข้อความที่จัดกึ่งกลาง สีพื้นหลังของปุ่มของเราควรเปลี่ยนเป็นสีน้ำเงินเมื่อผู้ใช้วางเคอร์เซอร์เหนือปุ่มนั้น การเปลี่ยนแปลงนี้ควรใช้เวลา 2 วินาที และควรเริ่ม 0.5 วินาทีหลังจากที่ผู้ใช้เริ่มวางเมาส์เหนือปุ่มด้วยเคอร์เซอร์
เราสามารถใช้รหัสต่อไปนี้เพื่อทำงานนี้ให้สำเร็จ:
<div><p>This is a button.</p></div> div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition-property: background-color; transition-duration: 2s; transition-timing-function: ease; transition-delay: 0.5s; } div:hover { background-color: #33CCFF; }
รหัสของเราส่งคืน:
[Code result]
อย่างที่คุณเห็น เราได้สร้างปุ่มที่เปลี่ยนจากสีพื้นหลังสีน้ำเงิน การเปลี่ยนแปลงเหล่านี้เกิดขึ้นเมื่อผู้ใช้วางเคอร์เซอร์เหนือและออกจากปุ่มตามลำดับ
ในโค้ดของเรา เราได้ระบุคุณสมบัติย่อยของการเปลี่ยนแปลงสี่ประการ (คุณสมบัติการเปลี่ยนผ่าน ระยะเวลาการเปลี่ยนภาพ ฟังก์ชันกำหนดเวลาการเปลี่ยน และระยะเวลาในการเปลี่ยนแปลง) สำหรับการเปลี่ยนแปลงของเรา เรายังใช้สไตล์จากตัวอย่างก่อนหน้านี้เพื่อกำหนดความสูง ความกว้าง การจัดตำแหน่งข้อความ และสีเส้นขอบของปุ่มของเรา
อีกทางหนึ่ง เราสามารถใช้ชวเลขการเปลี่ยนแปลง การใช้ชวเลขช่วยให้เราสามารถระบุการเปลี่ยนแปลง CSS ของเราในโค้ดหนึ่งบรรทัด แทนที่จะเป็นสี่บรรทัดที่เราใช้ก่อนหน้านี้ ไวยากรณ์สำหรับชวเลขการเปลี่ยนแปลงมีดังนี้:
การเปลี่ยนแปลง:การเปลี่ยนแปลงคุณสมบัติการเปลี่ยนแปลงระยะเวลา
ลำดับของค่าที่ระบุข้างต้นคือลำดับที่คุณต้องใช้เมื่อสร้างการเปลี่ยนแปลง
ลองใช้ตัวอย่างเพื่อแสดงให้เห็นว่าชวเลขการเปลี่ยนแปลงทำงานอย่างไร นี่คือรหัสที่เราจะใช้เพื่อสร้างปุ่มของเราจากรุ่นก่อนหน้าโดยใช้ชวเลขการเปลี่ยนแปลง:
<div><p>This is a button.</p></div> div { width: 100px; height: 100px; text-align: center; border: solid 3px #33CCFF; transition: background-color 2s ease 0.5s; } div:hover { background-color: #33CCFF; }
รหัสของเราส่งคืน:
[Code result here]
อย่างที่คุณเห็น เราใช้สไตล์เดียวกันกับที่เราทำในตัวอย่างก่อนหน้านี้ ความแตกต่างเพียงอย่างเดียวคือ แทนที่จะระบุรูปแบบสำหรับการเปลี่ยนแปลงของเราโดยแสดงรายการคุณสมบัติย่อยแต่ละรายการในบรรทัดของตนเอง เราใช้ชวเลขการเปลี่ยนแปลงแทน
บทสรุป
คุณสมบัติการเปลี่ยนแปลง CSS ใช้เพื่อกำหนดประเภทของการเปลี่ยนแปลงที่จะเกิดขึ้นระหว่างสไตล์ คุณสมบัติทรานซิชันมีคุณสมบัติชวเลขสี่:คุณสมบัติการเปลี่ยนแปลง, การเปลี่ยนแปลง-ล่าช้า, ฟังก์ชันเวลาเปลี่ยนและระยะเวลาการเปลี่ยนแปลง คุณสามารถใช้คุณสมบัติย่อยเหล่านี้เพื่อตั้งค่าองค์ประกอบของสไตล์การเปลี่ยนทีละรายการ
ด้วยตัวอย่าง บทช่วยสอนนี้กล่าวถึงวิธีสร้างการเปลี่ยนแปลงใน CSS โดยใช้คุณสมบัติการเปลี่ยนแปลงและคุณสมบัติย่อยสี่ประการ ตอนนี้คุณพร้อมที่จะเริ่มสร้างการเปลี่ยน CSS เหมือนนักพัฒนาเว็บมืออาชีพแล้ว!