2012-12-20 21 views
5

Merhaba Herkes yardımcı olabilir, jQuery kullanarak yanıt veren bir site oluşturmaya çalışıyorum (hedef kitle IE7/8 ve css3-mediaqueries'de olduğu gibi yapmalıyım) .js ayrıca kullanıyorum jQuery UI ile karışıyor gibi görünüyor). Genişlik ve yükseklik algılamak ve stilleri buna göre uygulamak için aşağıdaki komut dosyasını kullanıyorum, genişlik için değil, yükseklik için harika çalışıyor, SMstyle.css yükler ve style.css ile üzerine yazar. JavaScript'i öğrenmeye çalışıyorum ama şu anda süper güçlü değil, daha kolay bir yol olduğunu biliyorum! Herhangi bir yardım ...Ekran sayfalarına bağlı olarak jQuery ile stil sayfalarını değiştirme

function adjustStyle(width, height) { 
    width = parseInt(width); 
    height = parseInt(height); 
     if (((width >= 701) && (width < 1200)) || (height < 800)) 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     else 
      $("#size-stylesheet").attr("href", "css/style.css"); 
} 

$(function() { 
    adjustStyle($(this).width(), $(this).height()); 
    $(window).resize(function() { 
     adjustStyle($(this).width(), $(this).height()); 
    }); 
}); 
+0

Eğer PX ya da yüzde olarak yüksekliği belirtiyorsanız? Yükseklik, özellikle tanımlanmış her ana öğe olmadan yüzde olarak çalışmayacaktır. Bileğim doğruysa, stil sayfasını çağırmak yerine yüksekliği PX'te dinamik olarak ayarlamanız gerekebilir. – Ben

+0

Teşekkürler, Ben piksel olarak adlandırıyorum – user1919582

cevap

1

Duyarlı düzen uğraşan, gerçekten yüksekliği umurumda değil (denenmemiş)

function adjustStyle(width) { 
     width = parseInt(width); 
     if ((width >= 701) && (width < 1200 
     )) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).width()); 
     $(window).resize(function() { 
      adjustStyle($(this).width()); 
     }); 
    }); 

    function adjustStyle(height) { 
     height = parseInt(height); 
     if (height < 800 
     ) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).height()); 
     $(window).resize(function() { 
      adjustStyle($(this).height()); 
     }); 

    }); 
+1

bakmak istiyorum. Bazı insanlar dikey yanıt vermenin de önemli olduğunu savunurlar. http://css-tricks.com/responsive-web-above-the-fold/ – Jrod

+0

Bu durumda localScroll ile paralaks efektini kullanıyorum ve fiziksel kaydırma kapalı olduğundan yükseklik önemlidir. Sitenin kullanıcılarından bazıları 1366x768 laptop ekran boyutlarına sahip, bu nedenle yükseklik önemli bir faktör – user1919582

+0

haline geldi Çok teşekkürler Antila! Mükemmel çalışıyor, saçlarımı yırtıp atmamı engelledin! – user1919582

1

Refactored mutluluk duyacağız. Bütün konsept, içeriğin genişliğe uymaması halinde, çöker (ve böylece yüksekliği arttırır).

DÜZENLEME: Ben $ kapsamı beri yerine $ (this) $ (belge) kullanmak gerekir inanıyoruz

manuel olarak tetiklemek ve ne zaman ile tetiklendiğinde (bu) farklı olacaktır bir yeniden boyutlandırma olayı.

function adjustStyle() { 
    var width = $(document).width(); 
    var height = $(document).height(); 
    if (((width >= 701) && (width < 1200)) || (height < 800)) { 
     $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
    } else { 
     $("#size-stylesheet").attr("href", "css/style.css"); 
    } 
} 

adjustStyle(); 
$(window).resize(function() { 
    adjustStyle(); 
}); 

farklı kapsamları görmek için bu deneyin:

$(function() { 
    console.log('Scope', $(this)); // Scope is DOM-element 
    $(window).resize(function() { 
     console.log('Scope', $(this)); // Scope is Window object. 
    }); 
}); 
+0

Başar, teşekkürler! Şimdi – user1919582

+0

no'lu bir ipucu vereceğim, yüksekliğe doğru ** ** ** **. ** bir pencerede yeniden boyutlandırma ... – user1919582

+0

Bu durumda başka bir betik olmalı, bunu yapmak istiyorum ben de senin HTML –

İlgili konular