โลโก้เซเฟอร์เน็ต

แบบฟอร์มที่สามารถเข้าถึงได้พร้อมคลาสหลอก

วันที่:

สวัสดี นักพัฒนาที่ยอดเยี่ยมทุกคน! ในโพสต์นี้ ฉันจะนำคุณไปสู่การสร้างแบบฟอร์มการติดต่อแบบง่ายๆ โดยใช้ semantic HTML และคลาสหลอก CSS ที่ยอดเยี่ยมที่รู้จักกันในชื่อ :focus-within. :focus-within คลาสช่วยให้สามารถควบคุมโฟกัสได้ดี และแจ้งให้ผู้ใช้ของคุณทราบว่านี่คือจุดที่พวกเขาอยู่ในประสบการณ์ ก่อนที่เราจะพูดถึงเนื้อหาหลัก การเข้าถึงเว็บคืออะไร


การเข้าถึงแบบฟอร์ม?

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

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

MDN (เครือข่ายนักพัฒนา Mozilla)

พื้นที่ :focus-within CSS pseudo-class จะจับคู่องค์ประกอบหากองค์ประกอบหรือองค์ประกอบที่สืบทอดนั้นถูกโฟกัส กล่าวอีกนัยหนึ่ง มันแสดงถึงองค์ประกอบที่ถูกจับคู่โดยคลาสหลอก :focus หรือมีองค์ประกอบสืบทอดที่จับคู่โดย :focus (รวมถึงผู้สืบทอดในต้นไม้เงาด้วย)

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

วิธีการโฟกัส

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

" :focus CSS คลาสหลอกแสดงถึงองค์ประกอบ (เช่นอินพุตแบบฟอร์ม) ที่ได้รับการโฟกัส โดยทั่วไปจะถูกทริกเกอร์เมื่อผู้ใช้คลิกหรือแตะที่องค์ประกอบหรือเลือกด้วยปุ่ม Tab ของแป้นพิมพ์”

MDN (เครือข่ายนักพัฒนา Mozilla)

ตรวจสอบให้แน่ใจเสมอว่าตัวแสดงโฟกัสหรือวงแหวนรอบองค์ประกอบที่สามารถโฟกัสได้จะรักษาคอนทราสต์ของสีที่เหมาะสมตลอดประสบการณ์การใช้งาน

โฟกัสเขียนไว้เช่นนี้และสามารถจัดสไตล์ให้เข้ากับแบรนด์ของคุณได้ หากคุณเลือกที่จะจัดสไตล์

