ใช้ฟีเจอร์ของเบราว์เซอร์ข้ามแพลตฟอร์มเพื่อสร้างแบบฟอร์มลงชื่อเข้าใช้ที่ปลอดภัย เข้าถึงได้ และใช้งานง่าย
หากผู้ใช้จำเป็นต้องลงชื่อเข้าใช้เว็บไซต์ของคุณ การออกแบบฟอร์มการลงชื่อเข้าใช้ที่ดีคือ ที่สำคัญ โดยเฉพาะอย่างยิ่งสำหรับผู้ที่มีการเชื่อมต่อที่สัญญาณไม่ดี หากใช้อุปกรณ์เคลื่อนที่ ความเร่งรีบ หรือความเครียด แบบฟอร์มลงชื่อเข้าใช้ที่ออกแบบอย่างดีจะมีอัตราตีกลับสูง การตีกลับแต่ละครั้งอาจหมายถึงผู้ใช้ที่หายไปและไม่พอใจ ไม่ใช่แค่ลงชื่อเข้าใช้ผิด โอกาส
ต่อไปนี้เป็นตัวอย่างแบบฟอร์มลงชื่อเข้าใช้ง่ายๆ ที่แสดงให้เห็นแนวทางปฏิบัติแนะนำทั้งหมด
เช็กลิสต์
- ใช้องค์ประกอบ HTML ที่มีความหมาย:
<form>
,<input>
,<label>
และ<button>
- ติดป้ายกำกับอินพุตแต่ละรายการด้วย
<label>
- ใช้แอตทริบิวต์ขององค์ประกอบเพื่อเข้าถึงเบราว์เซอร์ในตัว
ฟีเจอร์:
type
,name
,autocomplete
,required
- ระบุค่าคงที่ของอินพุต
name
และid
ที่ไม่มีการเปลี่ยนแปลง ระหว่างการโหลดหน้าเว็บหรือการติดตั้งใช้งานเว็บไซต์ - ใส่การลงชื่อเข้าใช้ใน<แบบฟอร์ม>ของตนเอง องค์ประกอบ
- ตรวจสอบว่าการส่งแบบฟอร์มสำเร็จ
- ใช้
autocomplete="new-password"
และid="new-password"
สำหรับ ป้อนรหัสผ่านในแบบฟอร์มลงชื่อสมัครใช้ และรหัสผ่านใหม่ในแบบฟอร์มรีเซ็ตรหัสผ่าน - ใช้
autocomplete="current-password"
และid="current-password"
เพื่อป้อนรหัสผ่านในการลงชื่อเข้าใช้ - มีฟังก์ชันแสดงรหัสผ่าน
- ใช้
aria-label
และaria-describedby
สำหรับ รหัสผ่าน - อย่าเพิ่มการป้อนข้อมูล 2 ครั้ง
- ออกแบบแบบฟอร์มให้แป้นพิมพ์มือถือไม่บดบังอินพุตหรือ ปุ่ม
- ตรวจสอบว่าแบบฟอร์มใช้งานได้บนอุปกรณ์เคลื่อนที่โดยใช้ข้อความที่อ่านได้ชัดเจน และตรวจสอบว่าอินพุตและปุ่มใหญ่พอที่จะใช้เป็นเป้าหมายการสัมผัสได้
- รักษาการสร้างแบรนด์และสไตล์บนหน้าลงชื่อสมัครใช้และหน้าลงชื่อเข้าใช้ของคุณ
- ทดสอบภาคสนามรวมถึงในห้องทดลอง: สร้างการวิเคราะห์หน้าเว็บ การวิเคราะห์การโต้ตอบ รวมถึงการวัดประสิทธิภาพที่เน้นผู้ใช้เป็นหลักลงใน ขั้นตอนการลงชื่อสมัครใช้และการลงชื่อเข้าใช้
- ทดสอบในเบราว์เซอร์และอุปกรณ์ต่างๆ: ลักษณะการทำงานของรูปแบบจะแตกต่างกันไป ในแพลตฟอร์มต่างๆ อย่างมีนัยสำคัญ
ใช้ HTML ที่มีความหมาย
ใช้องค์ประกอบที่สร้างขึ้นสำหรับงาน: <form>
, <label>
และ <button>
สิ่งเหล่านี้ช่วยให้
ฟังก์ชันของเบราว์เซอร์ในตัว เพิ่มความสามารถในการเข้าถึง และเพิ่มความหมายให้กับ
มาร์กอัป
ใช้ <form>
คุณอาจอยากรวมอินพุตไว้ใน <div>
และจัดการข้อมูลอินพุต
ด้วย JavaScript เท่านั้น แต่โดยทั่วไปจะใช้แท็กเก่าธรรมดาๆ
<form>
วิธีนี้จะช่วยให้โปรแกรมอ่านหน้าจอและโปรแกรมอำนวยความสะดวกอื่นๆ เข้าถึงเว็บไซต์ของคุณได้
ให้คุณใช้ฟีเจอร์ที่หลากหลายในเบราว์เซอร์ ทำให้การสร้าง
การลงชื่อเข้าใช้ฟังก์ชันพื้นฐานสำหรับเบราว์เซอร์รุ่นเก่า และยังคงทำงานได้แม้ว่า
JavaScript ล้มเหลว
ใช้ <label>
หากต้องการติดป้ายกำกับอินพุต ให้ใช้ <label>
<label for="email">Email</label>
<input id="email" …>
2 สาเหตุ ได้แก่
- การแตะหรือการคลิกที่ป้ายกำกับจะย้ายโฟกัสไปยังอินพุต เชื่อมโยงป้ายกำกับกับแท็ก
โดยใช้แอตทริบิวต์
for
ของป้ายกำกับด้วยname
หรือid
ของอินพุต - โปรแกรมอ่านหน้าจอจะอ่านออกเสียงข้อความป้ายกำกับเมื่อป้ายกำกับหรืออินพุตของป้ายกำกับ โฟกัส
อย่าใช้ตัวยึดตำแหน่งเป็นป้ายกำกับอินพุต ผู้คนมีความรับผิดที่จะไม่ลืมสิ่งที่ คือเมื่อผู้ใช้เริ่มป้อนข้อความ โดยเฉพาะเมื่อ ว้าวุ่น ("ฉันป้อนที่อยู่อีเมล หมายเลขโทรศัพท์ หรือบัญชี ID?") มีปัญหาอื่นๆ มากมายที่อาจเกิดขึ้นกับตัวยึดตำแหน่ง: โปรดดูที่อย่า ใช้ตัวยึดตำแหน่ง แอตทริบิวต์ และ ตัวยึดตำแหน่งในช่องของแบบฟอร์ม เป็นอันตรายหากคุณ ไม่ยืนยัน
ขอแนะนำให้คุณวางป้ายกำกับไว้เหนือข้อมูลที่ป้อน การทำเช่นนี้ช่วยให้มีความสม่ำเสมอ ของการออกแบบบนอุปกรณ์เคลื่อนที่และเดสก์ท็อป และตามข้อมูลจากAI ของ Google การวิจัย ทำให้ผู้ใช้สแกนได้เร็วขึ้น คุณจะได้รับป้ายกำกับและอินพุตแบบเต็มความกว้าง และคุณ คุณไม่ต้องปรับความกว้างของป้ายกำกับและอินพุตเพื่อให้พอดีกับข้อความของป้ายกำกับ
เปิดภาพแตกตำแหน่งป้ายกำกับใน บนอุปกรณ์เคลื่อนที่เพื่อดูด้วยตนเอง
ใช้ <button>
ใช้ <button>
สำหรับปุ่ม องค์ประกอบของปุ่มมีลักษณะการทำงานที่เข้าถึงได้และมีรูปแบบในตัว
ฟังก์ชันการส่ง และสามารถจัดรูปแบบได้อย่างง่ายดาย ไม่มีประโยชน์
ใช้ <div>
หรือองค์ประกอบอื่นๆ ที่ปลอมแปลงเป็นปุ่ม
ตรวจสอบว่าปุ่ม "ส่ง" ระบุสิ่งที่ทำ ตัวอย่างเช่น การสร้างบัญชี หรือ Sign in ไม่ใช่ Submit หรือ Start
ตรวจสอบว่าการส่งแบบฟอร์มสำเร็จ
ช่วยให้ผู้จัดการรหัสผ่านเข้าใจว่าระบบส่งแบบฟอร์มแล้ว มี 2 แบบ วิธีการมีดังนี้
- ไปที่หน้าอื่น
- จำลองการนำทางด้วย
History.pushState()
หรือHistory.replaceState()
และนำแบบฟอร์มรหัสผ่านออก
หากมีคำขอ XMLHttpRequest
หรือ fetch
ให้ตรวจสอบว่าการลงชื่อเข้าใช้สำเร็จนั้น
รายงานในการตอบกลับและจัดการโดยการนำแบบฟอร์มออกจาก DOM ด้วย
เป็นการบ่งบอกว่าผู้ใช้ประสบความสำเร็จ
พิจารณาปิดใช้ปุ่มลงชื่อเข้าใช้เมื่อผู้ใช้แตะหรือคลิก ได้ ผู้ใช้จำนวนมากคลิกปุ่มหลายครั้ง แม้ในเว็บไซต์ที่ทั้งเร็วและตอบสนองได้ ทำให้การโต้ตอบช้าลงและ ทำให้เซิร์ฟเวอร์ทำงานหนักขึ้น
ในทางกลับกัน อย่าปิดใช้การส่งแบบฟอร์มที่รออินพุตจากผู้ใช้ ตัวอย่างเช่น อย่าปิดใช้ปุ่มลงชื่อเข้าใช้หากผู้ใช้ยังไม่ได้ป้อนลูกค้า PIN ผู้ใช้อาจพลาดบางสิ่งในแบบฟอร์ม จากนั้นก็พยายามแตะ (ปิดใช้อยู่) ปุ่มลงชื่อเข้าใช้และคิดว่าใช้งานไม่ได้ อย่างน้อยที่สุด หาก คุณต้องปิดใช้การส่งฟอร์ม โดยอธิบายให้ผู้ใช้ทราบถึงสิ่งที่ขาดหายไป คลิกปุ่มที่ปิดใช้
อย่าเพิ่มอินพุตเป็น 2 เท่า
บางเว็บไซต์บังคับให้ผู้ใช้ป้อนอีเมลหรือรหัสผ่าน 2 ครั้ง ซึ่งอาจลด สำหรับผู้ใช้บางราย แต่ทำให้เกิดการทำงานเพิ่มเติมสำหรับผู้ใช้ทั้งหมด และมีปริมาณเพิ่มขึ้น การละทิ้ง อัตราต่างๆ การถามซ้ำหลายครั้งก็ไม่สมเหตุสมผลเช่นกัน ว่าเบราว์เซอร์จะพิมพ์ที่อยู่อีเมลอัตโนมัติที่ใด แนะนำรหัสผ่านที่รัดกุม ทั้งนี้ คุณควรให้ผู้ใช้ยืนยันอีเมลของตนเอง ของคุณ (คุณจะต้องดำเนินการเช่นนั้น) และช่วยให้พวกเขาสามารถรีเซ็ต รหัสผ่านหากจำเป็น
ใช้ประโยชน์สูงสุดจากแอตทริบิวต์ขององค์ประกอบ
นี่คือที่ที่เวทมนตร์เกิดขึ้นจริงๆ เบราว์เซอร์มีฟีเจอร์ในตัวที่เป็นประโยชน์มากมายที่ใช้แอตทริบิวต์ขององค์ประกอบอินพุต
รักษารหัสผ่านให้เป็นส่วนตัว แต่ผู้ใช้สามารถดูได้หากต้องการ
รหัสผ่านที่ป้อนควรมีเลข type="password"
เพื่อซ่อนข้อความรหัสผ่านและช่วย
เบราว์เซอร์จะเข้าใจว่าข้อมูลที่ป้อนมีไว้สำหรับรหัสผ่าน (โปรดทราบว่าเบราว์เซอร์จะใช้
เทคนิคต่างๆ ในการทำความเข้าใจบทบาทการป้อนข้อมูลและตัดสินใจ
จะเสนอให้บันทึกรหัสผ่านหรือไม่)
คุณควรเพิ่มปุ่มสลับแสดงรหัสผ่านเพื่อให้ผู้ใช้เลือก ที่คุณป้อนไว้ และอย่าลืมเพิ่มลิงก์ลืมรหัสผ่านด้วย โปรดดู เปิดใช้การแสดงรหัสผ่าน
มอบแป้นพิมพ์ที่เหมาะสมให้ผู้ใช้อุปกรณ์เคลื่อนที่
ใช้ <input type="email">
เพื่อให้ผู้ใช้อุปกรณ์เคลื่อนที่มีแป้นพิมพ์ที่เหมาะสมและ
เปิดใช้งานการตรวจสอบที่อยู่อีเมลเบื้องต้นในตัวโดยเบราว์เซอร์... ไม่มี JavaScript
ต้องระบุ
หากต้องการใช้หมายเลขโทรศัพท์แทนอีเมล <input
type="tel">
จะเปิดใช้ปุ่มกดโทรศัพท์ในอุปกรณ์เคลื่อนที่ คุณยังสามารถใช้
แอตทริบิวต์ inputmode
เมื่อจำเป็น: inputmode="numeric"
เหมาะสำหรับ PIN
ตัวเลข ทุกสิ่งที่คุณอยากรู้
inputmode
มีรายละเอียดเพิ่มเติม
ป้องกันไม่ให้แป้นพิมพ์บนอุปกรณ์เคลื่อนที่บดบังปุ่มลงชื่อเข้าใช้
หากคุณไม่ระมัดระวัง แป้นพิมพ์บนอุปกรณ์เคลื่อนที่อาจบดบังแบบฟอร์มของคุณ หรือ ที่แย่กว่านั้นคือจะกีดขวางปุ่มลงชื่อเข้าใช้บางส่วน ผู้ใช้อาจยกเลิกก่อน เมื่อตระหนักถึงสิ่งที่เกิดขึ้น
หากเป็นไปได้ ให้หลีกเลี่ยงปัญหานี้โดยแสดงเฉพาะการป้อนข้อมูลอีเมล/โทรศัพท์และรหัสผ่าน และปุ่มลงชื่อเข้าใช้ที่ด้านบนของหน้าลงชื่อเข้าใช้ ใส่เนื้อหาอื่นด้านล่าง
ทดสอบกับอุปกรณ์ชนิดต่างๆ
คุณจะต้องทดสอบบนอุปกรณ์ที่หลากหลายสำหรับกลุ่มเป้าหมาย แล้วปรับ ตามนั้น BrowserStack เปิดใช้การทดสอบโอเพนซอร์สฟรี โปรเจ็กต์บนอุปกรณ์จริงประเภทต่างๆ และเบราว์เซอร์
ลองใช้หน้า 2 หน้า
บางเว็บไซต์ (รวมถึง Amazon และ eBay) ให้หลีกเลี่ยงปัญหาโดยการขอ อีเมล/โทรศัพท์และรหัสผ่านอยู่ใน 2 หน้า วิธีนี้ยังช่วยลดความซับซ้อนของ ประสบการณ์: ผู้ใช้จะทำงานเพียงอย่างละ 1 วิธี
โดยหลักการแล้ว คุณควรดำเนินการนี้ด้วย <แบบฟอร์ม> เดียว ใช้ JavaScript ในตอนแรกจะแสดงเฉพาะอินพุตอีเมล จากนั้นซ่อนและแสดงการป้อนรหัสผ่าน ถ้าคุณต้องบังคับให้ผู้ใช้ไปยังหน้าเว็บใหม่ระหว่างที่ป้อนอีเมลกับ รหัสผ่าน แบบฟอร์มในหน้าที่สองควรมี องค์ประกอบอินพุตที่ซ่อนไว้ อีเมล เพื่อช่วยให้เครื่องมือจัดการรหัสผ่านจัดเก็บค่าที่ถูกต้องได้ รหัสผ่าน รูปแบบของแบบฟอร์มที่ Chromium เข้าใจ ให้ตัวอย่างโค้ด
ช่วยผู้ใช้หลีกเลี่ยงการป้อนข้อมูลซ้ำ
คุณสามารถช่วยให้เบราว์เซอร์จัดเก็บข้อมูลอย่างถูกต้องและป้อนข้อมูลอัตโนมัติได้ เพื่อที่ผู้ใช้จะได้ไม่ต้อง คุณต้องจำว่าต้องป้อนค่าอีเมลและรหัสผ่าน ซึ่งมีความสำคัญอย่างยิ่ง บนอุปกรณ์เคลื่อนที่ และสำคัญอย่างยิ่งต่อการป้อนข้อมูลอีเมล ซึ่งมีอัตราการหยุดกลางคันสูง
ซึ่งแบ่งเป็น 2 ส่วน ดังนี้
แอตทริบิวต์
autocomplete
,name
,id
และtype
จะช่วยให้เบราว์เซอร์เข้าใจ บทบาทของอินพุตเพื่อจัดเก็บข้อมูลที่สามารถใช้สำหรับการป้อนข้อความอัตโนมัติในภายหลังได้ หากต้องการอนุญาตให้จัดเก็บข้อมูลสําหรับการป้อนข้อความอัตโนมัติ เบราว์เซอร์สมัยใหม่ยังต้องมีการป้อนข้อมูลเพื่อ มีค่าname
หรือid
ที่คงที่ (ไม่ได้สร้างขึ้นแบบสุ่มในการโหลดหน้าเว็บแต่ละครั้ง หรือ การใช้งานเว็บไซต์) และอยู่ใน <แบบฟอร์ม> ด้วยปุ่มsubmit
แอตทริบิวต์
autocomplete
ช่วยให้เบราว์เซอร์ป้อนข้อมูลอัตโนมัติได้อย่างถูกต้องโดยใช้ ข้อมูลที่จัดเก็บไว้
สำหรับอินพุตอีเมล ให้ใช้ autocomplete="username"
เนื่องจากระบบจะรู้จัก username
เครื่องมือจัดการรหัสผ่านในเบราว์เซอร์ที่ทันสมัย ถึงแม้ว่าคุณควรใช้ type="email"
และคุณอาจต้องใช้ id="email"
และ name="email"
สำหรับการป้อนรหัสผ่าน ให้ใช้ค่า autocomplete
และ id
ที่เหมาะสมเพื่อช่วยเบราว์เซอร์
แยกความแตกต่างระหว่างรหัสผ่านใหม่และรหัสผ่านปัจจุบัน
ใช้ autocomplete="new-password"
และ id="new-password"
เพื่อขอรหัสผ่านใหม่
- ใช้
autocomplete="new-password"
และid="new-password"
เพื่อป้อนรหัสผ่านในการลงชื่อสมัครใช้ หรือรหัสผ่านใหม่ในรูปแบบเปลี่ยนรหัสผ่าน
ใช้ autocomplete="current-password"
และ id="current-password"
สำหรับรหัสผ่านที่มีอยู่
- ใช้
autocomplete="current-password"
และid="current-password"
เพื่อป้อนรหัสผ่านใน ฟอร์มลงชื่อเข้าใช้ หรือการป้อนข้อมูลรหัสผ่านเดิมของผู้ใช้ในแบบฟอร์มเปลี่ยนรหัสผ่าน ซึ่งจะบอก ที่คุณต้องการให้เบราว์เซอร์ใช้รหัสผ่านปัจจุบันที่เก็บไว้สำหรับเว็บไซต์นั้น
สำหรับแบบฟอร์มการลงชื่อสมัครใช้ ให้ทำดังนี้
<input type="password" autocomplete="new-password" id="new-password" …>
สำหรับการลงชื่อเข้าใช้:
<input type="password" autocomplete="current-password" id="current-password" …>
สนับสนุนเครื่องมือจัดการรหัสผ่าน
เบราว์เซอร์ต่างๆ จะจัดการกับการป้อนข้อความอัตโนมัติและการแนะนำรหัสผ่านให้บ้าง แตกต่างกัน แต่ผลกระทบจะเหมือนกัน ใน Safari 11 ขึ้นไปบนเดสก์ท็อป เช่น เครื่องมือจัดการรหัสผ่านจะปรากฏขึ้น และข้อมูลไบโอเมตริก ใช้การตรวจสอบสิทธิ์ (ลายนิ้วมือหรือการจดจำใบหน้า) หากมี
Chrome บนเดสก์ท็อปจะแสดงคำแนะนำอีเมล แสดงเครื่องมือจัดการรหัสผ่าน และป้อนรหัสผ่านอัตโนมัติ
รหัสผ่านของเบราว์เซอร์และระบบการป้อนข้อความอัตโนมัติไม่ใช่เรื่องง่าย อัลกอริทึมสำหรับ การคาดเดา การจัดเก็บ และการแสดงค่าต่างๆ ไม่มีการกำหนดมาตรฐานและแตกต่างจาก แพลตฟอร์มสู่แพลตฟอร์ม ตัวอย่างเช่น ตามที่แสดงโดย Hidde de เวอร์ชัน: "เครื่องมือจัดการรหัสผ่านของ Firefox เสริมการเรียนรู้ด้วย ระบบสูตรอาหาร"
ป้อนข้อความอัตโนมัติ: สิ่งที่นักพัฒนาเว็บควรรู้แต่
สิ่งที่ไม่ควรทำ
มีข้อมูลเพิ่มเติมมากมายเกี่ยวกับการใช้ name
และ autocomplete
HTML
รายละเอียด
แสดงค่าที่เป็นไปได้ทั้ง 59 ค่า
เปิดใช้เบราว์เซอร์เพื่อแนะนำรหัสผ่านที่รัดกุม
เบราว์เซอร์สมัยใหม่ใช้การเรียนรู้เพื่อตัดสินใจว่าเมื่อใดควรแสดง UI ของเครื่องมือจัดการรหัสผ่าน และ แนะนำรหัสผ่านที่รัดกุม
นี่คือการทำงานของ Safari บนเดสก์ท็อป
(มีคำแนะนำรหัสผ่านที่ไม่ซ้ำที่รัดกุมใน Safari ตั้งแต่เวอร์ชัน 12.0)
เครื่องมือสร้างรหัสผ่านในตัวของเบราว์เซอร์ ทำให้ผู้ใช้และนักพัฒนาซอฟต์แวร์ไม่ต้อง เพื่อดูว่า "รหัสผ่านที่รัดกุม" คืออะไร เนื่องจากเบราว์เซอร์สามารถจัดเก็บได้อย่างปลอดภัย และป้อนรหัสผ่านอัตโนมัติตามความจำเป็น ผู้ใช้จึงไม่ต้องจำรหัสผ่าน หรือป้อนรหัสผ่าน สนับสนุนให้ผู้ใช้ใช้ประโยชน์จากเบราว์เซอร์ในตัว เครื่องมือสร้างรหัสผ่านยังหมายความว่ามีแนวโน้มมากกว่าที่จะใช้รหัสผ่านที่คาดเดาได้ยาก บนเว็บไซต์ของคุณ และมีแนวโน้มที่จะไม่ใช้รหัสผ่านซ้ำซึ่งอาจ ถูกบุกรุก
ช่วยป้องกันไม่ให้ผู้ใช้ป้อนข้อมูลผิดโดยไม่ตั้งใจ
เพิ่มแอตทริบิวต์ required
ลงในช่องอีเมลและรหัสผ่านทั้งในช่อง
เบราว์เซอร์สมัยใหม่จะแสดงข้อความแจ้งและตั้งโฟกัสโดยอัตโนมัติสำหรับข้อมูลที่ขาดหายไป
ไม่ต้องใช้ JavaScript
ออกแบบสำหรับนิ้วมือและนิ้วโป้ง
ขนาดเริ่มต้นของเบราว์เซอร์สำหรับเกือบทุกอย่างที่เกี่ยวข้องกับองค์ประกอบอินพุต และปุ่มมีขนาดเล็กเกินไป โดยเฉพาะบนอุปกรณ์เคลื่อนที่ เรื่องนี้อาจดูชัดเจนอยู่แล้ว ปัญหาที่พบบ่อยกับแบบฟอร์มลงชื่อเข้าใช้ในหลายๆ เว็บไซต์
ตรวจสอบว่าอินพุตและปุ่มมีขนาดใหญ่เพียงพอ
ขนาดและระยะห่างจากขอบเริ่มต้นสำหรับอินพุตและปุ่มมีขนาดเล็กเกินไปบนเดสก์ท็อปและ ที่แย่ไปกว่านั้นคือบนอุปกรณ์เคลื่อนที่
ตามที่ระบุไว้ในความสามารถเข้าถึงได้ง่ายของ Android คำแนะนำ ขนาดเป้าหมายที่แนะนำสำหรับวัตถุที่เป็นหน้าจอสัมผัสคือ 7–10 มม. อินเทอร์เฟซของ Apple หลักเกณฑ์คือขนาด 48x48 พิกเซล และ W3C แนะนำขนาด 44x44 พิกเซลเป็นอย่างน้อย พิกเซล ในเรื่องนั้น ให้เพิ่มระยะห่างจากขอบประมาณ 15 พิกเซลให้กับองค์ประกอบและปุ่มต่างๆ และประมาณ 10 พิกเซลบนเดสก์ท็อป ทดลองด้วยโทรศัพท์มือถือจริงและ ใช้นิ้วชี้หรือนิ้วโป้งจริง คุณควรสามารถแตะ อินพุตและปุ่มต่างๆ
เป้าหมายการแตะมีขนาดที่ไม่เหมาะสม การตรวจสอบด้วย Lighthouse จะช่วยให้กระบวนการตรวจจับองค์ประกอบอินพุตเป็นไปโดยอัตโนมัติ ที่มีขนาดเล็กเกินไป
ออกแบบเพื่อนิ้วโป้ง
ค้นหาเป้าหมายการสัมผัส และ คุณจะเห็นภาพนิ้วมือมากมาย แต่ในความเป็นจริง ส่วนมาก ผู้คนใช้นิ้วโป้งในการโต้ตอบกับโทรศัพท์ นิ้วโป้งใหญ่กว่า นิ้วมือ และการควบคุมที่แม่นยำน้อยลง เหตุผลเพิ่มเติมที่ทำให้เพียงพอ ขนาดของเป้าหมายการสัมผัส
ทำให้ข้อความใหญ่พอ
เช่นเดียวกับขนาดและระยะห่างจากขอบ ขนาดแบบอักษรเริ่มต้นสำหรับองค์ประกอบอินพุตและ มีขนาดเล็กเกินไป โดยเฉพาะบนอุปกรณ์เคลื่อนที่
เบราว์เซอร์บนแพลตฟอร์มต่างๆ มีขนาดตัวอักษรต่างกัน ดังนั้นจึงทำให้ยากต่อ ระบุขนาดแบบอักษรที่ใช้งานได้ดีในทุกที่ แบบสำรวจสั้นๆ เกี่ยวกับ เว็บไซต์ยอดนิยมจะแสดงขนาด 13–16 พิกเซลบนเดสก์ท็อป ซึ่งตรงกับขนาดทางกายภาพดังกล่าว ก็เหมาะกับข้อความบนมือถืออย่างน้อยที่สุด
ซึ่งหมายความว่าคุณต้องใช้ขนาดพิกเซลที่ใหญ่ขึ้นในอุปกรณ์เคลื่อนที่: 16px
ใน Chrome สำหรับ
เดสก์ท็อปอ่านได้ค่อนข้างชัดเจน แต่ถึงอย่างไรก็อ่านได้ยาก 16px
ข้อความใน Chrome สำหรับ Android คุณสามารถตั้งค่าขนาดพิกเซลแบบอักษรที่แตกต่างกันสำหรับ
ขนาดวิวพอร์ตโดยใช้สื่อ
การค้นหา
20px
เหมาะกับมือถืออยู่แล้ว แต่คุณน่าจะลองทดสอบกับเพื่อนๆ หรือ
เพื่อนร่วมงานที่มีสายตาเลือนราง
เอกสารไม่ได้ใช้ขนาดตัวอักษรที่อ่านได้ชัดเจน การตรวจสอบด้วย Lighthouse จะช่วยให้กระบวนการตรวจหาข้อความที่คล้ายกันเป็นไปโดยอัตโนมัติ มีขนาดเล็ก
เว้นระยะห่างระหว่างอินพุตให้เพียงพอ
เพิ่มขอบให้เพียงพอเพื่อให้ข้อมูลที่ป้อนทำงานได้ดีกับเป้าหมายการสัมผัส กล่าวคือ ให้ตั้งเป้า ประมาณความกว้างของขอบนิ้วหนึ่งนิ้ว
ตรวจสอบว่าข้อมูลที่คุณป้อนมองเห็นได้ชัดเจน
การจัดรูปแบบเส้นขอบเริ่มต้นสำหรับอินพุตจะทำให้มองเห็นได้ยาก พวกเขาเกือบจะ ไม่แสดงในบางแพลตฟอร์ม เช่น Chrome สำหรับ Android
นอกจากระยะห่างจากขอบ ให้เพิ่มขอบแล้ว สำหรับพื้นหลังสีขาว กฎทั่วไปที่ดีก็คือ
เพื่อใช้ #ccc
หรือมืดลง
ใช้ฟีเจอร์ในตัวของเบราว์เซอร์เพื่อเตือนเรื่องค่าอินพุตที่ไม่ถูกต้อง
เบราว์เซอร์มีฟีเจอร์ในตัวเพื่อทำการตรวจสอบแบบฟอร์มขั้นพื้นฐานให้กับอินพุตที่มี
type
เบราว์เซอร์จะเตือนเมื่อคุณส่งแบบฟอร์มที่มีค่าไม่ถูกต้อง
และให้โฟกัสที่ข้อมูลที่เป็นปัญหา
คุณใช้ตัวเลือก CSS :invalid
เพื่อไฮไลต์ข้อมูลที่ไม่ถูกต้องได้ ใช้
:not(:placeholder-shown)
เพื่อหลีกเลี่ยงการเลือกอินพุตที่ไม่มีเนื้อหา
input[type=email]:not(:placeholder-shown):invalid {
color: red;
outline-color: red;
}
ลองใช้วิธีต่างๆ ในการไฮไลต์อินพุตที่มีค่าไม่ถูกต้อง
ใช้ JavaScript ตามความจำเป็น
เปิด/ปิดการแสดงรหัสผ่าน
คุณควรเพิ่มปุ่มสลับแสดงรหัสผ่านเพื่อให้ผู้ใช้เลือก ข้อความที่ป้อน ความสามารถในการใช้งาน ได้รับผลกระทบเมื่อผู้ใช้ จะไม่เห็นข้อความที่ป้อน ตอนนี้ยังไม่มีวิธีในตัว แม้ว่าจะมีแผนสำหรับ การใช้งาน คุณจะ ต้องใช้ JavaScript แทน
รหัสต่อไปนี้ใช้ปุ่มข้อความเพื่อเพิ่มฟังก์ชันแสดงรหัสผ่าน
HTML:
<section>
<label for="password">Password</label>
<button id="toggle-password" type="button" aria-label="Show password as plain text. Warning: this will display your password on the screen.">Show password</button>
<input id="password" name="password" type="password" autocomplete="current-password" required>
</section>
นี่คือ CSS ที่จะทำให้ปุ่มมีลักษณะเหมือนข้อความธรรมดา
button#toggle-password {
background: none;
border: none;
cursor: pointer;
/* Media query isn't shown here. */
font-size: var(--mobile-font-size);
font-weight: 300;
padding: 0;
/* Display at the top right of the container */
position: absolute;
top: 0;
right: 0;
}
และ JavaScript สำหรับแสดงรหัสผ่าน:
const passwordInput = document.getElementById('password');
const togglePasswordButton = document.getElementById('toggle-password');
togglePasswordButton.addEventListener('click', togglePassword);
function togglePassword() {
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
togglePasswordButton.textContent = 'Hide password';
togglePasswordButton.setAttribute('aria-label',
'Hide password.');
} else {
passwordInput.type = 'password';
togglePasswordButton.textContent = 'Show password';
togglePasswordButton.setAttribute('aria-label',
'Show password as plain text. ' +
'Warning: this will display your password on the screen.');
}
}
ผลลัพธ์สุดท้ายมีดังนี้
ทำให้อินพุตรหัสผ่านสามารถเข้าถึงได้
ใช้ aria-describedby
เพื่อร่างกฎรหัสผ่านโดยกำหนดรหัสของ
ที่อธิบายข้อจำกัด โปรแกรมอ่านหน้าจอจะระบุข้อความป้ายกำกับ
ประเภทการป้อนข้อมูล (รหัสผ่าน) และคำอธิบาย
<input type="password" aria-describedby="password-constraints" …>
<div id="password-constraints">Eight or more characters with a mix of letters, numbers and symbols.</div>
เมื่อเพิ่มฟังก์ชันแสดงรหัสผ่าน อย่าลืมใส่
aria-label
เพื่อเตือนว่ารหัสผ่านจะแสดงขึ้นมา มิฉะนั้นผู้ใช้อาจ
เปิดเผยรหัสผ่านโดยไม่ได้ตั้งใจ
<button id="toggle-password"
aria-label="Show password as plain text.
Warning: this will display your password on the screen.">
Show password
</button>
คุณดูการทำงานของฟีเจอร์ ARIA ทั้ง 2 ฟีเจอร์ได้ใน Glitch ต่อไปนี้
การสร้างแบบฟอร์มที่เข้าถึงได้มีเคล็ดลับเพิ่มเติมในการทําให้แบบฟอร์มเข้าถึงได้
ตรวจสอบแบบเรียลไทม์และก่อนส่ง
องค์ประกอบของแบบฟอร์มและแอตทริบิวต์ HTML มีฟีเจอร์ในตัวสำหรับการตรวจสอบขั้นพื้นฐาน แต่คุณก็ควรใช้ JavaScript เพื่อตรวจสอบระบบ ที่มีประสิทธิภาพมากขึ้นในขณะที่ผู้ใช้ ป้อนข้อมูลและเวลาที่ผู้ใช้พยายามส่งแบบฟอร์ม
ขั้นตอนที่ 5 ของแบบฟอร์มลงชื่อเข้าใช้ Codelab จะใช้ การตรวจสอบความถูกต้องของข้อจำกัด API (ซึ่งก็คือ รองรับอย่างครอบคลุม) เพื่อเพิ่ม การตรวจสอบที่กำหนดเองโดยใช้ UI ของเบราว์เซอร์ในตัวเพื่อตั้งโฟกัสและแสดงข้อความแจ้ง
ดูข้อมูลเพิ่มเติม: ใช้ JavaScript เพื่อการทำงานที่ซับซ้อนมากขึ้นแบบเรียลไทม์ การตรวจสอบความถูกต้อง
Analytics และ RUM
"สิ่งที่คุณวัดไม่ได้และคุณปรับปรุงไม่ได้" โดยเฉพาะเมื่อลงชื่อสมัครใช้ และลงชื่อเข้าใช้ คุณจะต้องตั้งเป้าหมาย วัดความสำเร็จ ปรับปรุงเว็บไซต์ของคุณ และ เกิดซ้ำ
ความสามารถในการใช้งานส่วนลด test สามารถ มีประโยชน์ในการลองทำการเปลี่ยนแปลง แต่คุณต้องใช้ข้อมูลจริงเพื่อ ทำความเข้าใจประสบการณ์ของผู้ใช้ในแบบฟอร์มลงชื่อสมัครใช้และลงชื่อเข้าใช้ของคุณ:
- การวิเคราะห์หน้าเว็บ: การดูหน้าเว็บในการเข้าสู่ระบบและการลงชื่อเข้าใช้ อัตราตีกลับ และการออก
- ข้อมูลวิเคราะห์การโต้ตอบ: เป้าหมาย Funnel (ในกรณีที่ ผู้ใช้ออกจากกระบวนการลงชื่อเข้าใช้หรือลงชื่อเข้าใช้ของคุณหรือไม่) และ กิจกรรม (ผู้ใช้ดำเนินการอะไรบ้างเมื่อโต้ตอบกับแบบฟอร์ม)
- ประสิทธิภาพของเว็บไซต์: การเน้นผู้ใช้เป็นหลัก เมตริก (คือการลงชื่อสมัครใช้และลงชื่อเข้าใช้ของคุณ ฟอร์มช้าด้วยเหตุผลบางประการ และหากเป็นเช่นนั้น สาเหตุเกิดจากอะไร)
นอกจากนี้ คุณยังอาจลองใช้การทดสอบ A/B เพื่อลองใช้ วิธีการต่างๆ ในการลงชื่อสมัครใช้และลงชื่อเข้าใช้ และการเปิดตัวแบบทีละขั้นเพื่อตรวจสอบ การเปลี่ยนแปลงของผู้ใช้บางส่วนก่อนที่จะเผยแพร่การเปลี่ยนแปลงไปยังผู้ใช้ทั้งหมด
หลักเกณฑ์ทั่วไป
UI และ UX ที่ออกแบบมาอย่างดีช่วยลดการละทิ้งแบบฟอร์มการลงชื่อเข้าใช้ได้
- อย่าทำให้ผู้ใช้ต้องค้นหาการเข้าสู่ระบบ! ใส่ลิงก์ไปยังแบบฟอร์มลงชื่อเข้าใช้ที่ด้านบน ของหน้าเว็บโดยใช้คำที่เข้าใจได้ง่าย เช่น ลงชื่อเข้าใช้ สร้างบัญชี หรือลงทะเบียน
- คุณควรมีสมาธิจดจ่อ! แบบฟอร์มลงชื่อสมัครใช้ไม่ใช่ที่ที่จะเบี่ยงเบนความสนใจของผู้คนด้วย ข้อเสนอและฟีเจอร์อื่นๆ ของเว็บไซต์
- ลดความซับซ้อนในการลงชื่อสมัครใช้ รวบรวมข้อมูลอื่นๆ ของผู้ใช้ (เช่น ที่อยู่หรือ รายละเอียดบัตรเครดิต) เฉพาะเมื่อผู้ใช้มองเห็นประโยชน์อย่างชัดเจนจากการให้ข้อมูลดังกล่าว
- ก่อนที่ผู้ใช้จะเริ่มกรอกแบบฟอร์มลงชื่อสมัครใช้ ให้อธิบายให้ชัดเจนว่า ก็คือ ผู้ใช้จะได้รับประโยชน์จากการลงชื่อเข้าใช้อย่างไร ทำให้ผู้ใช้เป็นรูปธรรม สิ่งจูงใจเพื่อให้ลงชื่อสมัครใช้เสร็จสมบูรณ์
- หากเป็นไปได้ ให้ผู้ใช้ระบุตัวตนด้วยหมายเลขโทรศัพท์มือถือ แทนที่อยู่อีเมล เนื่องจากผู้ใช้บางคนอาจไม่ได้ใช้อีเมล
- ช่วยให้ผู้ใช้สามารถรีเซ็ตรหัสผ่านได้โดยง่าย และทำเมนูลืมรหัสผ่าน รหัสผ่านใช่ไหม
- ลิงก์ไปยังข้อกำหนดในการให้บริการและเอกสารนโยบายความเป็นส่วนตัวของคุณ: ทำให้ชัดเจนเพื่อ ผู้ใช้ตั้งแต่เริ่มต้นวิธีที่คุณปกป้องข้อมูลของพวกเขา
- ใส่โลโก้และชื่อบริษัทหรือองค์กรไว้บนลงชื่อสมัครใช้และ ลงชื่อเข้าใช้มากขึ้น และตรวจสอบให้แน่ใจว่าภาษา แบบอักษร และสไตล์ตรงกับส่วนที่เหลือ เว็บไซต์ของคุณ บางแบบฟอร์มไม่รู้สึกว่าเป็นส่วนหนึ่งของเว็บไซต์เดียวกับแบบฟอร์มอื่นๆ โดยเฉพาะหากมี URL ที่ต่างกันอย่างมาก
เรียนรู้อย่างต่อเนื่อง
- สร้างแบบฟอร์มที่น่าทึ่ง
- แนวทางปฏิบัติแนะนำสำหรับการออกแบบแบบฟอร์มบนอุปกรณ์เคลื่อนที่
- ตัวควบคุมแบบฟอร์มที่มีความสามารถมากขึ้น
- การสร้างแบบฟอร์มที่เข้าถึงได้
- การปรับปรุงขั้นตอนการลงชื่อเข้าใช้โดยใช้ API การจัดการข้อมูลเข้าสู่ระบบ
- ยืนยันหมายเลขโทรศัพท์บนเว็บด้วย WebOTP API
รูปภาพโดย Meghan Schiereck ใน Unsplash