찾다
웹 프론트엔드CSS 튜토리얼상호 작용 미디어 기능 및 잠재력 (잘못된 가정)

상호 작용 미디어 기능 및 잠재력 (잘못된 가정)

이 기사는 2015 Dev.opera 조각의 크게 확장 된 업데이트 인 미디어 쿼리 레벨 4 상호 작용 미디어 기능 ( pointer , hover , any-pointer , any-hover )을 둘러싼 오해를 명확하게합니다. 원래 기사는 any-hover: none ; 이 버전은 최신 작업 초안과 일치하며 브라우저 구현의 불일치를 해결합니다 (현재 테스트 결과 및 관련 버그 보고서 참조).

Media Queries Level 4는 사용자 입력 장치를 기반으로 웹 사이트 스타일 및 기능 ( window.matchMedia 를 통해 CSS Interactivity 또는 JavaScript 동작)을 조정하는 것을 목표로합니다. 일반적으로 잘 지원되는 반면 구현 변동은 지속됩니다.

일반적인 사용 사례는 터치 스크린 대 마우스/스타일러스 사용을 기반으로 제어 크기 조정 또는 조건부로 호버 기반 메뉴를 활성화해야합니다.

 <code>@media (pointer: fine) { /* Mouse or stylus: small controls okay */ } @media (pointer: coarse) { /* Touchscreen: larger touch targets */ } @media (hover: hover) { /* Enable hover menus */ } @media (hover: none) { /* Disable hover menus */ }</code>

개발자는 종종 터치 감지를 위해 이러한 기능을 활용하며 일반적으로 pointer: coarse 감지 될 때 터치 이벤트를 듣습니다.

 if (wind
 / * 거친 포인터 : 터치 이벤트 듣기 */
 target.addeventListener ( "터치 스타트", ...);
} 또 다른 {
 / * 그렇지 않으면 마우스/키보드 이벤트 사용 */
}

그러나이 접근법은 단순하고 기능의 목적을 오해합니다.

1 차 입력 제한

pointerhover 기본 포인터 입력의 특성 만 드러납니다. 이는 사용자의 실제 기본 입력, 특히 흐릿한 장치/입력 라인과 다를 수 있습니다. 결정적으로 이러한 기능은 키보드 전용 사용자를 감지 하지 않습니다 . 따라서 쿼리 결과에 관계없이 키보드 접근성을 확인하십시오.

Bluetooth 마우스가있는 전화는 사용자가 주로 마우스를 사용하고 있음에도 불구하고 pointer: coarse and hover: none 보고 할 수 있습니다. 반대로 표면 태블릿은 주로 트랙 패드 ( pointer: fine )를 사용할 수 있지만 사용자는 터치 스크린을 선호 할 수 있습니다.

이 문제는 any-pointerany-hover 에 의해 해결됩니다.

모든 입력을 평가합니다

any-pointerany-hover 모든 포인터 입력의 결합 된 기능을 반영합니다. 입력이 다른 특성을 갖는 경우 여러 값이 일치 할 수 있습니다. 현재 구현은 일반적으로 다음과 같이 작동합니다.

원래 사용 사례를 개선하기 위해 모든 포인터 입력에 대한 기본 결정 : "입력 거칠어지면 제어를 확대하고" 적어도 하나의 입력이 호버를 지원하는 경우 호버 메뉴를 활성화하십시오. "

 <code>@media (any-pointer: coarse) { /* At least one coarse pointer: larger controls */ } @media (any-hover: hover) { /* At least one hover-capable input: enable hover menus */ }</code>

any-pointer: none 포인터 입력이 존재 하지 않는 경우에만 해당되지 않습니다. any-hover: none 입력 중 어느 것도 호버를 지원하지 않아서 크게 중복되는 경우에만 해당되지 않습니다.

뉘앙스를 위해 쿼리를 결합합니다

정제 된 평가를 위해 쿼리를 결합하십시오.

 <code>@media (pointer: coarse) and (any-pointer: fine) { /* Primary input is touchscreen, but a fine input exists. Prioritize touch, but mouse/stylus users can still interact. */ } @media (pointer: fine) and (any-pointer: coarse) { /* Primary input is mouse/stylus, but a touchscreen exists. Larger controls might be safest. */ } @media (hover: none) and (any-hover: hover) { /* Primary input lacks hover, but another input supports it. Treat hover as optional. */ }</code>

브라우저는 환경 변화 (예 : Bluetooth 마우스 추가)에 대한 응답으로 쿼리를 동적으로 재평가합니다.

스크립팅이 필요할 수 있습니다

