Sitthiphorn Anthawonksa

ทำความเข้าใจ CSS3 Animations เบื้องต้น

CSS3 Animation

ไม่ว่าจะช้า หรือเร็ว สุดท้ายแล้ว CSS Designer ส่วนใหญ่ก็คงต้องเดินไปถึงจุดนั้นอยู่ดี จุดนั้นในที่นี้ ผมหมายถึงเรื่องของ CSS3 และการทำ Animation ตามท้องเรื่อง เว้นเสียแต่ว่า “ไม่มีความจำเป็นใดใด” ที่ต้องทำ เอาเป็นว่านำเสนอไว้เผื่อเกิดความจำเป็นก็แล้วกันนะครับ แม้ว่ามันจะ ขาดๆ เกินๆ บ้าๆ บวมๆ ก็ตาม

ในบทความนี้ ผมขอพูดถึงเรื่อง พื้นๆ เพื่อเริ่มสร้างความเข้าใจกันไปก่อนนะครับ

คำสั่งพื้นฐานของ Animation ใน CSS3 มีดังนี้

  • animation-name คือ การตั้งชื่อให้กับรูปแบบการแสดงการเคลื่อนไหว
  • animation-duration คือ ระยะเวลาของการเคลื่อนไหว จาก ต้นทาง ไป ปลายทาง
  • animation-timing-function คือ รูปแบบการเล่นใน 1 รอบของการเคลื่อนไหวของ keyframe
  • animation-iteration-count คือ การทำซ้ำ เช่น จะให้ทำกี่รอบ หรือ infinite คือ วนไม่หยุด
  • animation-direction คือ การสั่งทิศทางการเล่น เช่น จาก 1 ถึง 10 หรือจะให้เล่นถอยหลัง จาก 10 มา 1
  • animation-delay คือ จะให้เริ่มทำทันที หรือ ดีเลย์ ตามเวลาที่กำหนด เช่น ถ้าเรากดปุ่มแล้วต้องการให้ animation ที่เราสั่งงานเริ่มเล่นเมื่อเวลาผ่านไปหลังจากกดปุ่ม 2 วินาที เราสามารถกำหนดได้ใน animation-delay โดยค่าเริ่มต้นคือ 0 ซึ่งเป็นการสั่งให้เล่นทันที
  • animation คือ shorthand property หรือการเขียนแบบย่อ โดยการใส่ค่าควรเรียงลำดับจาก <animation-name> || <animation-duration> || <animation-timing-function> || <animation-delay> || <animation-iteration-count> || <animation-direction>

แนวทางการเรียนรู้ CSS3 และ HTML5 ให้เกิดประโยชน์สูงสุด

การเริ่มต้นอย่างถูกวิธีและมีแนวทาง ถือเป็นก้าวสำคัญที่สามารถส่งผลให้การเรียนรู้ ศึกษาเรื่องราวใดๆ ก็ตามเป็นไปอย่างมีแบบแผนและพัฒนาก้าวหน้าได้อย่างรวดเร็ว ไม่ต้องไปเสียเวลาทดลองหรือซุ่มเสี่ยงในสิ่งที่ยังไม่รู้ว่าถูก หรือผิด เพียงแค่เอาเวลาที่เหลือนั้นไปพัฒนา ต่อยอดสิ่งที่มีอยู่นั้นให้ดียิ่งขึ้นไป

แต่ถ้าหากว่า สิ่งที่มันมีอยู่นั้น มันอยู่ตรงไหนกัน “คำถามนี้ ถือเป็นปัญหาหลัก” ในแวดวงการทำงานในส่วนของ CSS และ HTML ของเมืองไทยเรามาหลายปี หรือจะบอกได้ว่าตั้งแต่เริ่มมีคำว่า Tableless หรือ CSS ไหลเข้ามาในหัวของนักพัฒนาเว็บชาวไทยโน่นเลยก็ว่าได้

เพราะมันเพิ่งเริ่ม เพิ่งเกิด จึงไม่มี หรือมีน้อย ส่วนที่มีน้อยนั้นก็ใช่ว่าจะเปี่ยมไปด้วยคุณภาพ หรือที่มีอยู่ดันเปี่ยมไปด้วยความด้อยคุณภาพ จึงทำให้ส่วนงานที่กล่าวมานั้น ยังไม่มีแนวทางหรือต้นแบบในการเรียนรู้ ปฏิบัติอย่างชัดเจน

