최대 장치 너비 또는 최대 너비를 사용해야합니까?


81

CSS 미디어 쿼리를 사용 max-device-width하여 장치 너비 (예 : iPhone 또는 Android 장치) 및 / 또는 max-width페이지 너비 를 대상으로하는을 대상으로 지정할 수 있습니다 .

을 사용 max-device-width하면 데스크톱에서 브라우저 창의 크기를 변경할 때 데스크톱 크기가 변경되지 않으므로 CSS가 변경되지 않습니다.

을 사용하는 경우 max-width데스크톱에서 브라우저 창의 크기를 변경할 때 터치하기 쉬운 요소 및 메뉴와 같은 모바일 지향 스타일이 표시 될 수 있습니다.

특정 브라우저 (및 장치?)를 대상으로 지정하는 것은 이제 더 이상 사용되지 않으며 대상에 대해 조금 더 불가지론 적이어야합니다. 미디어 쿼리에도 적용됩니까?

왜 다른 하나를 목표로 삼으시겠습니까? 권장되는 것은 무엇입니까?

다음은 프로덕션 웹 사이트에서 사용하는 미디어 쿼리의 예입니다.

@media only screen and (min-device-width: 320px) and (max-device-width: 480px) and (min-device-height: 480px) and (max-device-height: 640px) {  
    /* Change a menu to fit the screen better, etc... */
}

나는 max-device-width및 max-width.


2
device-width는 이제 더 이상 사용되지 않습니다. developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width
— Yukulélé

답변:


111

TL; DR

반응 형 웹 사이트를 만드는 경우 더 넓은 범위의 화면 크기를 대상으로하기 위해 / 대신 미디어 쿼리에서 min-width/ max-width를 사용 하십시오 .min-device-widthmax-device-width

2018 년 미디어 쿼리 레벨 4 사양 초안 에 따르면 device-width미디어 기능은 더 이상 사용되지 않습니다 . 이전 버전과의 호환성을 위해 유지되지만 피해야합니다.

8. 부록 A : 더 이상 사용되지 않는 미디어 기능

뷰포트 (또는 페이지 미디어의 페이지 상자) 크기를 쿼리하려면 사용 가능한 공간에 관계없이 장치의 물리적 크기를 참조하는 , 및 대신 width, height및 aspect-ratio미디어 기능을 사용해야합니다. 배치되는 문서. 미디어 기능은 또한 때때로 모바일 장치를 탐지하기 위해 프록시로 사용됩니다. 대신 작성자는 스타일을 지정하려는 장치의 측면을 더 잘 나타내는 미디어 기능을 사용해야합니다.device-widthdevice-heightdevice-aspect-ratiodevice-*

보조 노트로서, 지정 기억 뷰포트 메타 태그를 에 <head>문서의 섹션 :

<meta name="viewport" content="width=device-width, initial-scale=1">

설명

주어진 장치가 가질 수있는 가능한 모든 화면 해상도와 픽셀 밀도로 인해 픽셀은 픽셀이 아닙니다. 고려해야 할 사항 (확대 / 축소, 픽셀 밀도, 화면 해상도 및 크기, 장치 방향, 종횡비 등)이 있기 때문입니다. ..). 이 경우 픽셀은 실제로 물리적 하드웨어 픽셀이 아니라 "광학 참조 장치"라고 합니다.

다행히도 브라우저 뷰포트의 너비와 배율을 제어하기 위해 문서 섹션 에서 뷰포트 메타 태그 를 지정할 수 있습니다 <head>. 이 태그의 content값이 width=device-width이면 화면의 너비가 기기 독립 픽셀 과 일치하고 모든 다른 기기가 크기를 조정하고 일관되게 작동해야합니다.

<meta name="viewport" content="width=device-width, initial-scale=1">

미디어 쿼리 측면에서는 뷰포트 (현재 브라우저 창) 를 대상으로하는 반면 장치의 실제 전체 화면 크기 / 해상도 를 대상으로하기 때문에 max-width대신 을 사용하는 것이 좋습니다 .max-device-widthmax-widthmax-device-width

