Sự khác biệt giữa chiều rộng thiết bị tối đa và chiều rộng tối đa cho web di động là gì?


242

Tôi cần phát triển một số trang html cho điện thoại iphone / android, nhưng sự khác biệt giữa max-device-widthvà là max-widthgì? Tôi cần sử dụng css khác nhau cho kích thước màn hình khác nhau.

@media all and (max-device-width: 400px)

@media all and (max-width: 400px)

Có gì khác biệt?



1
Tôi đã thấy rằng nó max-device-widthhoạt động ngay cả khi <meta name="viewport" ...>thẻ không được bao gồm cho các thiết bị màn hình nhỏ và max-widthkhông hoạt động mà không có metathẻ
Faizan Akram Dar

Câu trả lời:


252

max-width là chiều rộng của khu vực hiển thị mục tiêu, ví dụ: trình duyệt

max-device-width là chiều rộng của toàn bộ khu vực kết xuất của thiết bị, tức là màn hình thiết bị thực tế

Cùng đi max-heightmax-device-heighttự nhiên.


15
Nếu bạn muốn thấy sự thay đổi khi thay đổi kích thước trình duyệt của mình, hãy sử dụng chiều rộng tối đa để phát triển, mặc dù chiều rộng thiết bị tối đa chính xác hơn cho sản xuất.
John Magnolia

31
@JohnMagnolia Điều gì khiến bạn nghĩ rằng chiều rộng tối đa của thiết bị tốt hơn cho sản xuất? Sẽ không đảm bảo độ rộng tối đa đáp ứng tốt hơn, bất kể thiết bị nào?
e_ Unknown

8
@eknown Tôi đồng ý. Người dùng từ toàn bộ kỹ năng / kiến ​​thức không phải lúc nào cũng có cửa sổ trình duyệt máy tính để bàn của họ được tối đa hóa (nhưng tôi chưa thấy máy tính bảng hoặc điện thoại nào có trình duyệt KHÔNG được mở tối đa - Tôi cho rằng có thể trong ứng dụng lai, nhưng điều đó có thể là một trường hợp khác nhau). Max-width chắc chắn sẽ phổ quát hơn.
Jason

2
@eknown tôi không đồng ý. Tùy thuộc vào kiểu của bạn, bạn có thể có giao diện rất khác sau khi nhấn điểm dừng phương tiện đó và nếu bạn đang tải biểu định kiểu dựa trên điểm dừng phương tiện, trang web có thể rất khó nhìn khi thay đổi kích thước cửa sổ trình duyệt.
TwinPrimesAreEz

2
Nếu bạn có bố cục hoàn toàn khác cho thiết bị di động, có thể lý do cơ bản là vì không có con trỏ chuột (chúng cần các nút lớn hơn và một cột duy nhất để cuộn qua). Một truy vấn phương tiện tuyệt vời để sử dụng trong trường hợp @media screen and (pointer: coarse) and (hover: none)đó là sẽ chuyển sang phiên bản di động bất kể có bao nhiêu pixel thiết bị di động đóng gói vào màn hình của chúng trong tương lai.
EoghanM

81

max-widthđề cập đến chiều rộng của khung nhìn và có thể được sử dụng để nhắm mục tiêu kích thước hoặc hướng cụ thể kết hợp với max-height. Sử dụng nhiều điều kiện max-width(hoặc min-width), bạn có thể thay đổi kiểu trang khi trình duyệt được thay đổi kích thước hoặc hướng thay đổi trên thiết bị như iPhone.

max-device-widthđề cập đến kích thước khung nhìn của thiết bị bất kể định hướng, tỷ lệ hiện tại hoặc thay đổi kích thước. Điều này sẽ không thay đổi trên thiết bị nên không thể được sử dụng để chuyển đổi biểu định kiểu hoặc chỉ thị CSS khi màn hình được xoay hoặc thay đổi kích thước.


11
Câu trả lời này làm cho nó "nhấp" cho tôi tốt hơn câu trả lời được chấp nhận. Có vẻ như đối với hầu hết các ứng dụng, max-widthmax-heightsẽ là những ứng dụng sẽ sử dụng.
hotshot309

2
@JackieChiles tạo ra một điểm tốt trong một luồng SO khác mà mọi người nên xem xét (liên quan đến kiểu di động xuất hiện trên các thiết bị lớn hơn): stackoverflow.com/questions/8564752/
Lỗi

5
Câu trả lời hay này chưa đầy đủ: định hướng hoán đổi chiều rộng thiết bị và chiều cao thiết bị trên Android nhưng không phải iOS: xem quirksmode.org/blog/archives/2010/04/the_orientation.html .

16

Bạn nghĩ gì về việc sử dụng phong cách này?

Đối với tất cả các điểm dừng chủ yếu dành cho "thiết bị di động" tôi sử dụng min(max)-device-widthvà cho các điểm dừng chủ yếu dành cho sử dụng "máy tính để bàn" min(max)-width.

Có rất nhiều "thiết bị di động" tính toán chiều rộng kém.

Hãy xem http://www.javascriptkit.com/dhtmltutors/cssmediaqueries2.shtml :

/* #### Mobile Phones Portrait #### */
@media screen and (max-device-width: 480px) and (orientation: portrait){
  /* some CSS here */
}

/* #### Mobile Phones Landscape #### */
@media screen and (max-device-width: 640px) and (orientation: landscape){
  /* some CSS here */
}

/* #### Mobile Phones Portrait or Landscape #### */
@media screen and (max-device-width: 640px){
  /* some CSS here */
}

/* #### iPhone 4+ Portrait or Landscape #### */
@media screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2){
  /* some CSS here */
}

/* #### Tablets Portrait or Landscape #### */
@media screen and (min-device-width: 768px) and (max-device-width: 1024px){
  /* some CSS here */
}

/* #### Desktops #### */
@media screen and (min-width: 1024px){
  /* some CSS here */
}

Không trả lời câu hỏi và thực sự là một cách tồi để làm việc trên các điểm dừng của bạn - Hãy cẩn thận.
Bốn mươi

8

max-chiều rộng thiết bị là chiều rộng kết xuất thiết bị

@media all and (max-device-width: 400px) {
    /* styles for devices with a maximum width of 400px and less
       Changes only on device orientation */
}

@media all and (max-width: 400px) {
    /* styles for target area with a maximum width of 400px and less
       Changes on device orientation , browser resize */
}

Độ rộng tối đa là chiều rộng của vùng hiển thị mục tiêu có nghĩa là kích thước hiện tại của trình duyệt.


2
@media all và (max-width: 400px) {} Sự khác biệt là gì
virsir

5

sự khác biệt là chiều rộng tối đa của thiết bị là tất cả chiều rộng và chiều rộng tối đa của màn hình có nghĩa là không gian được trình duyệt sử dụng để hiển thị các trang. Nhưng một sự khác biệt quan trọng khác là sự hỗ trợ của các trình duyệt Android, trên thực tế nếu bạn sẽ sử dụng độ rộng tối đa của thiết bị thì điều này sẽ chỉ hoạt động trong Opera, thay vào đó tôi chắc chắn rằng độ rộng tối đa sẽ hoạt động cho mọi loại trình duyệt di động ( Tôi đã thử nghiệm nó trong Chrome, firefox và opera cho ANDROID).


5

max-width là chiều rộng của vùng hiển thị mục tiêu, ví dụ: trình duyệt; chiều rộng tối đa của thiết bị là chiều rộng của toàn bộ khu vực kết xuất của thiết bị, tức là màn hình thiết bị thực tế.

• Nếu bạn đang sử dụng độ rộng tối đa của thiết bị , khi bạn thay đổi kích thước cửa sổ trình duyệt trên màn hình của mình, kiểu CSS sẽ không thay đổi thành cài đặt truy vấn phương tiện khác;

• Nếu bạn đang sử dụng độ rộng tối đa , khi bạn thay đổi kích thước trình duyệt trên máy tính để bàn của mình, CSS sẽ thay đổi thành cài đặt truy vấn phương tiện khác và bạn có thể được hiển thị với kiểu dáng cho điện thoại di động, chẳng hạn như các menu thân thiện với cảm ứng.


3

Nếu bạn đang tạo một ứng dụng đa nền tảng (ví dụ: sử dụng phonegap / cordova) thì,

Không sử dụng chiều rộng thiết bị hoặc chiều cao thiết bị. Thay vì sử dụng chiều rộng hoặc chiều cao trong các truy vấn phương tiện CSS vì thiết bị Android sẽ gặp sự cố về chiều rộng thiết bị hoặc chiều cao thiết bị. Đối với iOS nó hoạt động tốt. Chỉ các thiết bị Android không hỗ trợ chiều rộng thiết bị / chiều cao thiết bị.


2

Không sử dụng chiều rộng / chiều cao thiết bị nữa.

Tỷ lệ chiều rộng thiết bị, chiều cao thiết bị và tỷ lệ khung hình thiết bị không được chấp nhận trong Truy vấn phương tiện Cấp 4: https://developer.mozilla.org/en-US/docs/Web/CSS/@media#Media_features

Chỉ cần sử dụng chiều rộng / chiều cao (không có min / max) kết hợp với độ phân giải định hướng & (min / max-) để nhắm mục tiêu các thiết bị cụ thể. Trên chiều rộng / chiều cao di động phải giống với chiều rộng / chiều cao của thiết bị.


Các mục "thiết bị-xxx" đơn giản không được chấp nhận, các mục "max-device-xxx" KHÔNG được phản đối.
Roger Krueger

1
@RogerKrueger Bạn có chắc chắn về điều đó? Tôi không thấy gì để chỉ ra rằng các truy vấn phương tiện tối đa thiết bị-xxx không bị phản đối.
Jonny Cook
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.