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


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-widthmax-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, heightaspect-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.