การใช้ชื่อ Class ของ HTML ร่วมกัน และการตั้งชื่อ Class ID ตามกลุ่มข้อมูล

ตัวอย่างภาพบทความ class และ id

ก่อนหน้านี้ผมได้เขียนบทความ เรื่อง “แนวคิดการตั้งชื่อ Class และ ID ใน HTML เพื่อ Web 4.0” เอาไว้ ซึ่งเวลาก็นานพอสมควร ส่วนใหญ่บทความที่ผมเขียน มันมักจะไม่จบในตอน ซึ่งจะมีการแนะนำให้รออ่านในตอนต่อไป แล้วตอนต่อไป มันก็ไม่ยอมเขียนสักที บทความนี้ก็เช่นกันครับ เป็นบทความตอนต่อ ที่ต้องใช้เวลาร่วม 1 ปี จนสามารถเกิดขึ้นได้

ถึงแม้ว่า ผ่านมา 1 ปีแล้ว ผมก็ยังเชื่อว่า เนื้อหานั้นก็ยังไม่สายเกินไปอยู่ดี เพราะส่วนใหญ่ ไทซีเอสเอส มักจะเขียนบทความในฝัน กว่าที่พวกผมจะตื่นจากฝันมาเขียนบทความนอกฝันก็หลายปี แต่ตั้งแต่นี้ไป พวกผมคงเขียนบทความที่อ่านกันแล้วเข้าใจง่ายยิ่งขึ้นให้เหมาะสมกับประเทศที่กำลังพัฒนา และจะกำลังพัฒนาต่อไปไม่มีที่สิ้นสุดอย่างเมืองไทยของเรา

ไทซีเอสเอส ใหม่เก่าๆ

กรุงเทพ มุมกว้าง สูง ตอนกลางคืน มีรูปตึกไซเบอร์เวิลด์ อยู่ด้านซ้าย

ได้มีโอกาส ยกเครื่อง รื้อ ทำระบบ ค้นพบอดีต ของ ไทซีเอสเอส จากการค้นคลังข้อมูลเก่านั้น ดั่งนิยายน้ำเน่าถ้าผมจะบอกว่า เรื่องราวในตัวหนังสือที่ได้ย้อนกลับไปอ่าน มันทำให้หวนนึกถึงเมื่อครั้งยังคึกคะนองเสียนี่กระไร ไม่ได้นานเลย แค่ 4 ปี กว่าๆ จะห้าปี เท่านั้น

ก่อนหน้านี้

ผมทำใจ คิดทบทวนอยู่นานว่าจะเลือกอย่างไหนดี ระหว่าง “ดันทุรังเขียนโปรแกรมเอง” และ “เปลี่ยนไปใช้ WordPress หรือ Drupal” ซึ่งสุดท้ายผมก็ยอมแพ้สังขารตัวเอง หันมาพึ่งพิงความสะดวกสบาย ที่พอจะยอมรับได้ในยามที่สำเนียกตัวเองได้ว่า อายุมันเพิ่มขึ้นเรื่อยๆ ความคึกคะนองมันย่อมลดลง แปรผกผันกันตามแบบฉบับของธรรมชาติ

ผู้มีบารมีนอกไทซีเอสเอส ท่านหนึ่งใด้ให้ความคิดเห็นมาว่า “ถ้าหากผมเปลี่ยนระบบไปใช้โปรแกรมกึ่งสำเร็จรูปแล้ว จะทำให้เราสูญเสียความแนวหรือแบบฉบับของเราไป” แต่ ในทางกลับกัน ยุคนี้แล้ว ผมก็กลับมาคิดอีกว่า ถ้าผมยังขืนเอาหางอึ่งและขี้เลื่อยที่มีดันทุรังเขียนโปรแกรมเองต่อไปอีก “ผมอาจจะเสียสติ” ไปก่อนก็เป็นได้

เพราะฉะนั้น ผมขอลดความแนว ของเราออกไป ทำอะไรคล้ายๆ ชาวบ้านเขาบ้าง ก็น่าจะลดความเหนื่อย และที่สำคัญเอาเวลาส่วนนี้ไปจัดการเรื่องเนื้อหาที่ต้องทำให้ดีจะดีกว่า เพราะแผนที่วางเอาไว้มีเยอะแยะมากมาย ที่จะต้องทำให้สำเร็จ

