반응 형 웹 디자인 및 사용자 에이전트 스니핑


13

CSS3 media쿼리 기능은 다양한 화면 크기와 장치에 맞게 조정되는 웹 사이트 개발 측면에서 많은 흥미로운 가능성을 이끌어 냈습니다.

그러나 실제로 CSS3 media쿼리 기능과 전체 "응답 성 웹 디자인"움직임이 약속에 미치지 못할 수도 있다는 생각을하기 시작했습니다.

내가 보는 문제는 웹 개발자가 하루가 끝날 무렵 사용자가 데스크톱, 태블릿 또는 모바일 장치를 통해 콘텐츠를보고 있는지에 관심이 있다는 것입니다. 그러나 CSS3는 화면 해상도 를 감지하는 수단 만 제공합니다 . 이론적으로 화면 해상도를 감지하면 다양한 장치를 조정하는 좋은 방법 인 것 같습니다. 그러나 실제로는 ...

화면 너비를 출력하는 간단한 Javascript 함수가 있다고 가정하십시오.

function foo()
{
   alert(screen.width);
}

내 Blackberry Touch에서 다음이 출력됩니다.

768

내 Samsung Galaxy에서는 다음과 같이 출력됩니다.

800

음,이 시점에서, 주류 스마트 폰의 해상도는 데스크탑 수준의 해상도에 가깝습니다. 사용자가 스마트 폰, 태블릿 또는 데스크톱을 통해 웹 사이트를보고 있는지 여부를 감지하는 기능은 화면 해상도 만 있으면 점점 어려워 보입니다.

이를 통해 미디어 쿼리를 기반으로 한 CSS3 "응답 성 웹 디자인"운동의 배후에있는 모든 지혜를 의심하게되었습니다. media쿼리 기능이 다양한 모바일 장치가 아닌 데스크탑 화면의 크기 조정 브라우저 창에 적응하는 데 더 적합한 것 같습니다 .

모바일 또는 태블릿 장치를 감지하는 또 다른 가능한 기술은 ontouchstart이벤트가 지원 되는지 확인하여 기능 감지를 사용 하는 것입니다. 그러나 많은 데스크탑 화면이 터치를 지원하기 시작함에 따라 이것조차 신뢰할 수 없게되고 있습니다.

질문 : 웹 개발자로서 RWD 또는 기능 탐지에 의존 할 수없는 경우 사용자 에이전트 스니핑이 (항상 믿을 수 없을만큼) 모바일 장치를 탐지하는 가장 좋은 방법입니까?


반응 형 웹 디자인의 목표가 (Wikipedia의 주장대로 ) 최소한의 크기 조정, 패닝 및 스크롤로 쉽게 읽고 탐색 할 수있는 이유는 무엇입니까? 중요한 것은 장치 유형이 아닌 장치의 화면 해상도와 화면 크기입니다. 아니?
ruakh

내가 말하는 것은 "화면 해상도"와 실제 화면 크기 (예 : 화면 너비의 센티미터 / 인치) 사이의 연결이 점차 과도 해지고 있다는 것입니다.
Channel72

Apple의 "Retina"장치와 같은 다양한 디스플레이의 픽셀 밀도로 인해 너비 / 해상도가 점점 부정확 해지고 있기 때문에 장치 너비 미디어 쿼리로 무언가를해야한다고 생각했습니다 . 따라서 장치 너비가 모바일 장치의 일반 너비 내에 있으면 다른 레이아웃을 표시합니다. 태블릿 / 데스크톱 사용자의 경우 동일한 레이아웃, 즉 1024px 너비를 보여줍니다.
zuallauz

@zuallauz, device-width꽤 나쁘게 지원하지 않습니까?
Channel72

em 단위로 가지 않겠습니까? 그렇게하면 사용 가능한 텍스트 공간을 기준으로 컨텐츠가 이동합니다.

답변:


12

특정 장치에 대해 너무 걱정하지 마십시오.

사용자가 스마트 폰, 태블릿 또는 데스크탑을 통해 웹 사이트를보고 있는지 감지하는 기능은 화면 해상도만으로도 점점 어려워 보입니다.

