Truy vấn phương tiện truyền thông CSS iPhone 5


132

IPhone 5 có màn hình dài hơn và nó không bắt được lượt xem trên trang web của tôi. Các truy vấn thiết kế đáp ứng mới cho iPhone 5 là gì và tôi có thể kết hợp với các truy vấn iPhone hiện có không?

Truy vấn phương tiện truyền thông hiện tại của tôi là:

@media only screen and (max-device-width: 480px) {}

3
Chúng tôi có thể xem các truy vấn phương tiện truyền thông hiện tại của bạn?
BoltClock

Câu trả lời:


283

Một tính năng phương tiện hữu ích khác là device-aspect-ratio.

Lưu ý rằng iPhone 5 không có tỷ lệ khung hình 16: 9 . Thực tế là 40:71.

iPhone <5:
@media screen and (device-aspect-ratio: 2/3) {}

Iphone 5:
@media screen and (device-aspect-ratio: 40/71) {}

Iphone 6:
@media screen and (device-aspect-ratio: 375/667) {}

iPhone 6 Plus:
@media screen and (device-aspect-ratio: 16/9) {}

iPad:
@media screen and (device-aspect-ratio: 3/4) {}

Tham khảo:
Truy vấn phương tiện truyền thông @ W3C
Mô hình so sánh tỷ lệ máy tính iPhone


2
Tôi thích cách tiếp cận này nhưng không thể làm cho nó hoạt động trong chế độ xem web của ứng dụng PhoneGap cho đến khi thêm tỷ lệ -webkit-min-device-pixel-pixel như được giải thích bởi Stephen Sprawl zsprawl.com/iOS/2012/09/css-media-queries-for -Có-iphone-5 . Màn hình @media và (tỷ lệ khung hình thiết bị: 40/71) và (-webkit-min-device-pixel-ratio: 2) {// iphone5 cho điện thoại teh}
TaeKwonJoe

Tôi đã phải thêm and (-webkit-min-device-pixel-ratio: 2)vào truy vấn phương tiện iPhone 5 để làm cho nó hoạt động trong webview PhoneGap như được nêu bởi @TaeKwonJoe
Mahendra Liya

1
Cảm ơn bạn đã cập nhật điều này để bao gồm iPhone 6!
Maverick

Điều này hoạt động khá tốt khi tôi cần phân biệt iphone 4 và iphone 5 trong css.
euccas

1
Đối với iphone 6, (tỷ lệ khung hình thiết bị: 667/375) không hoạt động trên iphone 6. vật lý thực sự. Mặc dù vậy, nó vẫn hoạt động trên trình giả lập iOS. Tôi đã thay đổi nó thành 375/667 và nó hoạt động trên thiết bị vật lý.
làm những gì bây giờ

64

Có cái này, mà tôi tin vào blog này :

@media only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone 5 only */
}

Hãy nhớ rằng nó phản ứng với iPhone 5, không phải phiên bản iOS cụ thể được cài đặt trên thiết bị nói trên.

Để hợp nhất với phiên bản hiện tại của bạn, bạn sẽ có thể phân tách dấu phẩy:

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone only */
}

Lưu ý: Tôi chưa kiểm tra mã trên, nhưng tôi đã kiểm tra @mediacác truy vấn được phân tách bằng dấu phẩy trước đó và chúng hoạt động tốt.

Lưu ý rằng những điều trên có thể đánh vào một số thiết bị khác có chung tỷ lệ, chẳng hạn như Galaxy Nexus. Dưới đây là một phương pháp bổ sung sẽ chỉ nhắm mục tiêu đến các thiết bị có một chiều 640px (560px do một số dị thường pixel hiển thị kỳ lạ) và một trong các khoảng từ 960px (iPhone <5) và 1136px (iPhone 5).

@media
    only screen and (max-device-width: 1136px) and (min-device-width: 960px) and (max-device-height: 640px) and (min-device-height: 560px),
    only screen and (max-device-height: 1136px) and (min-device-height: 960px) and (max-device-width: 640px) and (min-device-width: 560px) {
    /* iPhone only */
}

1
Bạn có thể gợi ý cách tôi có thể kết hợp truy vấn này với truy vấn cũ để bắt cả iphone 4 và 5 không?
Maverick