즉,을 사용하는 경우 max-device-width데스크톱 브라우저 크기를 조정할 때 적용되는 다른 미디어 쿼리가 표시되지 않습니다.는과 달리 max-width기기의 실제 전체 화면 크기 만 고려되기 때문입니다. 브라우저 창의 현재 크기가 아닙니다.

브라우저 크기를 조정할 때 사이트가 응답하지 않기 때문에 적응 형 레이아웃을 만들려는 경우 큰 차이가 있습니다. 또한, max-device-width더 작은 화면을 가진 장치를 대상으로하는 데 사용 하는 미디어 쿼리를 사용하는 경우 브라우저 창을 더 작은 화면 크기에 맞게 크기를 조정하더라도 데스크톱에 적용되지 않습니다.

2018 년 현재 최신 미디어 쿼리 사양 초안 은 실제로 device-width미디어 기능을 더 이상 사용하지 않으므로 피해야합니다.

또한 Google Developers에 대한 이 기사에서는 다음을 사용하지 않는 것이 좋습니다 max-device-width.

Google Developers-웹 기초-반응 형 CSS 미디어 쿼리

를 기반으로 쿼리를 생성 할 수도 있습니다 *-device-width. 이 관행은 강력히 권장되지 않습니다 .

차이는 미묘하지만 매우 중요합니다. min-width브라우저 창의 크기에 따라 다르지만 min-device-width화면 크기에 따라 달라 집니다. 안타깝게도 기존 Android 브라우저를 포함한 일부 브라우저는 기기 너비를 제대로보고하지 못하고 대신 예상되는 뷰포트 너비 대신 기기 픽셀로 화면 크기를보고 할 수 있습니다.

또한을 사용 *-device-width하면 쿼리가 브라우저 창의 크기가 아닌 실제 장치 크기를 기반으로하므로 창 크기를 조정할 수있는 데스크톱 또는 기타 장치에서 콘텐츠가 조정되지 않을 수 있습니다.

추가 읽기 :


2
당신이 말하는 모든 것에 동의하되 이전 버전과의 호환성 측면을 잊어 버리면 몇 년 후에는 관련이 없을 것입니다. 이제 모바일이 있으므로 데스크톱 사이트가 다르게 작동해야하는 이유는 무엇입니까?
— John Magnolia

2
모바일 사이트가 데스크톱에 표시되지 않아야한다고 생각합니다. 브라우저의 크기를 원하는 너비로 조정하고 수평 스크롤바를 사용할 수 있어야합니다. 당신은이 개 사이트의 섹션을 비교하고 싶어 말하지만, 사이드 바 숨기기, 당신은 나란히 2 창 및 크기 조정 측면에서 열 것이다
— 존 목련

3
저는 John M에 동의합니다. 구글은 틀 렸습니다. 저는 개인적으로 그들의 반응 형 디자인 '문서화'가 최악의 유행을 주도하는 것들 중 일부를 발견했습니다. 단지 그것을 쓰는 아이들이 구글에 고용되어 있기 때문입니다. 나는 처음에 이것을 찬성했지만 내 의견으로는 대답이 잘못되었습니다. 왜냐하면 점점 더 많은 사이트가 데스크톱 사용자 경험을 망치고 있기 때문입니다. 의견), 데스크톱 사용자의 경험을 망칠 필요는 없습니다. 우리는 그렇게하지 않고 10 배까지 전환을 증가 시켰습니다.
— Lizardx 2016-04-12

"이 태그의 콘텐츠 값이 width=device-width인 경우 화면의 너비는 기기 독립 픽셀과 일치합니다." 그리고 iOS 기기에서 브라우징하는 경우 dps해당하는 대신 무엇에 해당합니까? iOS 포인트? (그런데,이 게시물에 대한 정말 감사합니다!)
— in_flight

대답은 약간 구식입니다. 문제가 없으며 max-device-width크기를 조정할 수있는 뷰포트 환경 (데스크톱)에서 사용하려는 경우 중요합니다. min-device-width여전히 나쁘다.
— ShortFuse

