Müşterinin tarayıcı yakınlaştırma özelliğini nasıl kullanıyorsunuz?


22

Bir sayfada bir galeride çok fazla resim var. Görüntülerin keskin kalmasını istiyorum, bu yüzden tarayıcı ölçeklemesi yapmıyorum, görüntünün orijinal boyutlarını kullanıyorum.

Ancak, bu yalnızca tarayıcı yakınlaştırma seviyesi% 100 olduğunda çalışır. Zum seviyesini arttırdığım veya azalttığımda, görüntülerin kalitesi düşüyor.

Bazı istemciler varsayılan olarak farklı yakınlaştırma seviyelerine sahiptir. Merak ediyordum, nasıl idare edersiniz ve biz nasıl idare edebiliriz?

Şerefe


1
Harika soru, bu beni sık sık rahatsız eden bir şey. Bu makale yararlı bir arkaplan okumasıdır , ancak sabit genişlik ve yüksekliğe sahip x2 boyutlu görüntüleri koymaktan ve tarayıcının bunu düzeltmesine izin vermenin ötesinde henüz mükemmel bir cevap görmedim (belirgin olumsuz tarafları vardır, ancak bu ve piksel yoğunluğu sorunlarını giderir) ).
user56reinstatemonica8

Ne tür bir cevap beklediğinizden emin değilim. Açıkçası, otomatik yeniden boyutlandırma kullanmak istemiyorsunuz. Tarayıcının görüntüleri yeniden boyutlandırmasını nasıl engelleyeceğinizi mi soruyorsunuz, böylece diğer öğeler orijinal resim boyutunda düzenlenmiş olacak? Her olası yakınlaştırma seviyesi için hazır görüntüler otomatik olarak nasıl gönderilir? Ya da aklında ne var? Ayrıca, neden bunu yapmak istiyorsun? Bir kullanıcı orijinal zumda sayfayı düzgün görmekte zorlanıyorsa, zum sonrası keskinle otomatik yeniden boyutlandırma arasındaki farkı görmez.
Rumi P.

6
Başaramazsın. Bu bir kullanıcı tercihidir. Buna karışmaya gerek yok.
DA01

1
Kullanıcının tercihlerine nasıl müdahale edeceğini sormuyor. Birçok kullanıcının varsayılan olarak yakınlaştırılması gerçeğini nasıl kullanacağını soruyor ve görüntüler orijinal boyutlarındaysa grenli görüntüler elde edecek.
user56reinstatemonica8

@ user568458 evet. İşte böyle çalışır. İşe yarayacak hiçbir şey yok.
DA01

Yanıtlar:


21

Diğer cevapların çoğunun bu noktayı kaçırdığını düşünüyorum: bu, kullanıcı tercihlerini geçersiz kılmakla ilgili değil, her bir CSS pikseli için birden fazla fiziksel piksel atayan bir kullanıcının aygıtının ortak senaryosunda en iyi kalitede görüntüler vermeyle ilgili aka " Referans piksel "görüntünüzde tarayıcının görüntüyü ölçeklendirmesi, pikselli ve grenli olmasıyla sonuçlanır.

Aşağıda önerilen çözümlerim, ancak ilk önce bunun gerçekleşebileceği dört yol var:

  • En nadir: kullanıcı yakınlaştırmayı seçer . Çok büyük bir problem değil, çünkü onların seçimi.
  • Şaşırtıcı şekilde yaygın: kullanıcının tarayıcısı varsayılan olarak yakınlaştırılmıştır . Örneğin, birçok yüksek piksel yoğunluğundaki Windows makinesi varsayılan olarak% 125 veya daha fazlasına yakınlaştırılmış ve Firefox yakın zamanda (kafa karıştırıcı!) Yapmıştır, bu durumlarda, kullanıcılara% 125 oranında yakınlaştırıldıklarında% 100 oranında yakınlaştırdıklarını söyler neden başlarının tırmalandığını ve neden her şeyin birden grenli göründüğünü merak ederek bıraktılar.
  • Çok yaygın: çoğu Android cihazı (ve diğer cihazlar?) 1'den daha büyük bir piksel oranına sahiptir. Bu, her "CSS pikseli" nin aslında birden fazla fiziksel piksel kullanılarak görüntülendiği anlamına gelir - yani 200 piksele 200 piksellik bir görüntü width: 200px; height: 200px;gerçekten ölçeklenecek 200 x 200 pikselden daha yüksek olan bu 200 piksel x 200 piksel görüntü, potansiyel olarak grenlidir.
  • Çok yaygın: Birçok modern Apple cihazında " retina ekranlar " bulunur. Bu aslında piksel oranı 2 olan ancak daha iyi pazarlamaya ve ismiyle algılanmasına izin veren birkaç özel özelliğe sahip bir Android cihazla aynıdır.