되는 설계 할 때 비틀기를하고 있습니다에있는 좋은 화면 해상도를 통해 감지하기가 점점 더 어려워지고, 더 많은 장치가 시장에 진입으로 만 열심히 얻을 것이다, 그러나 미디어 쿼리의 목적은 미디어 쿼리 types.What 장치를 검색하지 않는 것입니다 더 이상 현재 치수에서 사용하는 것이 더 이상 즐겁지 않습니다. 사이트의 너비가 550px로 떨어지기 시작하면 해당 크기의 장치가 있는지 여부는 중요하지 않습니다. 중단 점을 설정하십시오.

기능 감지와 동일합니다. 기기가 터치를 지원하는 경우 휴대 기기 또는 미래의 벽 크기 모니터라면 무엇이 중요합니까? 어느 쪽이든 터치 향상이 유용 할 것입니다.

언급했듯이 사용자 에이전트 스니핑은 완전히 신뢰할 수 없습니다. 정말로 원한다면 User-agent 문자열을 Shakespeare 따옴표로 변경할 수 있습니다. 그러면 귀하의 사이트가 내 브라우저에 대해 무엇을 결정 하시겠습니까?

또한 사용자 에이전트는 모든 가능성을 처리하기 위해 많은 작업이 필요합니다. 안드로이드에 Firefox 용이 있습니까? iOS의 Chrome? 프로 요에 돌고래? WiiU 브라우저? 기존 LG 피처 폰의 극도로 제한된 브라우저? 스라소니? IE 13? 연결? 족제비? 블랙 베리 플레이 북의 브라우저? 태블릿에서 실행되는 Opera와 휴대 전화에서 실행되는 Opera의 차이점을 어떻게 알 수 있습니까?

이 목록은 시간이 지남에 따라 커질 수 있습니다.


1 열 레이아웃은 일반적으로 스마트 폰에 적합합니다. 태블릿의 경우 2 열 또는 3 열 레이아웃으로 벗어날 수 있으며 데스크톱의 경우 일반적으로 3 열이 정상적으로 작동합니다. 어쨌든, 표시하는 이상적인 열 수는 일반적으로 화면 해상도가 아니라 육안생물학적 기능에 따라 달라집니다. 필자의 요점은 화면 해상도와 일반적인 사람이 사이트를 시각적으로 쉽게 검색 할 수있는 가능성 사이에 더 밀접한 상관 관계가 있으면 좋을 것입니다. 적어도 CSS3은 그러한 상관 관계를 가정합니다.
Channel72

1
실제로 있어야합니다. CSS 픽셀이되어 가정 을 정의 할 각도와 거리를 사용하여 물리적 인 픽셀. 많은 제조업체들이 기본 설정에서 이것을 무시하고 있습니다.
Mike Gossmann 3:24에

@ Channel72 1 열 레이아웃은 좁은 화면 너비에 적합합니다 . 스마트 폰 브라우저이거나 대형 모니터의 크기 조정 된 창에있는 데스크탑 브라우저이기 때문에 화면 너비가 좁아도 문제가되지 않습니다. 반응 형 웹 디자인은 사용자 에이전트에 관계없이 모든 시나리오를 적절하게 수용하려고합니다.
Eric King

모바일 사용자에게 완전히 다른 관점을 제공하려면 어떻게해야합니까? 모바일 사용자가 데스크톱 사용자에게 필요한 모든 관련없는 데이터를 다운로드하지 못하도록하는 방법은 무엇입니까? 사용자 에이전트가가는 길 ...
John

1

사용자 에이전트도 있습니다. Google을 사용하는 경우 사용자 에이전트와 현실의 목록을 찾을 수 있습니다. 이것이 문제입니다. 어떤 장치는 어떤 종류의 장치인지 결정하기 위해 dpi 설정을 보는 데 의존합니다.


3
누군가 사용자 에이전트 데이터에 잘못된 데이터를 제공해야하는 경우 웹 사이트의 기본 버전을 얻게됩니다.
John
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.