6

장치 너비를 피하십시오. 그 이유는 사용자 브라우저가 어떻게 반응하는지 알 수 없기 때문입니다.

IOS의 경우 최소한 Safari에서는 간단 해 보입니다. 방향에 관계없이 하나의 단일 장치 너비 응답으로 보입니다. 또한 장치 너비는 장치의 짧은면에 대해서만 명시됩니다. iPhone 4S와 iPad에서 이것을 테스트했습니다. 그들은 방향에 관계없이 각각 320과 768에 응답했습니다.

Android의 경우 더 예측할 수 없습니다. Huawei Ascend Y330 (Android 기본 브라우저, Chrome, Opera, Firefox, Firefox Beta, Dolphin)에서 6 개의 브라우저를 테스트했습니다. 응답은 브라우저 유형 및 방향에 따라 다릅니다.

쿼리 (max-device-width : *** px)가있는 페이지에서 테스트하고 쿼리를 실제 상태로 가져 오기 위해 입력해야하는 px- 값을 확인했습니다. 브라우저 유형 및 방향에 따라 4 가지 다른 값 (320, 480, 534, 800)이 필요했습니다. 이로 인해 장치 너비를 사용할 수 없습니다.


1
장치 너비는 사용자가 사용중인 장치를 알 수있는 유일한 방법이므로 그에 따라 레이아웃을 조정할 수 있습니다. 뷰포트의 픽셀을 기준으로 레이아웃을 조정하면 사용자가 확대했기 때문에 일부 데스크톱에서 모바일 디자인으로 끝납니다. 이로 인해 사용자가 원하는 것과 반대되는 결과가 나오는 경우가 많습니다 (약간의 확대)
— Alice Wonder

정확한 장치 너비를보고하지 않는 모바일 브라우저로 버그 보고서를 제출해야합니다. 대부분의 경우 대체 브라우저가 기본적으로 데스크톱 브라우저 인 것처럼 가장하고 CSS 픽셀 당 1 개의 장치 픽셀을 사용하도록 설정되어 있음을 발견했습니다. 그게 문제 일 가능성이 높습니다.
— Alice Wonder

5

최대 너비를 사용하는 경우 데스크톱에서 브라우저 창의 크기를 변경할 때 터치 친화적 인 요소 및 메뉴와 같은 모바일 지향 스타일이 표시 될 수 있습니다.

이것이 바람직하다는 대중의 의견 인 것 같아 충격적입니다. 모바일 이전의 유체 / 액체 디자인이 잘못되었거나 옳은 이유로 나쁜 것으로 간주되었는지 확인하지 못했습니다. 이것은 유동적 레이아웃의 더 멋진 버전이지만 디자이너가 어떤 이유로 수용하고있는 것 같습니다.

2000 년대 중반에 디자인 커뮤니티가 액체보다 고정 된 레이아웃을 선택했을 때, 텍스트 리플 로우가 가독성을 저해하여 종종 과부 및 기타 타이포 그라피 아티팩트를 생성했기 때문입니다. 또한 코드베이스를 유지 관리하는 것은 요소가 충돌하는 것을 방지하기 위해 디자인에서 디자인까지 까다로 웠습니다. 유동적 인 레이아웃과 반응 형 디자인의 유일한 차이점은 더 나은 브라우저와 석조와 같은 프레임 워크의 확산으로 인해 쉽게 수행 할 수 있다는 것입니다.

저는 개인적으로 최소 / 최대 장치 너비를 사용합니다. 수십 년의 우선 순위가있는 데스크톱 문서 규칙을 따르는 것을 선호하기 때문입니다. 인터넷에서 여는 모든 문서가 데스크톱에서 이러한 방식으로 작동하는 것은 아니며 데스크톱에로드되는 다른 유형의 문서 나 응용 프로그램도 마찬가지입니다. MS Word, Photoshop 등과 같이 모바일 지배 이전에 디자인 된 페이지는 스크롤 위치를 유지하고 레이아웃을 변경하지 않으므로 사용자가 관련없는 창 관리 작업을 수행 할 때 페이지 흐름 내에서 콘텐츠를 추적 할 수 있습니다.

