ตัวเลือก 1: ใช้:focus-visible
คลาสเทียม
:focus-visible
หลอกชั้นสามารถใช้ในการฆ่าเค้าร่างน่าเกลียดและมุ่งเน้นไปที่ปุ่มแหวนและองค์ประกอบต่างๆสำหรับผู้ใช้ที่ไม่ได้รับการนำทางผ่านทางแป้นพิมพ์ (เช่นผ่านการสัมผัสหรือคลิกเมาส์)
/**
* The default focus style is likely provided by Bootstrap or the browser
* but here we override everything else with a visually appealing cross-
* browser solution that works well on all focusable page elements
* including buttons, links, inputs, textareas, and selects.
*/
*:focus {
outline: 0 !important;
box-shadow:
0 0 0 .2rem #fff, /* use site bg color to create whitespace for faux focus ring */
0 0 0 .35rem #069 !important; /* faux focus ring color */
}
/**
* Undo the above focused button styles when the element received focus
* via mouse click or touch, but not keyboard navigation.
*/
*:focus:not(:focus-visible) {
outline: 0 !important;
box-shadow: none !important;
}
คำเตือน: ในฐานะของปี 2020 :focus-visible
หลอกชั้นจะได้รับการสนับสนุนอย่างกว้างขวางทั่วเบราว์เซอร์ อย่างไรก็ตามโพลีฟิลนั้นใช้งานง่ายมาก ดูคำแนะนำด้านล่าง
ตัวเลือก 2: ใช้.focus-visible
polyfill
การแก้ปัญหานี้ใช้คลาส CSS ปกติแทนการหลอกชั้นดังกล่าวข้างต้นและมีการสนับสนุนเบราว์เซอร์กว้างเพราะมันเป็นอย่างเป็นทางการ polyfill
ขั้นตอนที่ 1: เพิ่มการพึ่งพา Javascript ในหน้า HTML ของคุณ
หมายเหตุ: polyfill ที่สามารถมองเห็นโฟกัสได้ต้องใช้ polyfill เพิ่มเติมสำหรับเบราว์เซอร์รุ่นเก่าที่ไม่สนับสนุน classList :
<!-- place this code just before the closing </html> tag -->
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=Element.prototype.classList"></script>
<script src="https://unpkg.com/focus-visible"></script>
ขั้นตอนที่ 2: เพิ่ม CSS ต่อไปนี้ในสไตล์ชีทของคุณ
ต่อไปนี้เป็นเวอร์ชัน CSS ที่ได้รับการแก้ไขของเอกสารด้านบนอย่างละเอียด
/**
* Custom cross-browser styles for keyboard :focus overrides defaults.
*/
*:focus {
outline: 0 !important;
box-shadow:
0 0 0 .2rem #fff,
0 0 0 .35rem #069 !important;
}
/**
* Remove focus styles for non-keyboard :focus.
*/
*:focus:not(.focus-visible) {
outline: 0 !important;
box-shadow: none !important;
}
ขั้นตอนที่ 3 (ตัวเลือก): ใช้คลาส 'โฟกัสที่มองเห็นได้' หากจำเป็น
หากคุณมีรายการใด ๆ ที่คุณต้องการแสดงแหวนโฟกัสเมื่อมีคนคลิกหรือใช้การสัมผัสจากนั้นเพียงเพิ่มfocus-visible
คลาสในองค์ประกอบ DOM
<!-- This example uses Bootstrap classes to theme a button to appear like
a regular link, and then add a focus ring when the link is clicked --->
<button type="button" class="btn btn-text focus-visible">
Clicking me shows a focus box
</button>
ทรัพยากร:
การสาธิต: