2013-01-02 25 views
6

Yerel bir şirket için PhoneGap kullanarak temel bir web uygulaması yapıyorum. Uygulamanın üst kısmında başlık/banner için iki resim oluşturdum. Biri portre yönlendirmesi için optimize edilmiştir ve biri manzara için optimize edilmiştir. Cihazın hangi yönde tutulduğuna bağlı olarak birini gösterebilmek istiyorum. JQuery mobile benim için işlevselliğin geri kalanıyla ilgileneceğinden, medya sorguları hakkında ve açıkçası benim ihtiyaçlarım için karmaşık bir şekilde biraz daha karmaşık bir şekilde çalışıyordum ve tüm App için sadece bir CSS kullanıyorum.Cihaz yönüne bağlı olarak görüntüleri değiştirme

Bu sorunun çözülmesine yardımcı olması için ekleyebileceğim birkaç basit kod satırı var mı?

cevap

5

Sen dikey ve yatay yönler için CSS medya sorgularını kullanabilirsiniz, hiç karmaşık değil:

@media screen and (orientation: portrait) { ... } 
@media screen and (orientation: landscape) { ... } 

herhangi yönlendirme için background-image geçersiz kılabilir bu medya sorguları kullanma.

Resmi belgeler: http://www.w3.org/TR/css3-mediaqueries/#orientation

onu kullanmanın iki yolu vardır:

Presume sınıfta header ile <div> var:

@media screen and (orientation: portrait) 
{ 
    div.header { background-image:url(image1.jpg); } 
} 
@media screen and (orientation: landscape) 
{ 
    div.header { background-image:url(image2.jpg); } 
} 

Alternatif olarak, <img> etiketlerini kullanmak isteyebilir. Bu durumda bunlardan ikisine ihtiyacınız olacak ve CSS kurallarına sahip olan sadece bir tane gizleyeceksiniz/gösteriniz. <img> etiketler sırasıyla sınıfları header-land ve header-portrait var diyelim:

@media screen and (orientation: portrait) 
{ 
    .header-land { display:none; } 
    .header-portrait { display:inline-block; } 
} 
@media screen and (orientation: landscape) 
{ 
    .header-land { display:inline-block; } 
    .header-portrait { display:none; } 
} 
+0

Yani sadece söylemek kod ben 2 resim image1.jpg ve image2.jpg sahip Sözde yani, nasıl kullanırım Bu dosyalar ile yukarıdaki kod? – user1942412

+0

2 örnek ekledim. Açıklamalarım açık mı? – keaukraine

+0

Bu sorunlara neden olabilir: Bir nexus 7'de, klavyelerin gösterilmesi durumunda, ekran dikeyden yatay –

0

Bu medya sorgusu nasıl kullanılacağı hakkında bir cevaptır, bu sorunu çözmek için oldukça kolay bir yoludur. Ama bir önkoşul o css arka planı olarak resim göstermek için ok değil <img ... /> olarak

.my-banner { 
    ...declarations like: 
    background-position: 
    border: 
    margin: 
    padding: 
} 
@media all and (max-width: 320px) { 
    .my-banner { 
    background-image: url(portrait.png); 
} 
@media all and (min-width: 321px) { 
    .my-banner { 
    background-image: url(landscape.png); 
} 
+0

Thankyou'ya değişir, bu yüzden bu görüntüleri HTML'mden nasıl ararım? – user1942412

+0

Min ve maksimum genişlik, yönlenmeyi kesin olarak belirlemez. Ayrıca, 320px sadece iPhone'un ekranı için doğrudur. – keaukraine

+0

@keaukraine Evet, yönlendirmek için manzara ve portre kullanmak daha iyi olabilir. – Osserspe

İlgili konular