2012-06-15 15 views
15

değiştiğinde sınıfını kaldırın. Bunu yapmanın veya kod satırlarını azaltmak mümkün olup olmadığını daha iyi bir yolu olup olmadığınıjquery, ekleme/pencere genişliği eklemem/yük veya bir pencere boyutlandırılır üzerinde bir sınıf kaldırmak için çok temel bir senaryoyu yazdım

Sadece merak ediyorum. Site daha küçük bir ekranda görüntülendiğinde

Temelde ben stilleri değiştirmek isterler. Ben

Neyse işte benim kod ... belli bir genişlikte altında gittiğinde o html etiketi için yeni sınıf eklemek için en iyi olacağını düşündüm.

<script type="text/javascript"> 
$(document).ready(function() { 
    /* Check width on page load*/ 
    if ($(window).width() < 514) { 
    $('html').addClass('mobile'); 
    } 
    else {} 
}); 

$(window).resize(function() { 
    /*If browser resized, check width again */ 
    if ($(window).width() < 514) { 
    $('html').addClass('mobile'); 
    } 
    else {$('html').removeClass('mobile');} 
}); 

Teşekkür

Gillian

+6

biri seçenekler Media Queries – undefined

cevap

2
function resize() { 
    if ($(window).width() < 514) { 
    $('html').addClass('mobile'); 
    } 
    else {$('html').removeClass('mobile');} 
} 

$(document).ready(function() { 
    $(window).resize(resize); 
    resize(); 
}); 
+0

kullanıyor Nedense, bu benim için gerçekten iyi çalıştı sadece bir tanesidir. Teşekkür ederim! –

15

Kullanım Medya sınıfları

, KURU kullanarak kodunu (Do not tekrar) tüm
@media screen and (max-width: 900px) { 
    .class { 
    width:800px; 

    } 
} 

@media screen and (max-width: 500px) { 
     .class { 
     width:450px; 

    } 
} 
+0

Bu çözümü gerçekten çok beğendim, kısacası basit! – iappwebdev

+0

Nedenini açıklayamıyorum, '' media' sorgusuna güvenmeyi hiç öğrenemedim. –

+0

ancak 'checkWidth()' fonksiyonu içinde nerede gidebiliriz nasıl olsa 'window' cisimle') Gerçekten '$ (document) .ready (gerekmez aksi – Rab

12

İlk Bir işlev:

function checkWidth(init) 
{ 
    /*If browser resized, check width again */ 
    if ($(window).width() < 514) { 
     $('html').addClass('mobile'); 
    } 
    else { 
     if (!init) { 
      $('html').removeClass('mobile'); 
     } 
    } 
} 

$(document).ready(function() { 
    checkWidth(true); 

    $(window).resize(function() { 
     checkWidth(false); 
    }); 
}); 
+0

kendinizi ikna için güçlü nedenleriniz var ve olmalı $ (window) .resize() 'işleyicisini ayarlarsınız.Daha sonra kapsam dışı olarak çağırmanız gerekirse, her zaman $ (window) .resize() 'yapabilirsiniz. –

+0

IMHO, sanırım, $ (document) .ready() 'ye ihtiyacınız var, çünkü Mobil cihazlarda, ilk yüklemede doğru çalışmıyor. Bu sadece benim deneyimim, bu yüzden bir tuz tohumu ile al! –

38

Biliyorum partiye geç kaldım, ama gerçekten gerekli olmayan $(document).ready() gibi bazı şeyleri gördüm.

Eğer tekrar tekrar a la var $window = $(window); Bu performansla yardımcı olacaktır onları aradığınız eğer seçiciler önbelleğe deneyin. Ben global kapsam dışında kalmak için bir işlev ifadesi kullanın, ancak hala benim $window ve $html önbelleğe alınmış jQuery seçili öğelere erişebilir.

Muhtemelen

http://jsfiddle.net/userdude/rzdGJ/1

(function($) { 
    var $window = $(window), 
     $html = $('html'); 

    $window.resize(function resize(){ 
     if ($window.width() < 514) { 
      return $html.addClass('mobile'); 
     } 

     $html.removeClass('mobile'); 
    }).trigger('resize'); 
})(jQuery); 
biraz daha temiz, daha kolay biraz takip etmek:

(function($) { 
    var $window = $(window), 
     $html = $('html'); 

    function resize() { 
     if ($window.width() < 514) { 
      return $html.addClass('mobile'); 
     } 

     $html.removeClass('mobile'); 
    } 

    $window 
     .resize(resize) 
     .trigger('resize'); 
})(jQuery); 

http://jsfiddle.net/userdude/rzdGJ/2

+2

İYİ CEVAP Bir örnek :) – arshad

+0

WOW harika cevap harika çalışıyor – Firefog

+0

Sen bir cankurtaran sensin! – LOTUSMS

2

Bu sorun beni bir süre pestered aslında. Genellikle geçişler için birden fazla boyutum var. Biliyorum bu paylaşmak istedim bir düşünce yazdı:

$(function() { 
    var pageTransitions = [['full',1600],['mobile',800],['tiny',400],['micro',0]]; // number shows minimum size - must be from high to low 
    function resize() { 
    var target = 0, 
     w = $(window).width(), 
     h = $('html'); 
    $.each(pageTransitions, function(index, pageTransition) { 
     if(w > pageTransition[1]) { 
      target = index; 
      return false; 
     } 
    }); 
    $.each(pageTransitions, function(index, pageTransition) { 
     h.removeClass(pageTransition[0]); 
    }); 
    h.addClass(pageTransitions[target][0]); 
    } 
    resize(); 
    jQuery(window).on('resize', function() { 
    resize(); 
    }); 
}); 

http://jsfiddle.net/mckinleymedia/ERZ3q/7/

4

Ayrıca bence bu yöntemi kullanabilirsiniz onun takip etmek çok net: ait

$(window).on('resize', function(){ 
     var win = $(this); 
     if (win.width() < 514) { 

     $('html').addClass('mobile'); 

     } 
    else 
    { 
     $('html').removeClass('mobile'); 
    } 

}); 

Simple Method

+0

Bunun, ilk sayfa yüklemesinde değil, yalnızca yeniden boyutlandırmada bir sınıf ekleyeceği belirtilmelidir. – Nickfmc

İlgili konular