:focus {
  * / INSERT STYLES HERE /*
}

ไม่ว่าคุณจะทำอะไรก็ตาม อย่ากำหนดโครงร่างของคุณไว้ 0 or none. การทำเช่นนี้จะลบตัวบ่งชี้โฟกัสที่มองเห็นได้สำหรับทุกคนตลอดประสบการณ์ทั้งหมด หากคุณต้องการลบโฟกัส คุณสามารถทำได้ แต่อย่าลืมเพิ่มกลับเข้าไปในภายหลัง เมื่อคุณลบโฟกัสออกจาก CSS ของคุณหรือตั้งค่าโครงร่างเป็น 0 or noneโดยจะลบวงแหวนโฟกัสสำหรับผู้ใช้ทั้งหมดของคุณ สิ่งนี้จะเห็นได้บ่อยเมื่อใช้การรีเซ็ต CSS การรีเซ็ต CSS จะรีเซ็ตสไตล์เป็นผืนผ้าใบเปล่า ด้วยวิธีนี้ คุณจะเป็นผู้ควบคุมผืนผ้าใบที่ว่างเปล่าเพื่อจัดสไตล์ตามที่คุณต้องการ หากคุณต้องการใช้การรีเซ็ต CSS ให้ลองดู การรีเซ็ตของ Josh Comeau.

*อย่าทำสิ่งต่อไปนี้!

:focus {
  outline: 0;
}

:focus {
  outline: none;
}


มองเข้าไปข้างใน!

หนึ่งในวิธีที่เจ๋งที่สุดในการเน้นสไตล์โดยใช้ CSS คือเนื้อหาเกี่ยวกับบทความนี้ หากคุณยังไม่ได้ตรวจสอบ :focus-within คลาสหลอก ลองดูสิ! มีอัญมณีที่ซ่อนอยู่มากมายเมื่อพูดถึงการใช้มาร์กอัปเชิงความหมายและ CSS และนี่คือหนึ่งในนั้น มีหลายสิ่งที่ถูกมองข้ามสามารถเข้าถึงได้โดยค่าเริ่มต้น ตัวอย่างเช่น มาร์กอัปเชิงความหมายสามารถเข้าถึงได้โดยค่าเริ่มต้น และควรใช้กับ div ตลอดเวลา

<header>
  <h1>Semantic Markup</h1>
  <nav>
    <ul>
      <li><a href="/th/">Home</a></li>
      <li><a href="/th/about">About</a></li>
    </ul>
  </nav>
</header>

<section><!-- Code goes here --></section>

<section><!-- Code goes here --></section>

<aside><!-- Code goes here --></aside>

<footer><!-- Code goes here --></footer>

พื้นที่ header, nav, main, section, asideและ footer เป็นองค์ประกอบทางความหมายทั้งหมด ที่ h1 และ ul ยังมีความหมายและเข้าถึงได้

เว้นแต่ว่าจะต้องมีการสร้างองค์ประกอบแบบกำหนดเอง ดังนั้นก div ใช้คู่กันก็ดี. ARIA (แอปพลิเคชันอินเทอร์เน็ตที่เข้าถึงได้มากมาย). เราสามารถเจาะลึก ARIA ได้ในโพสต์ภายหลัง ตอนนี้มาโฟกัสกันก่อน…ดูสิ่งที่ฉันทำที่นั่น…ในคลาสหลอก CSS นี้

พื้นที่ :focus-within คลาสหลอกอนุญาตให้คุณเลือกองค์ประกอบเมื่อองค์ประกอบสืบทอดใด ๆ ที่มีโฟกัส


:focus-within ในการดำเนินการ!

HTML

<form>
  <div>
    <label for="firstName">First Name</label><input id="firstName" type="text">
  </div>
  <div>
    <label for="lastName">Last Name</label><input id="lastName" type="text">
  </div>
  <div>
    <label for="phone">Phone Number</label><input id="phone" type="text">
  </div>
  <div>
    <label for="message">Message</label><textarea id="message"></textarea>
  </div>
</form>

CSS

form:focus-within {
  background: #ff7300;
  color: black;
  padding: 10px;
}

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

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

ตัวอย่างแรกของการโฟกัสภายในคลาส css ที่เน้นพื้นหลังของแบบฟอร์มและการเปลี่ยนสีข้อความของป้ายกำกับ

อีกหนึ่งกรณีการใช้งานสำหรับการใช้งาน :focus-within จะเปลี่ยนป้ายกำกับให้เป็นตัวหนา เป็นสีอื่น หรือขยายให้ใหญ่ขึ้นสำหรับผู้ใช้ที่มีความบกพร่องทางการมองเห็น โค้ดตัวอย่างจะมีลักษณะดังนี้

HTML

<form>
  <h1>:focus-within part 2!</h1>
  <label for="firstName">First Name: <input name="firstName" type="text" /></label>
  <label for="lastName">Last Name: <input name="lastName" type="text" /></label>
  <label for="phone">Phone number: <input type="tel" id="phone" /></label>
  <label for="message">Message: <textarea name="message" id="message"/></textarea></label>
</form>

CSS

label {
  display: block;
  margin-right: 10px;
  padding-bottom: 15px;
}

label:focus-within {
  font-weight: bold;
  color: red;
  font-size: 1.6em;
}
การแสดงวิธีใช้ตัวหนา เปลี่ยนสี และขนาดตัวอักษรของฉลากในรูปแบบ :focus-within

:focus-within ยังมีการรองรับเบราว์เซอร์ที่ยอดเยี่ยมอีกด้วย ฉันสามารถใช้.

มุ่งเน้นไปที่การสนับสนุนเบราว์เซอร์คลาสหลอก CSS ตามเว็บไซต์ที่ฉันสามารถใช้ได้

สรุป

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

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

ลองดูแหล่งข้อมูลดีๆ อื่นที่นี่ใน CSS-Tricks ใช้ :focus-within.

จุด_img

ข่าวกรองล่าสุด

จุด_img