Bunlardan herhangi biri, John'un şaşırtıcı derecede grenli görünen bir resim galerisi sorunuyla sonuçlanacaktır.


Birinin bu soruna harika bir çözümü olacağını umuyordum, ama şu anda tercih edilen seçeneklerim, en etkili fakat en az evrensel olarak mümkün olanlardan başlayarak:

  1. Mümkünse vector - SVG (ya da hala IE8'i desteklemeniz gerekiyorsa Raphael.js) gidin. Gerçekçi olarak, bu sadece simgeler, diyagramlar vb. İçin bir seçenektir ve fotoğraflar için asla bir seçenek değildir. Çok karmaşık SVG, gerekli işlemlerden dolayı düşük uçlu cep telefonlarında da sıkışık olabilir.
  2. Mümkünse, cihazın piksel oranını tespit edin ve buna göre görüntüler gönderin. Bu, Windows'ta Firefox sorununu da çözebilir, çünkü Windows'taki Firefox, yakınlaştırıp uzaklaştırırken piksel oranlarının okunmasını değiştirir. Dezavantajı, sunucu ve istemci tarafında geliştirme çalışmaları içeren zor bir kodlama problemi haline gelmesidir.
  3. 1. ve 2. mümkün değilse, ancak bu gerçekten önemlidir ve görüntü kalitesi, yükleme süresinden daha önemlidir, yalnızca görüntüyü iki katına çıkarın.

    • Bu, Google’ın ana sayfasında logolarıyla yaptığı şeydir: 538px x 190px PNG görüntüsünü 269px x 95px'lik bir kapta sıkıştırırlar. Ayrıca, duyarlı görüntülerin çalışma şekliyle aşağı yukarı aynı.

    • Bu eskiden beri eski sürümlerin görüntüleri küçültmekte berbat olduklarından kötü bir uygulama olarak kabul edildiler, ancak bunlar artık çok nadiren kullanılıyor ve yüksek piksel yoğunluklu ekranlardan çok daha az yaygın. Görüntü boyutunu artıracağı ve bu nedenle yükleme süresini artıracağı için hala istenmeyen bir durum - bu durum bazında yargılamanız gereken bir takas.

    • İki kat daha büyüktür, çünkü çok az sayıda cihaz 2'den büyük bir orana sahiptir, çok az sayıda kullanıcı% 200'den daha fazla yakınlaştırılır ve görüntüleri% 50 oranında ölçeklendirme diğer miktarlardan daha temizdir.
  4. 1, 2 mümkün değilse ve yükleme süreleri 3 için çok yüksek önceliğe sahipse, başka seçeneklerin farkında değilim ve önerim bu konuda endişelenmemektir, çünkü İnternet'teki sitelerin yarısı aynı sorunu yaşıyor ve sitenizde bu sorunu yaşayan kişiler de diğer sitelerde bu sorunu yaşayacak. Kahretsin, Windows'taki Firefox kendi UI düğmelerini bile pikselleştiriyor ...

Yakınlaşan kullanıcıların 'en nadir' olduğuna itiraz ediyorum. Bu özellik, yakınlaştırmak için ... ilk etapta orada olmasının nedeni budur. Ayrıca, yakınlaştırırken daha yüksek çözünürlüklü görüntüler kullanmanın ilginç fikirleri olsa da, bununla ilgili kullanılabilirlik zorlukları olabileceğine dikkat edin. Örneğin, tarayıcımdaki yakınlaştırma seçeneğine her bastığımda tarayıcının yeni resimler çekmesini istemiyorum.
DA01

2
Eğer jpgs kullanıyorsanız, görüntülerin boyutunu (3'te belirtildiği gibi) ikiye katlamak ve bunları adil bir bit resim sıkıştırmasıyla (kalite 40 kadar düşük) kaydetmek size küçük dosya boyutları verebilir. Bir kere küçültüldüğünde, sıkıştırma eserleri görünmez. Sonuçlar, özellikle görüntülerin gradyan içerdiği yerlerde değişir.
Dominic

1
Yazma zamanında çok yeni olmasına ve dolayısıyla hastalanmasına destek olmamasına rağmen , yeni <resim> öğesinin burada söz edilmesini gerektirdiği görülüyor.
user50849 9:14

1
Not: Photoshop'ta web için kaydederken, istenen boyutları iki katına çıkarırken jpg kalitesini% 61 olarak ayarlamak için, dosya boyutu neredeyse% 100'deki amaçlanan boyutlarla tam olarak aynı olacaktır. Bu yüzden, tüm jpeglerimi% 61'e sıkıştırmaya ve tanımlanmış bir yükseklik / genişlikle hizmet vermeye başladım (bu aynı zamanda tarayıcı yüklenmeden önce resim hakkında daha fazla bilgi sahibi olma avantajına da sahiptir!)
Kjeld Schmidt

4

DA01'in yorumladığı gibi bu konuda hiçbir şey yapmamalısınız.

Yakınlaştırma kullanıcı tarafından belirlenen bir seçenektir ve bu nedenle kontrolleri altındadır. Dağılmaya karar verdikleri ayarlar sizin sorumluluğunuzda olmamalıdır.

Farklı tarayıcıları ve sürümleri hesaba katabilirsiniz ve neyin olmasın, ancak makul bir şekilde konuşursanız, kullanıcının yakınlaştırmasını hesaba katmamalısınız.

Tabii% 125 veya% 150 (belki de yapmak zorunda kalmayabilirsiniz) olabilir. Fakat% 200,% 300, daha fazla? Sadece bir anlam ifade etmiyor.

Kullanıcı yüksek kontrastlı pencereler temasını kullanıyorsa? Ya sürekli büyüteç kullanıyorlarsa? Kimin umrunda?

İdeal olarak web siteniz, küçük zum farkları arasında gerçek bir fark yaratmayacak kadar esnektir, ancak görüntüler zum ile kaliteyi düşürür ancak bu sizin sorumluluğunuzda değildir.

Elbette bu sadece benim görüşüm ama çalıştığım şirket de müşterilere yakınlaştırma tercihlerini desteklemediğimizi açıkça söylüyor.


ultrawide veya dar gamı ​​cihazları vb. ile kullanıcılar arasında sorun yok .... evet katılıyorum
joojaa

1

Diğer insanlar, karşılaşacağınız problemler hakkında harika ipuçları verdiler ve bu alanda iyi bir eğitim yapacak kadar iyi değilim.

Kullanıcının res / cihazına göre ayarlayan duyarlı bir site tasarlamak isteyebilir ve daha sonra, sahip olduğunuz görüntüleri genişletmek ve sıkmak yerine, talep edildiğinde görüntüleri daha yüksek veya daha düşük res dosyalarına geçirecek bir kod arıyorsunuz.

Bunu son denediğimde, media-query.js ve picturefill.js dosyalarını kullandım. Bakınız: http://responsivedesign.is/resources/images/picture-fill . Bazı görüntülerin iki sütuna yayılacağı 3 sütun düzenim vardı ... Tarayıcı penceresi yeterince küçük yapıldığında, büyük görüntüler yalnızca bir sütun genişliğinde olan daha küçük bir res sürümüne geçerdi. Kullanıcının tarayıcısı, sadece ihtiyaç duydukları dosyanın sürümünü yükler. (ve benim durumumda, duvar eklentisi her şeyi yerleştirmek için hareket ettirirdi).

Tabii ki o zaman kullanıcı javascript etkin olmalı ...


Tümü yanıt veren web tasarımı için çalışırken, bu, kullanıcı yakınlaştırmadan (tarayıcı boyutundan bağımsız olan her şeyin orantılı olarak yeniden boyutlandırılmasıyla) farklı bir sorunu ele alıyor (farklı tarayıcı boyutlarıyla başa
çıkmayı düşünüyor

0

Kullanıcıların elini zorlayamazsın. Kullanıcı ayarları, oynamak için size ait değildir. Ayarlar ve onları atlamak kötü bir fikir, kullanıcının bir şey yapmasının bir nedeni olabilir. Her iki durumda da, çeşitli cihazlar arasında hiçbir şey garanti edemezsiniz.

Aslında teknik tarafa girerseniz daha da ilginç hale gelir. Web sayfanla gerçekten Krallığın anahtarlarını veriyorsun. Kullanıcının web sayfasını indirdiğini görün ve kullanıcı istediği her şeyi yapabilir. Bu katman üzerinde kontrol sahibi değilsiniz, kullanıcı makinede çalışan tüm işlemlerden sonra ve lütfen ne isterlerse yapabilirler. Stackexhange bile bilgisayarımda / cep telefonunda sizinkilerle aynı görünmüyor. GUI'nin bazı yönlerini otomatik olarak, 2 oluşturma hatasını düzeltmek ve 2 kısayol eklemek için otomatik olarak değiştiriyorum.


3
Kullanıcıların yakınlaştırmasını engellemeye çalışmadıklarını düşünüyorum, ancak örneğin, kullanıcının tarayıcısının varsayılan olarak% 125 yakınlaştırmayı seçtiğinden emin olun, çünkü Windows garip olduğundan, görüntülerin hala net göründüğünü ve pikselli görünmediğini görün.
user56reinstatemonica8

1
Önemli değil, aynı şey
joojaa

2
Gerçekten aynı şey değiller ... örneğin, Google’ın logosu 269px x 95px'lik bir kapta 538px x 190px PNG resmidir. Bu, yakınlaştırılmışsa veya yüksek piksel yoğunluğu olan bir ekran kullanıyorsanız, tarayıcının bu ekstra piksel verisini kullanabileceği için görüntünün pikselleştirilme olasılığı düşüktür. Google edilir değil bunu yaparak kullanıcının zum ayarları ile oynayarak.
user56reinstatemonica8

Sonunda yaptığın şey sana kalmış, evet. Ama biri daha sonra .. bir 259% zoom kullanıyorsa
joojaa

1
iyi bugünkü düşüncen, gelecekte çok yakın bir şey değişecek. Bu yüzden görme sorunu olan herkes yarın bugün yüzde 200'üne sahip olabilir. Yüzde 200'ü normları telafi ederek sorunu daha da kötüleştirir. Her iki durumda da sorun er ya da geç elden çıkacaktır. Geçici zaferlerden daha fazlasını yapamazsınız, sistem değişmeli.
joojaa

0

Bulanık fotoğraflara (yani fotoğrafçıların kabusu) yol açan HiDPI ekranlarında görüntülerin büyütülmesinin sinir bozucu davranışı da beni bir süre rahatsız etti. Ayrıca, görüntüleri engellemek için basit bir CSS özelliğinin olmadığını da merak ettim.

CSS ile şu andaki çözümüm şöyle görünüyor:

@media only screen and (min--moz-device-pixel-ratio: 1.25),
    (-o-min-device-pixel-ratio: 5/4),
    (-webkit-min-device-pixel-ratio: 1.25),
    (min-device-pixel-ratio: 1.25) {
        img {
            --pic-width: 460px;
            width: calc(var(--pic-width) / 1.25 - var(--pic-width) + var(--pic-width));
        }
}
@media only screen and (min--moz-device-pixel-ratio: 1.5),
    (-o-min-device-pixel-ratio: 3/2),
    (-webkit-min-device-pixel-ratio: 1.5),
    (min-device-pixel-ratio: 1.5) {
        img {
            --pic-width: 460px;
            width: calc(var(--pic-width) / 1.5 - var(--pic-width) + var(--pic-width));
        }
}
@media only screen and (min--moz-device-pixel-ratio: 1.75),
    (-o-min-device-pixel-ratio: 7/4),
    (-webkit-min-device-pixel-ratio: 1.75),
    (min-device-pixel-ratio: 1.75) {
        img {
            --pic-width: 460px;
            width: calc(var(--pic-width) / 1.75 - var(--pic-width) + var(--pic-width));
        }
}
@media only screen and (min--moz-device-pixel-ratio: 2.00),
    (-o-min-device-pixel-ratio: 2),
    (-webkit-min-device-pixel-ratio: 2.00),
    (min-device-pixel-ratio: 2.00) {
        img {
            --pic-width: 460px;
            width: calc(var(--pic-width) / 2.00 - var(--pic-width) + var(--pic-width));
        }
}

Bir sonraki adım, gerekirse farklı görüntü boyutlarını tanımlamak ve ayarlamak için sınıfları kullanmak olacaktır. Görüntü boyutlarını dinamik olarak almanın bir yolunu bilmiyorum. CSS İşlevi attr () bunun için çalışmıyor gibi görünüyor.


-1

Yani bu bir programlama sorusu daha fazla olurdu. Ancak JQuery, hatta sadece css düzlemini kullanarak kullanıcıların ekran genişliğine, ekran yüksekliğine ve buna bağlı olarak farklı görüntüler görüntüleyebilirsiniz.

Yine de, bu muhtemelen sorulacak yığının değişmesi değildir.


Soru ekran boyutu ile ilgili değil. Tarayıcı yakınlaştırma ayarları hakkında.
DA01

-1

Bunu sitenin başındaki HTML yoluyla kolayca yapabilirsiniz

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

Bu, geliştiriciler tarafından her tür site için önerilmemektedir, ancak istediğinizi yerine getirmelidir.


Bunun bir masaüstü tarayıcısında etkisi olduğunu sanmıyorum.
DA01

1
Son zamanlarda aynı sorunu çözmek için bunu denedim ve işe yaramadı. Ayrıca, işe yarasa bile, sorunun yanlış bir şekilde çözülmesi - yakınlaştırmanın önlenmesi, görüntülerin yakınlaştırıldığında netlik sağlaması yerine, önleme olur.
user56reinstatemonica8

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.