6
Cẩn thận vì điều này cũng sẽ ảnh hưởng đến các điện thoại khác - không chỉ các điện thoại. Một ví dụ là Samsung Galaxy Nexus.
Mike Sweeney

@MikeSweeney Cuộc gọi tốt. Tôi đã cập nhật bài viết của mình bằng một phương pháp mới không bao gồm các thiết bị khác.
Eric

@Eric Đó là khá nhiều những gì tôi đã giải quyết sau một loạt các thử nghiệm qua điện thoại - phải đưa chiều cao vào hỗn hợp! Có vẻ như đang hoạt động tốt trên 7-8 điện thoại khác nhau mà tôi thử nghiệm.
Mike Sweeney

dòng này có đúng iPhone 5 and not to iOS 6không? Có nên là: "iPhone5 và không phải iPhone 6"?
Sgnl

38

Tất cả những câu trả lời được liệt kê ở trên, sử dụng max-device-widthhoặc max-device-heightcho các truy vấn phương tiện, đều gặp phải lỗi rất lớn: chúng cũng nhắm mục tiêu rất nhiều thiết bị di động phổ biến khác (có thể không mong muốn và chưa bao giờ được thử nghiệm, hoặc sẽ tung ra thị trường trong tương lai).

Truy vấn này sẽ hoạt động cho bất kỳ thiết bị nào có màn hình nhỏ hơn và có thể thiết kế của bạn sẽ bị hỏng.

Kết hợp với các truy vấn phương tiện dành riêng cho thiết bị tương tự (đối với HTC, Samsung, IPod, Nexus ...), cách thực hành này sẽ khởi động một quả bom hẹn giờ. Để gỡ lỗi, ý tưởng này có thể làm cho CSS của bạn trở thành một spagetti không được kiểm soát. Bạn không bao giờ có thể kiểm tra tất cả các thiết bị có thể.

Xin lưu ý rằng truy vấn phương tiện duy nhất luôn nhắm mục tiêu IPhone5 và không có gì khác , là:

/* iPhone 5 Retina regardless of IOS version */
@media (device-height : 568px) 
   and (device-width : 320px) 
   and (-webkit-min-device-pixel-ratio: 2)
/* and (orientation : todo: you can add orientation or delete this comment)*/ {
                 /*IPhone 5 only CSS here*/
}

Lưu ý rằng chiều rộng và chiều cao chính xác , không phải chiều rộng tối đa được kiểm tra ở đây.


Bây giờ, giải pháp là gì? Nếu bạn muốn viết một trang web sẽ đẹp trên tất cả các thiết bị có thể, cách tốt nhất là bạn sử dụng xuống cấp

/ * mẫu xuống cấp chúng tôi chỉ kiểm tra độ rộng màn hình, điều này sẽ thay đổi khi chuyển từ dọc sang ngang * /

/*css for desktops here*/

@media (max-device-width: 1024px) {
  /*IPad portrait AND netbooks, AND anything with smaller screen*/
  /*make the design flexible if possible */
  /*Structure your code thinking about all devices that go below*/
}
@media (max-device-width: 640px) {
 /*Iphone portrait and smaller*/
}
@media (max-device-width: 540px) {
 /*Smaller and smaller...*/
}
@media (max-device-width: 320px) {
 /*IPhone portrait and smaller. You can probably stop on 320px*/
}

Nếu hơn 30% khách truy cập trang web của bạn đến từ thiết bị di động, hãy lật ngược chương trình này, cung cấp phương pháp tiếp cận di động đầu tiên. Sử dụng min-device-widthtrong trường hợp đó. Điều này sẽ tăng tốc độ kết xuất trang web cho trình duyệt di động.


10
Tôi sẽ đi tăng cường tiến bộ và điện thoại di động đầu tiên. Đó là bắt đầu với điện thoại di động và xây dựng bằng cách sử dụng chiều rộng thiết bị tối thiểu.
primavera133

