Max-device-width mi yoksa max-width mi kullanmalıyım?


82

CSS medya sorgularıyla, max-device-widthbir cihaz genişliğini (iPhone veya Android cihazı gibi) ve / veya max-widthbir sayfa genişliğini hedefleyen bir cihazı hedeflemek için kullanabilirsiniz .

Eğer kullanırsanız max-device-widthmasaüstü değişim boyutu değil, çünkü masaüstünüzde tarayıcı penceresinin boyutunu değiştirdiğinizde, CSS, değişmez.

Eğer kullanırsanız max-widthmasaüstünüzde tarayıcı penceresinin boyutunu değiştirdiğinizde, bu tür dokunmatik dostu elemanları ve menüler ve bu tür şeyler gibi mobil odaklı stil gösterilebilir.

Belirli tarayıcıları (ve cihazları?) Hedeflemek artık kullanımdan kaldırıldı ve hedeflediğiniz şey konusunda biraz daha agnostik olmalısınız. Bu medya sorguları için de geçerli mi?

Neden birini diğerine hedef aldın? Hangisi tavsiye edilir?

Bu, bir üretim web sitesinde kullandığım bir medya sorgusu örneğidir:

@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... */
}

İkisini de kullanma eğilimindeyim max-device-widthve max-width.


2
device-width artık kullanımdan kaldırıldı developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width
Yukulélé

Yanıtlar:


113

TL; DR

Eğer Duyarlı bir web sitesi yapıyoruz, kullanım min-width/ max-widthmedya sorguları yerine de min-device-width/ max-device-widthsırayla ekran boyutları daha geniş bir yelpazede hedef.

2018 Ortam Sorguları Seviye 4 spesifikasyon taslağına göre, device-widthortam özelliği kullanımdan kaldırılmıştır . Geriye dönük uyumluluk için saklanacaktır, ancak kaçınılmalıdır.

8. Ek A: Kullanımdan Kaldırılan Medya Özellikleri

Görünümün boyutuna (veya sayfa medyada sayfa kutu) için sorguya için width, heightve aspect-ratiomedya özellikleri yerine, kullanılması gereken device-width, device-heightve device-aspect-ratione olursa olsun cihazın fiziksel boyutuna atıfta hangi ne kadar alan için kullanılabilir düzenlenen belge. device-*Medya özellikleri de bazen mobil cihazları tespit etmek vekil olarak kullanılmaktadır. Bunun yerine, yazarlar, stil oluşturmaya çalıştıkları aygıtın yönünü daha iyi temsil eden medya özelliklerini kullanmalıdır.

Bir yan not olarak, bir belirlendiğini hatırlayın görünüm meta etiketi içinde <head>belgenizin bölümünde:

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

Açıklama

Belirli bir cihazın sahip olabileceği tüm farklı olası ekran çözünürlükleri ve piksel yoğunlukları nedeniyle, bir piksel piksel değildir, çünkü dikkate alınması gereken birkaç şey vardır (yakınlaştırma, piksel yoğunluğu, ekran çözünürlüğü ve boyutu, cihaz yönü, en boy oranı vb.) ..). Bu durumda, bir piksel aslında "optik referans birimi" olarak adlandırılır donanım pikselinden ziyade .

Neyse ki, bir belirtebilirsiniz görünüm meta etiketi içinde <head>tarayıcının görüntü alanının genişliği ve ölçeklendirme kontrol etmek için belgenizin bölümünde. Bu etiketin contentdeğeri varsa width=device-width, ekranın genişliği cihazdan bağımsız piksellerle eşleşecek ve tüm farklı cihazların ölçeklenip tutarlı şekilde davranmasını sağlayacaktır.

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

Medya sorguları açısından, muhtemelen kullanmak isteyeceğiniz max-widthyerine max-device-widthberi, max-widthgörünüm (geçerli tarayıcı penceresi) hedefleyecektir oysamax-device-width cihazın gerçek tam ekran boyutu / çözünürlük hedefleyecektir.