และสิ่งที่สำคัญอีกอย่างที่ทำให้ผมตัดสินใจเปลี่ยนระบบ ผมคิดว่า เนื้อหาที่มีอยู่ในเว็บนี้ มันพอมีประโยชน์อยู่บ้าง ถ้าหากผมเกิดตายไป วันนี้ วันพรุ่งนี้ คนอื่นก็ยังสามารถมาดูแลแก้ไขมันต่อไปได้ เพราะผมใช้โปรแกรม แมส แมส อย่าง เวิร์ดเพรส ซึ่ง ใคร ใคร ก็ใช้เป็น

การเขียน CSS Selectors เพื่อสั่งงาน HTML Child Element

child element picture

วันนี้ ผมคิดอะไรออกบางอย่าง เป็นกรณีเส้นขนบังภูเขาไฟ ชนิดที่เรียกได้ว่า ผมน่าจะคิดพบตั้งนานแล้ว ได้แต่นั่ง งงๆ ในความโง่ของตัวเอง เลยเอามาเขียนไว้ตรงนี้อีกที

เหตุการณ์ที่ว่านี้คือ การสั่ง element ใดใด ที่เป็น child element ยกเว้น child ตัวที่ 1

เช่นว่า เราแบ่งเนื้อหาออกเป็น คอลัมน์ แล้วเราต้องการขีดเส้นกั้นเอาไว้ แต่ ถ้าเราสั่ง border เช่น border-left เข้าไปตรงๆ นั้น มันจะทำให้ เกิด เส้นขอบขึ้นที่ ด้านซ้ายสุดของกล่องข้อมูลด้วย เราจำเป็นต้องหาทางลบเส้นขอบมันออกไป โดยที่ยังคงความเป็น semantic ของ html เอาไว้ให้ได้มากที่สุด

เมื่อครั้งเก่าก่อน เราอาจจะเขียน class ขึ้นมา 1 class ซื่อว่า .none-border {border: none;} แล้วเอาไปใส่ ใน element ตัวแรกที่เกิดเส้นขอบขึ้น เพื่อลบเส้นขอบออกไปแทน แต่เกิดคำถามขึ้นว่า ทำไม เราต้องไปเพิ่ม ค่าให้กับ Attribute class นั้น โดยที่ชื่อ class ไม่ได้แสดงออกถึงการสื่อสารด้าน เนื้อหา ข่าวสารในความเป็น Semantic web ของภาษาเลย

ซึ่งหน้าที่เหล่านี้ โดยความรับผิดชอบแล้ว มันอยู่ที่ภาษา CSS ไม่ใช่ HTML

มาดูกันว่า เราจะลบเส้นขอบด้านซ้ายของ คอลัมน์แรกออกไปได้ยังไง โดยที่ไม่ใส่ class เพื่อสั่งลบเส้นขอบออกไป

ต้องการพิธีกรรายการจออีสาน ช่องทีวีไทย ด่วนมาก

ต้องการพิธีกรรายการจออีสาน ช่องทีวีไทย คุณสมบัติดังนี้

  • หน้าตาพอเบิ่งได้ จนถึงดีมาก
  • ลงพื้นที่ภาคอีสานได้
  • มีความเข้าใจปัญหา จุดเด่น ด้านบวก ด้านลบ ของอีสาน
  • มีความเข้่าใจหรือสนใจในการทำงานแบบทีวีสาธารณะ
  • สามารถอดและทนต่อสภาวะกดดันต่างๆ นานาได้

ส่ง resume / portfolio ให้เราเห็นหน้าตา พร้อมส่งคลิปการเป็นพิธีกรรายการสั้นๆ มาให้ดูด้วยจะดีมากเลยครับ

ส่งมาที่ buggo@windowslive.com

หากคิดว่าทำได้ อย่ารอช้า รีบติดต่อมาด่วน … เด้อ

แต่เดี๋ยวก่อน … ถ้าท่านส่งประวัติมาก่อนวันที่ 30 ก.ย. นี้ จะได้รับพิจารณาเป็นพิเศษนะ…อะ..อะ…อะ (ขาเดฟขอร้อง)

Back to Top