상호 작용 미디어 기능은 현재 사용되는 입력을 나타내지 않습니다. 어떤 입력과 같은 도구? JavaScript 이벤트를 추적하지만 상호 작용이 시작된 후에 만 ​​정보를 제공하며 가짜 이벤트 (보조 기술, iOS 전체 키보드 지원)로 인해 부정확 할 수 있습니다.

깨진 경험을 피합니다

이벤트 기반 터치 감지 ( pointer: coarse -> 터치 이벤트 듣기)에 결함이 있습니다. 주로 마우스 중심 장치의 터치 장치에서 터치 스크린 입력 및 터치 스크린 입력을 사용하지 않습니다. 대신, 항상 마우스/키보드 이벤트를 듣고 any-pointer: coarse 경우에만 터치 이벤트 리스너를 추가하십시오.

 / * 항상 마우스/키보드 이벤트를 듣습니다 */
target.addeventListener ( "클릭", ...);

if (wind
 / * 거친 포인터가 존재하는 경우 터치 이벤트도 듣습니다 */
 target.addeventListener ( "터치 스타트", ...);
}

또는 통합 입력 처리에 포인터 이벤트를 사용하십시오.

명백한 사용자 선택

입력 감지 함정을 피하기 위해 사용자가 선택 가능한 모드 (터치/마우스)를 제공하십시오. 미디어 쿼리를 사용하여 기본 설정에 알리고 터치 입력을 감지하여 모드 스위치를 자극하십시오.

책임있는 쿼리

상호 작용 미디어 기능의 한계를 이해하십시오. 단일 입력 유형을 가정하지 말고 pointerhover 에만 의존하거나 키보드 접근성을 무시하십시오. 대신 터치 친화적 인 우선 순위를 정하고 사용자 선택을 제공하며 항상 키보드 접근성을 보장하십시오.

위 내용은 상호 작용 미디어 기능 및 잠재력 (잘못된 가정)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
드래그 ' 및 Droppin ' 반응에서드래그 ' 및 Droppin ' 반응에서Apr 17, 2025 am 11:52 AM

React Ecosystem은 모두 드래그 앤 드롭의 상호 작용에 중점을 둔 많은 라이브러리를 제공합니다. 우리는 React-dnd, React-beautiful-dnd를 가지고 있습니다.

빠른 소프트웨어빠른 소프트웨어Apr 17, 2025 am 11:49 AM

최근 빠른 소프트웨어에 대해 놀랍도록 상호 연결된 것들이있었습니다.

배경 클립이있는 중첩 된 그라디언트배경 클립이있는 중첩 된 그라디언트Apr 17, 2025 am 11:47 AM

나는 자주 배경 클립을 사용한다고 말할 수 없습니다. I ' D WART IT IT는 일상적인 CSS 작업에서 거의 사용되지 않았습니다. 그러나 나는 Stefan Judis의 게시물에서 그것을 상기시켰다.

React 후크와 함께 requestAnimationFrame 사용React 후크와 함께 requestAnimationFrame 사용Apr 17, 2025 am 11:46 AM

requestAnimationFrame을 사용하여 애니메이션은 쉬워야하지만 React의 문서를 철저히 읽지 않으면 몇 가지 문제가 발생할 수 있습니다.

페이지 상단으로 스크롤해야합니까?페이지 상단으로 스크롤해야합니까?Apr 17, 2025 am 11:45 AM

아마도이를 사용자에게 제공하는 가장 쉬운 방법은 요소의 ID를 대상으로하는 링크 일 것입니다. 그래서 ...처럼 ...

최고 (GraphQL) API는 귀하가 작성한 것입니다최고 (GraphQL) API는 귀하가 작성한 것입니다Apr 17, 2025 am 11:36 AM

들어보세요, 나는 GraphQL 전문가가 아니지만 함께 일하는 것을 좋아합니다. 프론트 엔드 개발자로서 데이터를 노출시키는 방법은 꽤 멋지다. 메뉴와 같습니다

주간 플랫폼 뉴스 : 텍스트 간격 북마크, 최상위 차단, 새로운 앰프 로딩 표시기주간 플랫폼 뉴스 : 텍스트 간격 북마크, 최상위 차단, 새로운 앰프 로딩 표시기Apr 17, 2025 am 11:26 AM

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

테두리 반경을 보존하는 동안 상자를 확장하는 다양한 방법테두리 반경을 보존하는 동안 상자를 확장하는 다양한 방법Apr 17, 2025 am 11:19 AM

나는 최근 코데 펜에서 흥미로운 변화를 발견했다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구