저는 일반적으로 3 개의 중단 점을 사용합니다. 하나는 전화 용, 하나는 태블릿 용, 다른 하나는 데스크톱 용입니다. 데스크톱과 종종 최소한 가로 세로는 고정되어 있고 태블릿 세로 및 그 아래는 유동적입니다. 이러한 적응 형 및 반응 형의 조합을 통해 데스크톱이 데스크톱 사이트처럼 동작 할 수있게하면서 필요하지 않게 10 홀 이상의 개별 고정 너비 모바일 장치 레이아웃을 레이아웃 할 수 있습니다. 뷰포트의 크기를 조정할 수 없기 때문에 텍스트가 모바일 장치에서 리플 로우되지 않습니다.


2
뷰포트의 크기를 조정할 수있는 일부 모바일이 있습니다. 예를 들어 창에서는 여러 앱을 화면에 "스냅"할 수 있고 일부 Android 휴대 전화는 한 번에 두 개의 앱을 볼 수있는 창을 지원합니다. 객관적으로 화면이 작은 데스크톱에서 태블릿 스타일 레이아웃을 원하지 않는 이유는 알 수 없지만 주관적으로 레이아웃에 따라 다릅니다.
— Mark

2
나는 또한 min / max-device-width를 사용하고 있었지만 클라이언트가 귀하의 사이트와의 사용자 상호 작용에 대한 작은 비디오를 만드는 hotjar를 설정했습니다. 그리고 새로운 Android 6 samsung galaxy 6이 최소 픽셀 수를 처리하고 있음을 깨달았습니다. / max-device-width는 CSS 픽셀이 아니라 실제 화면 픽셀로, 물론 페이지가 화면을 벗어나게했습니다. 우리의 경우에 일어난 일은 사용자가 이러한 4x 픽셀 밀도 화면을 모바일 및 데스크톱 CSS의 혼합으로 얻었습니다. 개인적으로 저는 반응 형이 잘 완성 된 데스크탑 디스플레이에서 사용자에게 좋지 않은 자리를 차지한다고 생각하지 않습니다. 그러니까 조심하세요.
— Lizardx

2
Paul, 무슨 일이 일어나고 있는지 알아 내기 위해 약간의 조사가 필요했습니다. Josh의 대답은 Google과 마찬가지로 제 생각에는 잘못되었습니다. 데스크톱이 반응해야한다는 개념은 Google과 같은 그룹에 의해 촉진되는 유행 일 뿐이며 다양한 크기가 모든 CSS 프레임 워크에 적합합니다. 우리의 문제는 잘못된 hotjar 프로그래밍에서 비롯되었습니다. 내 트리거 포인트는 기본적으로 화면이 큰 모든 장치를 약간의 조정만으로 데스크톱으로 취급 한 다음 뷰 포트가 모바일 장치 일 뿐인 위치로 내려갑니다. 명확성을 원하는 사용자의 경우 Paul의 답변을 올바른 것으로 간주하고 유행에 따른 반응 형 답변을 잘못된 것으로 간주합니다.
— Lizardx 2016-04-12

1
참고 - 2018대로 *-device-width미디어 기능은 실제로 최신 미디어 쿼리 사양 초안에 사용되지 않습니다 - drafts.csswg.org/mediaqueries-4/#mf-deprecated
— 조쉬 Crozier가

이것은 오래된 대답이지만 2014 년에도 나는 이것에 강하게 동의하지 않을 것입니다. 참조 된 인쇄상의 오류와 '요소 충돌'은 좋은 관행을 따르는 습관을 만들어 쉽게 피할 수 있습니다. 화면 해상도는 점점 더 커지고 있으며 확장 가능하며 반응 형 디자인은 시간이 지남에 따라 더 중요 해지고 고정 된 사이트는 더 접근하기 어려워 질 것입니다.
— 작은 작은 사람
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.