:focus-visible에 대한 폴리필을 조건부로 로드
5317 단어 htmlcsspolyfillaccessibility
:focus-visible
! browser support 괜찮지만 Safari is still working on 이 중요한 접근성 기능입니다.그동안 WICG focus-visible polyfill을 로드하여 아직 지원하지 않는 브라우저에서 향상된 포커스 스타일을 제공할 수 있습니다. 이상적으로는 포커스 가시성을 지원하는 브라우저에서 폴리필이 필요하지 않을 때 강제로 폴리필을 다운로드하도록 하지 않습니다. 그리고 미래에 모든 최신 브라우저가 이 기능을 지원할 때 중복 코드를 제공하고 싶지 않습니다.
다음은 지원되지 않는 경우에만 포커스가 보이는 폴리필을 로드하는 데 사용할 수 있는 스니펫입니다! 닫기 전에 이것을 삽입하고
</body>
폴리필의 로컬 복사본을 가리키도록 script.src
를 변경합니다(또는 jsdelivr과 같은 자산 CDN 사용).<script>
try {
document.body.querySelector(':focus-visible');
} catch (error) {
var script = document.createElement('script');
script.src = "/js/focus-visible.js";
document.body.appendChild(script);
}
</script>
CSS
또한 세 가지 상황에서 포커스 표시기를 처리하기 위해 CSS를 작성해야 합니다.
다음은 이러한 경우에 대한 설정입니다.
/**
* My focus styles
*/
:focus {
outline: 2px dashed currentColor;
outline-offset: .25rem;
}
/**
* When focus-visible is supported:
* remove outline when :focus but not :focus-visible
*/
:focus:not(:focus-visible) {
outline: none;
}
/**
* when polyfill loaded:
* remove outline when :focus but not .focus-visible
*/
.js-focus-visible :focus:not(.focus-visible) {
outline: none;
메모
:focus
표시기가 표시됩니다. outline: none
선언이 단일 규칙으로 결합되어 있음을 알 수 있습니다. 브라우저가 이해하지 못하는 선택기가 있는 규칙을 무시하는 방식으로 인해 작동하지 않습니다. 이 단계에서 최적화를 비활성화해야 할 수도 있고 제 경우에는 outline: none
선언 중 하나를 outline: 0
로 변경했습니다. 이 CSS는 동일하게 작동하지만 대부분의 축소기에 의해 단일 규칙으로 결합되지 않음을 의미합니다. 추가 읽기
Reference
이 문제에 관하여(:focus-visible에 대한 폴리필을 조건부로 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/accudio/conditionally-loading-a-polyfill-for-focus-visible-1108텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)