Başka bir deyişle, kullanıyorsanız max-device-width, masaüstü tarayıcınızı yeniden boyutlandırırken farklı medya sorgularının uygulandığını görmezsiniz, çünkü aksine max-width, yalnızca cihazın gerçek tam ekran boyutu dikkate alınır; tarayıcı penceresinin geçerli boyutu değil.

Bu, uyarlanabilir bir düzen oluşturmaya çalışıyorsanız büyük bir fark yaratır, çünkü tarayıcı yeniden boyutlandırıldığında site yanıt vermeyecektir. Ayrıca, max-device-widthdaha küçük ekranlı cihazları hedeflemek için kullandığınız medya sorgularını kullanıyorsanız, tarayıcı penceresini söz konusu daha küçük ekran boyutuyla eşleşecek şekilde yeniden boyutlandırırken bile masaüstlerine uygulanmaz.

2018 itibariyle, en son medya sorgusu spesifikasyon taslağıdevice-width medya özelliğini gerçekten kullanımdan kaldırmıştır , bu nedenle bundan kaçınılmalıdır.

Ayrıca , Google Developers hakkındaki bu makale aşağıdakilerin kullanımını kesinlikle önermemektedir max-device-width:

Google Developers - Web Fundamentals - Duyarlı CSS medya sorguları

Aşağıdakilere dayalı olarak sorgular oluşturmak da mümkündür *-device-width; bu uygulama kesinlikle önerilmez .

Fark ince ama çok önemli: min-width tarayıcı penceresinin boyutuna bağlıdır, oysa min-device-widthekranın boyutuna bağlıdır. Maalesef, eski Android tarayıcısı da dahil olmak üzere bazı tarayıcılar, cihaz genişliğini doğru bir şekilde rapor etmeyebilir ve bunun yerine ekran boyutunu beklenen görüntü alanı genişliği yerine cihaz pikselleri olarak bildirebilir.

Ayrıca *-device-width, sorgu tarayıcı penceresinin boyutuna değil, gerçek aygıt boyutuna dayandığından, içeriğin masaüstlerinde veya pencerelerin yeniden boyutlandırılmasına izin veren diğer aygıtlarda uyarlanmasını engelleyebilir.

Daha fazla okuma:


2
Söylediğiniz her şeyi kabul edin, ancak birkaç yıl içinde geçerliliğini yitirecek geriye dönük uyumluluk tarafını unutun. Artık mobil cihazlarımız olduğu için bir masaüstü sitesi neden farklı çalışmalı?
John Magnolia

2
Sadece bir mobil sitenin masaüstünde görüntülenmemesi gerektiğini düşünüyorum. Tarayıcıyı istediğiniz genişlikte yeniden boyutlandırabilmeli ve yatay kaydırma çubuğunu kullanmalısınız. Diyelim ki 2 sitenin bir bölümünü karşılaştırmak, ancak kenar çubuğunu gizlemek, 2 pencerede açıp yan yana yeniden boyutlandırmak istiyorsunuz
John Magnolia,

3
John M'ye katılıyorum, google yanılıyor, ben şahsen onların duyarlı tasarım 'dokümantasyonunu' orada en kötü modaya uygun şeylerden bazılarını buldum, çünkü sadece bunu yazan çocuklar google tarafından istihdam edildiği için inanç verildi. Başlangıçta buna oy verdim, ancak bence cevap yanlış, çünkü gittikçe daha fazla site masaüstü kullanıcı deneyimini mahvediyor, tamamen tek bir boyuta uyması zorunlu değil, tüm duyarlı css çerçevesine uyuyor (yalnızca benim görüş), masaüstü kullanıcı deneyiminizi mahvetmeniz gerektiği anlamına gelmez. Bunu yapmıyoruz ve dönüşümleri 10 kat artırdık.
Lizardx

"Bu etiketin içerik değeri varsa width=device-width, ekran genişliği cihazdan bağımsız piksellerle eşleşecektir." Ve bir iOS cihazında göz atıyorsanız, bunun yerine dpsneye karşılık gelecek? iOS puanları? (Bu arada, bu yazı için çok teşekkür ederim!)
in_flight

