คุณเคยเห็นไอคอน ✖ ตรงมุมขวาบนของกล่องใช่ไหม? แค่เห็นปุ๊บก็รู้ปั๊บว่ากดปิด! แต่ถ้าเอาไอคอนนี้ไปไว้กลางกล่องล่ะ? คุณอาจเอะใจว่า “นี่มันปุ่มอะไรเนี่ย”

“รูปภาพพูดแทนคำพูดนับพัน” — ไม่รู้ว่าแทนได้กี่คำจริงๆ แต่ที่แน่ๆ การออกแบบคือเครื่องมือสื่อสารชั้นดีที่บอกเล่า “ความหมาย” ได้มากกว่าตัวหนังสือเป็นตั้งๆ! เหมือนภาษาแบบธรรมดาเลย มันคือการผสมผสานกฎเกณฑ์และธรรมเนียมปฏิบัติจนเกิดเป็นความหมายร่วมกันในสังคม ถ้าเราทำลายกฎพวกนี้เมื่อไหร่ การสื่อสารก็พังทลาย!

จากการที่ผมทำงาน Front-end developer มาเกือบ 10 ปีทำให้ผมรู้ว่าสิ่งหนึ่งที่ควรศึกษาเพิ่มเติมเลยคือพื้นฐานการออกแบบ UI/UX ให้หน้าเว็บออกมาไม่ใช้แค่สวยงาม แต่ทุกจุดนั้นแสดงออกมานั้น มีความหมาย มีความสำคัญ

ซึ่งในบทความนี้จะพยายามสอนให้รู้ศัพท์แสงในวงการ, จับจุดสำคัญเวลาเจอปัญหา และอินกับ Logic การออกแบบมากขึ้น มาลองลุยกัน...

เกี่ยวกับภาพตัวอย่าง

รูปภาพตัวอย่างในบทความนี้ใช้กล่องที่มีเส้นขอบสีดำเพื่อแสดงองค์ประกอบต่างๆ บนหน้าเว็บเหมือนเป็น Wireframe

เส้นสีน้ำเงินที่จะใช้ตลอดภาพตัวอย่างเพื่อทำเครื่องหมายสิ่งที่เราต้องระวัง

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

เส้นสีน้ำเงินที่จะใช้ตลอดภาพตัวอย่างเพื่อทำเครื่องหมายสิ่งที่เราต้องระวัง

วงกลมสีน้ำเงินใช้เพื่อแสดงหน่วยระยะห่าง วงกลมสีน้ำเงินไม่ได้เป็นส่วนหนึ่งของการออกแบบ

วงกลมสีน้ำเงินใช้เพื่อแสดงหน่วยระยะห่าง

การจัดวาง (Alignment)

"จัดวางยังไงให้ปัง? วางตำแหน่งคืออาวุธลับที่ทำให้องค์ประกอบสื่อสารกันได้แบบเนียนๆ! แม้จะไม่มีเส้นกริดให้เห็นชัดๆ แต่แค่จัดองค์ประกอบให้ลงตัว มันก็สร้างความสัมพันธ์แบบ ‘ฉันเข้าใจเธอ เธอเข้าใจฉัน’ ระหว่าง UI กับผู้ใช้ได้แล้วล่ะ

✅ จัดดี = ผู้ใช้โฟกัสเป็น
เหมือนจัดโต๊ะอาหารให้ช้อนส้อมอยู่ข้างจาน ข้าวของวางเป็นระเบียบ แค่กวาดตามองก็รู้เลยว่าต้องทำอะไรต่อ

❌ จัดผิดทาง = ผู้ใช้มึนตึ้บ
เหมือนเปิดตู้เย็นแล้วเจอแกงกะหรี่อยู่ข้างไอศกรีม แค่คิดก็รำคาญแทนแล้ว! (นักออกแบบเห็นทีแรกอาจถึงกับกรี๊ดเลยนะ)"

นี่คือตัวอย่างหน้าจอ Landing Page ลองจินตนาการถึงหน้าเว็บที่แบ่งเป็น 3 ชั้นเหมือนเค้ก (แต่ไม่มีครีมนะ) แล้วจะเห็นเส้นสีน้ำเงินสองเส้นคู่ขนาบข้าง – อย่าเพิ่งเข้าใจผิดว่านี่เป็นส่วนหนึ่งของดีไซน์! มันแค่เส้นช่วยจัดหน้าเฉยๆ

ตัวอย่างหน้าจอ Landing Page

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

ตัวอย่างหน้านี้เหมือนนักออกแบบประกาศชัดเจน “เนื้อหาของเราจะกว้างเท่านี้แหละ จัดองค์ประกอบทั้งหมดให้อยู่ในเส้นน้ำเงินนี้!” เหมือนกั้นเทปเหลืองในสนามแข่งเลย แค่เปลี่ยนเป็นสีน้ำเงินแล้วคนดูไม่เห็นเฉยๆ"