2
Cũng lưu ý rằng giải pháp tỷ lệ chiều cao / chiều rộng / pixel chỉ phù hợp với iPhone 5 cũng sẽ phù hợp với điện thoại tiếp theo xuất hiện có cùng đặc điểm. Chủ đề chung của câu trả lời của bạn là chính xác: suy nghĩ về các thiết bị cụ thể là cách sai để tiến hành.
Mũi nhọn

@Dan - mặc dù câu trả lời của bạn không trực tiếp giải quyết câu hỏi, nhưng nó sẽ xem xét nó trong một viễn cảnh rộng hơn về thực tiễn tốt nhất cho thiết kế đáp ứng. Những điều bạn viết ở đây, theo tôi, rất sâu sắc và thiết thực. Năm ngôi sao.
Dimitri Vorontzov

@Dan - cố gắng thực hiện đề xuất của bạn, một cái gì đó không hoạt động. Tôi có thể yêu cầu bạn xem qua: stackoverflow.com/questions/16486078/
Kẻ

@primavera, hãy nói tại sao. Lợi thế của một phương pháp di động đầu tiên là gì?
S ..

7

Đối với tôi, truy vấn đã thực hiện công việc là:

only screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)

7

iPhone 5 ở chế độ dọc và ngang

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) {

/* styles*/
}

iPhone 5 trong phong cảnh

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : landscape) { 
/* styles*/

}

iPhone 5 trong chân dung

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : portrait) { 
 /* styles*/

}

Tại sao bạn cần max-device-width : 568pxtrên chân dung?
adi518

1
@ adi518 nếu bạn không sử dụng chiều rộng tối đa thì quy tắc css được áp dụng cho mọi thiết bị lớn hơn 320px, giống như hầu hết các thiết bị - máy tính để bàn, v.v.
Sudheer

1
Tại sao không sử dụng device-width: 320px and device-height: 568pxthay thế?
adi518

5

Không có phản hồi nào hoạt động đối với tôi khi nhắm mục tiêu Ứng dụng phonegapp.

Như các điểm liên kết sau đây , giải pháp dưới đây hoạt động.

@media screen and (device-height: 568px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
    // css here
}

5

Chỉ là một bổ sung rất nhanh vì tôi đã thử nghiệm một vài lựa chọn và bỏ lỡ điều này trên đường đi. Đảm bảo trang của bạn có:

<meta name="viewport" content="initial-scale=1.0">

3

Bạn có thể nhận được câu trả lời của mình khá dễ dàng cho iPhone5 cùng với các điện thoại thông minh khác trên cơ sở dữ liệu tính năng phương tiện cho thiết bị di động:

http://pieroxy.net/blog/2012/10/18/media_features_of_the_ ultra_common_devices.html

Bạn thậm chí có thể nhận các giá trị thiết bị của riêng bạn trên trang thử nghiệm trên cùng một trang web.

(Tuyên bố miễn trừ trách nhiệm: Đây là trang web của tôi)


0

afaik không iPhone sử dụng tỷ lệ pixel là 1,5

iPhone 3G / 3GS: (-webkit-device-pixel-ratio: 1) iPhone 4G / 4GS / 5G: (-webkit-device-pixel-ratio: 2)


0
/* iPad */
@media screen and (min-device-width: 768px) {
    /* ipad-portrait */
    @media screen and (max-width: 896px) { 
        .logo{
            display: none !important;
        }
    }
    /* ipad-landscape */
    @media screen and (min-width: 897px) { 

    }
}
/* iPhone */
@media screen and (max-device-width: 480px) {
    /* iphone-portrait */
    @media screen and (max-width: 400px) { 

    }
    /* iphone-landscape */
    @media screen and (min-width: 401px) { 

    }
}

-3

Bạn có thể nên giảm "-webkit-min-device-pixel-ratio" xuống 1,5 để bắt tất cả iPhone?

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 640px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 1.5) {
/* iPhone only */
}

1
IPhone nào đang sử dụng tỷ lệ pixel của thiết bị là 1,5?
BoltClock

1
Tôi đặc biệt khuyên bạn nên thực hiện các truy vấn phương tiện tùy thuộc vào độ rộng của thiết bị và không phải tên thiết bị (iPhone). Vì vậy, nếu iPhone 5 có chiều rộng hơn, chỉ cần làm cho nó có thể sử dụng được.
Tom Roggero
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.