Cevap biraz modası geçmiş. Yanlış bir şey yok max-device-widthve yeniden boyutlandırılabilir görüntü alanı ortamlarında (masaüstü) kullanmak istiyorsanız bu önemlidir. min-device-widthhala kötü.
ShortFuse

6

Cihaz genişliğinden kaçının. Nedeni, kullanıcıların tarayıcılarının buna nasıl yanıt verdiğini bilemezsiniz.

IOS için, en azından Safari ile basit görünüyor. Yönlendirmeden bağımsız tek bir cihaz genişliği yanıtı gibi görünüyor. Ayrıca, cihaz genişliği yalnızca cihazın kısa tarafı için belirtilir. Bunu iPhone 4S ve iPad'de test ettim. Hangi yönelim olursa olsun sırasıyla 320 ve 768'e yanıt verdiler.

Android için daha tahmin edilemez. Huawei Ascend Y330'da (Android varsayılan tarayıcı, Chrome, Opera, Firefox, Firefox Beta, Dolphin) altı tarayıcıyı test ettim. Yanıt, tarayıcı türüne ve yönüne göre değişir.

Sorguyla (max-device-width: *** px) bir sayfada test ettim ve sorguyu gerçek bir duruma getirmek için hangi px değerini doldurmam gerektiğini buldum. Tarayıcı türüne ve yönüne bağlı olarak dört farklı değere (320, 480, 534, 800) ihtiyaç vardı. Bu, cihaz genişliğini kullanılamaz hale getirir.


1
aygıt genişliği, kullanıcının kullandığı aygıtı tanımanın tek güvenilir yoludur, böylece düzeni buna göre ayarlayabilirsiniz. Düzeni görünüm alanındaki piksellere göre ayarladığınızda, kullanıcı yakınlaştırma yaptığı için bazı masaüstlerinde mobil tasarıma sahip olursunuz. Bu genellikle kullanıcının istediği şeyin tam tersi ile sonuçlanır (bu sadece küçük bir büyütmedir)
Alice Wonder

Doğru cihaz genişliği bildirmeyen mobil tarayıcılarda hata raporları vermelisiniz. Çoğu durumda, alternatif tarayıcıların varsayılan olarak bir masaüstü tarayıcısı gibi davranacak şekilde ayarlandığını ve CSS pikseli başına 1 cihaz pikseli kullandığını buldum - ve muhtemelen yaşadığınız sorun buydu.
Alice Wonder

5

Maksimum genişlik kullanırsanız, masaüstünüzdeki tarayıcı penceresinin boyutunu değiştirdiğinizde, dokunmatik öğeler ve menüler gibi mobil odaklı stiller ve bu tür şeyler gösterilebilir.

Bunun arzu edilir olduğuna dair popüler bir görüş gibi görünmesi beni şok ediyor. Mobilden önce sıvı / sıvı tasarımının yanlış mı yoksa doğru nedenlerle kötü olarak kabul edilip edilmediğini anlamadım. Bana öyle geliyor ki, bu sadece sıvı düzeninin daha güzel bir versiyonu, ancak tasarımcıların bir nedenden dolayı benimsediği bir versiyon.

Tasarım topluluğu 2000'lerin ortasında sıvı yerine sabit mizanpajlarla yan yana olmayı seçtiğinde, bunun nedeni metin yeniden akışlarının okunabilirliği engellemesi, genellikle dullar ve diğer tipografik eserlerle sonuçlanmasıydı. Ek olarak, kod tabanını korumak, öğelerin çarpışmasını vb. Önlemek için genellikle tasarımdan tasarıma kadar zahmetliydi. Sıvı düzenler ile duyarlı tasarım arasındaki tek fark, daha iyi tarayıcılar ve duvar benzeri çerçevelerin çoğalması nedeniyle yanıt vermenin başarılmasını kolaylaştırmasıdır.