เคยเห็นพื้นหลังที่ดื้อๆ ไม่อยู่ในกรอบบ้างไหม? เหมือนในภาพตัวอย่างเนี่ย เจ้าพื้นหลังนี่ขี้อ้อนชัดๆ ไม่อยากอยู่ในกฎเกณฑ์ที่นักออกแบบตั้งไว้ซะแล้ว!

พื้นหลังที่ไม่อยู่ในกรอบ

บางทีนักออกแบบก็แอบซุ่มเซอร์ไพรส์! ลองสังเกตดีๆ บางองค์ประกอบอาจ ยื่นออกมานอกกรอบแบบตั้งใจ

บางองค์ประกอบอาจ ยื่นออกมานอกกรอบแบบตั้งใจ

นี่คือการแหกกฎแบบมีชั้นเชิง องค์ประกอบที่ยื่นออกมาเปรียบเสมือน นักเรียนดื้อสุดปัง ในห้องเรียน – ยิ่งทำตัวนอกกรอบเท่าไหร่ ยิ่งโดนจับจ้องเท่านั้น!

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

แม้ว่าจะมีองค์ประกอบที่ยื่นออกมานอกขอบเขต แต่องค์ประกอบภายในบางครั้งก็อาจเรียงตัวตรงกับขอบเขต ดังนั้น เราต้องใส่ใจเรื่องนั้น

แม้ว่าจะมีองค์ประกอบที่ยื่นออกมานอกขอบเขต แต่องค์ประกอบภายในบางครั้งก็อาจเรียงตัวตรงกับขอบเขต

ในองค์ประกอบต่างๆ เช่น ปุ่มและ List บางครั้งมีองค์ประกอบที่มีความสูงต่างกันวางเรียงกัน ในกรณีดังกล่าว นักออกแบบอาจเลือกจัดวางองค์ประกอบเหล่านี้ในแนวตั้ง

นักออกแบบอาจเลือกจัดวางองค์ประกอบเหล่านี้ในแนวตั้ง

เวลาเจอไอคอนในกรอบสี่เหลี่ยม อย่าเพิ่งไปกังวลกับรูปร่างของมันมากเกินไป! นักออกแบบมือโปรเค้ามักใช้เทคนิคจัดทุกไอคอนให้อยู่ในกรอบสี่เหลี่ยมเท่ากันเป๊ะ เพื่อให้พื้นที่ในการจัดวางเท่ากันหมด

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

นักออกแบบมือโปรเค้ามักใช้เทคนิคจัดทุกไอคอนให้อยู่ในกรอบสี่เหลี่ยมเท่ากันเป๊ะ

ถ้าคุณใช้ซอฟต์แวร์ UX อย่าง Figma คุณจะสามารถเลือกทั้งกราฟิกของไอคอนและกรอบรอบๆ ได้ แต่ต้องระวังให้ดี! นักออกแบบมือโปรเค้าจะเลือกกรอบ (ซึ่งทำเครื่องหมายด้วยสี่เหลี่ยมสีน้ำเงินในตัวอย่างด้านบน) มากกว่ากราฟิกของไอคอน (สามเหลี่ยมสีดำ)

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

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

จัดกันเป็นทอดๆ หลายชั้นพร้อมกัน

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

ช่องว่าง (Spacing)

เช่นเดียวกับการจัดวาง (Alignment) ช่องว่างก็มีบทบาทสำคัญในการสื่อถึงความสัมพันธ์ระหว่างองค์ประกอบต่างๆ

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

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

เนื่องจากนักออกแบบต้องการสื่อความหมาย ความเป็นระเบียบ และความรู้สึกต่างๆ ผ่านการจัดวางช่องว่าง เราจึงต้องระมัดระวังเป็นพิเศษที่จะรักษาและแสดงผลช่องว่างเหล่านั้นให้ตรงตามที่ตั้งใจไว้

นักออกแบบต้องการสื่อความหมาย ความเป็นระเบียบ และความรู้สึกต่างๆ ผ่านการจัดวางช่องว่าง

ในตัวอย่างข้างต้น เราจะเห็นว่านักออกแบบใช้ระยะห่างเดียวกันสำหรับภายในคอนเทนเนอร์ รวมถึงช่องว่างระหว่างรายการด้วย

เมื่อเรามีองค์ประกอบที่คล้ายกันแต่มีขนาดต่างกัน (เช่น ปุ่ม) บางครั้งนักออกแบบจะปรับช่องว่างภายในเพื่อให้เหมาะสมกับขนาดที่ใหญ่ขึ้น

องค์ประกอบที่คล้ายกันแต่มีขนาดต่างกัน

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

อีกส่วนที่การจัดวางช่องว่างและความใกล้ชิดอาจทำให้เกิดปัญหาคือการออกแบบที่ปรับเปลี่ยนตามขนาดหน้าจอ (responsive layouts) ลองพิจารณาโครงสร้างดังนี้

การออกแบบที่ปรับเปลี่ยนตามขนาดหน้าจอ

ในความกว้างหน้าจอนี้ โครงสร้างมีความสมดุลดี กล่อง 5 กล่องด้านบนเว้นระยะห่างกัน 1 หน่วย ในขณะที่กล่องล่างเว้นระยะห่างจากองค์ประกอบถัดไป 3 หน่วย ซึ่งบ่งบอกว่าไม่ได้มีความเกี่ยวข้องกันมากนัก สมมติว่าเราลดความกว้างของหน้าจอลง และผลลัพธ์คือ

นักออกแบบอาจเลือกจัดวางองค์ประกอบเหล่านี้ในแนวตั้ง

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

โครงสร้างที่ถูกแก้ไข

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

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

นักออกแบบมักจะมีความสม่ำเสมอในการใช้ช่องว่างประเภทเดียวกันสำหรับส่วนต่างๆ ของหน้า

ในโค้ด บางส่วนอาจเป็นระยะขอบภายใน (padding) บางส่วนอาจเป็นระยะขอบภายนอก (margin) หรือช่องว่าง (gap) แต่ทั้งหมดมีขนาด 1 หน่วยในโครงสร้างนี้ ซึ่งทำให้โครงสร้างดูเป็นระเบียบและน่าพึงพอใจมากขึ้น

สถานะเมื่อวางเมาส์ (Hover) และสถานะเมื่อถูกเลือก (Focus)

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

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

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

ขนาดตัวอักษร (Text Size)

ทุกคนน่าจะรู้กันดีว่าขนาดตัวอักษรสำคัญต่อความสามารถในการอ่านแค่ไหน ขนาดตัวอักษร (หรือที่เรียกกันในภาษา CSS ว่า "font size") ที่เล็กกว่า 14px รับประกันได้เลยว่าจะมีคนบางกลุ่มอ่านไม่ออกแน่นอน อย่างผมเอง ขนาด 12px นี่อ่านยากมากในสถานการณ์ปกติ หรือจริงๆ แล้วสำหรับผม อะไรที่เล็กกว่า 16px บนสองจอที่ผมใช้บ่อยๆ ก็ยังไม่ค่อยดีเท่าไหร่เลยครับ แต่ถึงแม้จะไม่พูดถึงเรื่องสายตาที่ไม่ดี ขนาดตัวอักษรก็ยังมีความสำคัญอย่างมากต่อองค์ประกอบอื่นๆ บนหน้าเว็บด้วย

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

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

ปกติแล้ว นักพัฒนาจะตั้งค่า property font-size ใน element body หรือ html เป็นค่า Pixel ตามที่นักออกแบบบอกมาใช่มั้ยครับ? ขอบอกเลยว่านี่เป็นสิ่งที่ "ไม่ควรทำอย่างยิ่ง" ครับ ห้ามตั้งค่า font-size หลักด้วยหน่วยวัดทางกายภาพ เช่น px, pt, cm, in เด็ดขาด! แต่ให้เราใช้วิธีการปรับขนาดจากขนาดตัวอักษรที่เบราว์เซอร์มีให้ โดยใช้เป็นเปอร์เซ็นต์แทนครับ

ตัวอย่างเช่น ถ้านักออกแบบกำหนดให้ขนาดตัวอักษรเริ่มต้นเป็น 18px เราก็ตั้งค่า font-size เป็น 112.5% ครับ เพราะในเบราว์เซอร์ส่วนใหญ่ ขนาดตัวอักษรเริ่มต้นคือ 16px ดังนั้นขนาดตัวอักษรที่แสดงบนหน้าเว็บก็จะใกล้เคียงกับที่ออกแบบไว้ ถ้าผู้ใช้ไม่ได้เปลี่ยนแปลงค่าเริ่มต้น

อีกวิธีหนึ่งที่ทำได้คือ ตั้งค่า font-size เป็น 62.5% ที่ element html วิธีนี้จะปรับขนาดตัวอักษรลงมาเหลือ 10px จากนั้นก็ตั้งค่า font-size ที่ element body เป็น 1.8rem ซึ่งจะทำให้ขนาดตัวอักษรเป็น 18px ในเบราว์เซอร์ส่วนใหญ่ที่ผู้ใช้ไม่ได้เปลี่ยนค่าเริ่มต้น

หลังจากนั้น ให้เรากำหนดขนาดตัวอักษรอื่นๆ ทั้งหมดโดยใช้หน่วย rem, em, หรือเปอร์เซ็นต์ครับ ตัวอย่างเช่น ถ้าเราต้องการให้ขนาดตัวอักษรในองค์ประกอบหนึ่งเป็น 24px และขนาดตัวอักษรพื้นฐานของหน้าเว็บคือ 112.5% ก็จะเท่ากับ 1.33rem หรือถ้าขนาดตัวอักษรพื้นฐานคือ 62.5% ก็จะเท่ากับ 2.4rem และอื่นๆ ในลักษณะเดียวกันครับ

บทสรุป

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

Thank: https://medium.com/@hayavuk/ui-ux-design-fundamentals-for-the-front-end-developers-688ba43eaed4