รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

การทำ CSS3 Transform, Transition เบื่องต้น สำหรับ CSS Animate Designer มือใหม่ !!!

    ปัจจุบันในระดับบริษัท ห้างร้าน เริ่มมี แผนกเขียน CSS HTML แยกออกจาก Interface Design อื่นๆ แต่สำหรับบางบริษัท ยังทำแบบ All-in-one ก็เป็นอันเข้าใจว่า อาจจะด้วยความเบี้ยน้อยแต่หอยใหญ่ ก็ว่ากันไป
     
    มองย้อนกลับไปข้างหลังแล้ว เรามามองโค้งแบบลูกยิงไกลของ โรนัลโด้ บ้าง ว่า ในอนาคตอันใกล้ ใกล้ นี้ ในเรื่องราวของการเขียน CSS HTML มันจะแปลกแปร่งออกไปจากเผ่าพันธุ์เดิมดั้ง ดั่งเคยเป็นมายังไงบ้าง
     
    พูดถึงเรื่องของ Browsers แล้ว ถึงแม้ว่า IE ยังครองส่วนแบ่งการตลาดข้างมากเอาไว้ได้ แต่เมื่อมองย้อนไปยัง ตลาดอื่นๆ ไม่ว่าจะ สามารถโฟน หรือ แทบเล็ด นั้น Apple จองเอาไว้แล้ว และตลาดมีท่าจะโตขึ้นเรื่อยๆ ซะด้วย
     
    ในฐานะ ที่เรายุ่งเกี่ยวอยู่กับบราวเซอร์ เราจึงเห็น Webkit ซึ่งเป็น ฟันเฟืองหลักของ Browser อย่าง Safari และ Chrome เดินหน้าใส่เกียร์ห้า แทบจะอัพเดทกันเดือนต่อเดือนเลยทีเดียว เพื่อทำให้รองรับคุณสมบัติใหม่ๆ ของ CSS3 และ HTML5 (ขอเกริ่นไว้นิดหนึ่งนะครับ ว่า CSS4 และ HTML6 เริ่มวางแผนพัฒนาแล้ว) ในขณะที่เจ้า ไทรเด้น เพิ่งจะ ทำขอบโค้งมนได้ ใน IE9 ทาง Webkit เขาทำหน้าเว็บกลายร่างเป็นหุ่นยนต์ไปเรียบร้อย
     
    อย่าลืมนะครับว่า บางคนเขาเขียนเว็บให้แสดงผลใน iPhone กะ iPad เท่านั้น เขาจะมาสนใจใยดี IE กันทำไมอีก
     
    แต่สุดท้ายแล้ว IE ก็คงเดินตามแบบทอดน่องมาทันกันเหมือนเดิม แต่เมื่อไหร่นั้น ก็ค่อยมาว่ากันอีกที
     
    CSS3 มี Transform และ Transition เพื่อเอามาทำงานเกี่ยวกับการเคลื่อนไหวโดยเฉพาะ ซึ่งก่อนหน้านี้ เราอาศัย Java script เข้าช่วย ด้วยไลบารี่ของ jQuery แต่ ในอนาคต เราไม่จำเป็นต้องเอา jQuery มาทำการเคลื่อนที่ เคลื่อนไหวให้กับของที่อยู่ในหน้าเว็บอีกแล้ว เอาไปจัดการในเรื่อง ระบบ ข้อมูลโน่นเลยดีกว่า เพราะ CSS3 จะดึงอะไรก็ตามที่เกี่ยวกับ UI ที่ Java script ทำอยู่ออกมาให้หมด ให้สมกับคำว่าเป็นภาษา Presentation อย่างแท้จริง
     
    เมื่อเวลานั้นมาถึง สิ่งที่จะตามมาร้อยเปอร์เซนต์ คือ ต้องทำความเข้าใจการเขียนโค้ด CSS ใหม่ ซึ่งมันไม่ใช่แค่แสดงผลถูกต้อง มันต้อง เคลื่อนไหวอย่างถูกต้อง ด้วย
     
    เดือนก่อนหน้านี้ ผมลองเล่นเรื่อง Transform และ Transition ตอนนั้นผมยังไม่คิดว่ามันจะไม่เป็นปัญหาของพวกเขียน CSS HTML แบบ อนุรักษ์นิยม แต่ พอมาวันนี้ผมคิดว่า มันจะเป็นปัญหาแน่นอน
     
    หลังจากที่เรามี CSS Designer แล้ว อีกไม่นานเกินรอ อาชีพนี้ จะเกิดตำแหน่งงานใหม่มาอีก 1 ตำแหน่งคือ CSS Motion Editor Designer หรือเรียกแบบบ้านๆ ว่า มือตัดต่อภาค CSS การตัดต่องานแบบนี้ ไม่มีเครื่องมือช่วยเหมือนตอนที่เราตัดต่อหนัง ตัดต่อ วิดีโอ เป็นการ ตัดต่อด้วย CSS ล้วนๆ
     
     ไม่ว่าจะช้า หรือเร็ว สุดท้ายแล้ว 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 Animations ก็คือ 1. สร้าง Animation name และ 2. Add Keyframe ซึ่งเมื่อเราสร้าง Animation name แล้ว เราสามารถที่จะเพิ่มคำสั่งให้ animation ที่เราสร้างขึ้นมานั้น ทำงานในรูปแบบต่างๆ ด้วยคำสั่งที่เราต้องการ เช่น ในตัวอย่าง
     
    .container>div:nth-child(1) {
    -webkit-animation: night 40s linear infinite;/*สำหรับสั่งงาน -Webkit-*/
    animation: night 40s linear  infinite; /*ใช้งานจริง*/
    }
     
    เพื่อไม่ให้เป็นการสร้างความสับสน ตัวอย่างด้านล่าง ผมจะยกมาเฉพาะ คำสั่งที่มี Prefix -webkit- นะครับ
     
    จากคำสั่งด้านบน .container>div:nth-child(1) {...} อ่านว่า : div ที่เป็นลูกคนที่ 1 ของแม่ที่มี class เป็นประเภท container ให้กระทำการ …
     
    -webkit-animation: night 40s linear infinite;
    การเขียนโค้ด แบบ shorthand ด้านบนนั้น แยกออกมาเป็น แบบเต็มๆ ได้โดยอ้างอิงตามกฎที่ถูกกำหนดมา เป็นไปได้ควรเรียงลำดับจาก <animation-name> || <animation-duration> || <animation-timing-function> || <animation-delay> || <animation-iteration-count> || <animation-direction> ถ้าเราไม่มีค่าใด ที่ต้องสั่งเราก็ไม่จำเป็นต้องสั่งเข้ามา
     
    ผมเริ่มสั่งงานจาก animation-name = night, animation-duration = 40 วินาที, animation-timing-function = linear, animation-iteration-count = infinite คือ ให้ animation นี้ มีชื่อว่า night ให้แสดงในหนึ่งรอบเป็นเวลา 40 วินาที รูปแบบการเชื่อมต่อระหว่างรอบของ animation นั้นให้เป็นแบบ linear และจำนวนการวนรอบแสดงผลคือ ไม่จำกัด (infinite)
     

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

     
    animation-name
     
    การตั้งชื่อให้กับ Animation ตั้งยังไงก็ได้ ให้ดูความเหมาะสมของงานนะครับ
     
    animation-duration
     
    ระยะเวลาเล่นใน 1 รอบ ให้ใส่เป็นวินาที
     
    animation-timing-function
     
    คือรูปแบบการเชื่อมต่อของ animation ในแต่ละรอบ
     
    ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier
     
    ค่าพื้นฐานที่ W3C ให้มาคือ ease
     
    animation-iteration-count
     
    คือ จำนวนรอบที่ต้องการให้แสดง ให้สั่งโดยการใส่เป็นตัวเลข เช่นอยากให้วน 10 รอบก็ใส่ เลข 10 และถ้าอยากให้วนจนเมากันไปข้างก็ใส่ infinite
     
    ค่าพื้นฐานที่ W3C ให้มาคือ 1
     
    animation-direction
     
    คือการสั่งทิศทางการเคลื่อนไหว มี normal | alternate ซึ่งค่าพื้นฐานคือ normal
     
    animation-delay
     
    คือ คำสั่งเริ่มการทำงาน หรือจะให้ ดีเลย์ ค่าพื้นฐานคือ เริ่มเลย โดยการสั่งให้สั่งเป็นวินาที
     

    การ Add Keyframes ให้กับ Animation

     
    เราสามารถที่จะสร้างรูปแบบการเคลื่อนไหวให้แก่ Object ก่อน หรือ สร้าง Keyframes ขึ้นมาก่อนก็ได้ แล้วแต่ความถนัดส่วนบุคคล โดยในที่นี้ ผม add keyframes เข้าไปทีหลัง การเคลื่อนไหวของ ของ แต่ละอย่างนั้น จะเริ่มนับจากจุด เริ่ม ไปยังจุด สิ้นสุด โดยที่เราเป็นคนกำหนดเอง เราสามารถกำหนดว่า เริ่มจาก A ไปยัง B ให้ใช้ A เป็นจุดที่ 0% และ B เป็นจุดที่ 100% ของการเดินทาง โดยในระหว่างทางที่เดินนั้น เราสามารถเพิ่มคำสั่งงาน Animation ได้อีกใน Keyframes นั้นๆ
     
    จากโค้ด ตัวอย่าง ที่ผมสั่งงาน Animation named Night
     
    @-webkit-keyframes night {
      0%
    {
    background-position: 0px 0;
    }
    50% {
    background-position: -1000px 0;
    }
    100%
    {
    background-position: -2000px 0;
    }
    }
     
    คือ จุดที่ 0% นั้น ผมให้ background-position: อยู่ที่ตำแหน่ง 0 0; พอไปถึงที่ 50% เปลี่ยนเป็น -1000px 0; คือ พื้นหลังนั้น เดินจากทางขวาย้อนมาทางซ้าย จนถึง 100% ที่ -2000px 0; ปรากฏการณ์นี้คือ พื้นหลัง วิ่งได้
     
    หลายคนอาจจะเริ่มงงว่า แล้วทำไมมันวิ่งได้โดยไม่กระตุก เพราะถ้า background ที่วิ่งมาจนสุดด้านซ้าย ซึ่งสวนทางกับรถที่วิ่งจากซ้ายไปขวานั้น การกลับไปเริ่มใหม่มันต้องเห็นขอบตกของพื้นหลัง
     
    สังเกตได้ว่า ผมเขียน div เอาไว้สองตัว เพื่อสับขาหลอกการแสดงผล ความกว้างของภาพพื้นหลังนั้นคือ 2000px โดยที่ div ทั้งสองตัวนั้น อยู่ นิ่งๆ สิ่งที่วิ่งไม่ใช่ div แต่เป็น พื้นหลัง (background) ต่างหากที่วิ่ง โดยพื้นหลังของทั้งสอง div นั้นมีการเคลื่อนไหวที่ แปรผกผันกัน จึงทำให้การเคลื่อนไหวลงตัวพอดี
     
    @-webkit-keyframes night {
      0%
    {
    background-position: 0px 0;
    }
    50% {
    background-position: -1000px 0;
    }
    100%
    {
    background-position: -2000px 0;
    }
    }
    @-webkit-keyframes night2 {
      0%
    {
    background-position:  2000px 0;
    }
    50% {
    background-position: 1000px 0;
    }
    100%
    {
    background-position: 0px 0;
    }
    }
     
    ดูเหมือนจะยุ่งยาก นะครับแต่จริงๆ มันง่ายครับ ง่ายกว่าเขียน HTML เยอะเลย
     
     
บทความที่น่าสนใจ

บทความ ล่าสุด

บทความ ความรู้ด้านไอที, คอมพิวเตอร์ Techonlogy, Gadget, ความรู้เกี่ยวกับคอมพิวเตอร์ กับทาง SoftMelt.com