Ben kişisel olarak min / max-device-width kullanıyorum çünkü onlarca yıllık önceliğe sahip masaüstü belge kurallarını takip etmeyi tercih ediyorum. İnternette açtığınız tüm belgeler bir masaüstünde bu şekilde davranmayacağı gibi, masaüstünüze yüklediğiniz diğer belge türleri veya uygulamalar da olmayacaktır. Tıpkı MS Word, Photoshop vb. Gibi mobilin hakimiyetinden önce tasarlanan sayfalar kaydırma konumlarını korurlar ve mizanpajlarını değiştirmezler, kullanıcıların pencere yönetiminin ilgisiz görevini yerine getirirken sayfa akışı içindeki içeriği takip etmesine izin verir.

Genelde 3 kesme noktası kullanıyorum: biri telefonlar için, biri tablet için ve diğeri masaüstü için. Masaüstü ve çoğu zaman en azından yatay portre sabittir ve tabletin portresi ve altı sıvıdır. Bu uyarlanabilir ve duyarlılık kombinasyonu, masaüstünün bir masaüstü sitesi gibi davranmasına izin verirken, beni 10 küsur ayrı sabit genişlikte mobil cihaz düzenini düzenlemeye gerek kalmadan tutuyor. Görüntü alanı yeniden boyutlandırılamadığı için metin mobil cihazlarda yeniden akıtılmaz.


2
Görünüm penceresinin yeniden boyutlandırılabildiği bazı cep telefonları vardır - örneğin, pencereler birden çok uygulamanın ekrana "yapıştırılmasına" izin verir ve bazı android telefonlarda iki uygulamayı aynı anda görmek için pencereleme desteği vardır. Nesnel olarak, daha küçük ekranlı bir masaüstünde neden tablet tarzı bir düzen istemediğinizi anlamıyorum, ancak öznel olarak bu düzene bağlıdır.
Mark

2
Ayrıca min / max-device-width kullanıyordum ama korktuğum için bir müşteri sitenizle kullanıcı etkileşiminin küçük videoları oluşturan hotjar'ı kurdu ve yeni android 6 samsung galaxy 6'nın piksel sayısını min. / max-device-width, gerçek ekran pikselleri olarak, css pikselleri değil, tabii ki sayfanın ekrandan çıkmasına neden oldu. Bizim durumumuzda olan şey, kullanıcıların bu 4x piksel yoğunluklu ekranlarla mobil ve masaüstü css karışımını almasıydı. Kişisel olarak, responsive olanın kullanıcılar için kötü, iyi hazırlanmış bir masaüstü ekranında herhangi bir yeri olduğuna inanmıyorum. Yani dikkatli ol.
Lizardx

2
Paul, neler olduğunu anlamak için biraz araştırma yapılması gerekiyordu. Josh'un yanıtı bence yanlış, google da olduğu gibi. Masaüstlerinin duyarlı olması gerektiği fikri, google gibi gruplar tarafından beslenen bir heves ve çeşitli tek boyut tüm css çerçevelerine uyar. Bizim sorunumuz kötü hotjar programlamasından geldi, nokta. Tetikleme noktalarım temelde herhangi bir büyük ekranlı cihazı birkaç ince ayar ile bir masaüstü gibi ele alıyor, ardından görünüm bağlantı noktasının yalnızca bir mobil cihaz olacağı yere iniyor. Netlik arayan kullanıcılar için, Paul'un cevabının doğru olduğunu ve hevesli cevapların yanlış olduğunu düşünürdüm.
Lizardx

1
Bilginize - 2018 itibariyle, *-device-widthmedya özelliği en son medya sorgu özelliği taslağında - drafts.csswg.org/mediaqueries-4/#mf-deprecated
Josh Crozier

Bu eski bir cevap ama 2014'te bile buna kesinlikle katılmıyorum. Referans verilen bu tipografik hatalar ve 'çarpışan unsurlar', iyi uygulamaları takip etme alışkanlığı oluşturarak çok kolay bir şekilde önlenebilir. Ekran çözünürlüğü çıldırıyor ve gerçek oluyor, ölçeklenebilir, duyarlı tasarım yalnızca zaman geçtikçe daha önemli olacak, sabit siteler ise daha erişilemez hale gelecek.
küçük minik adam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.