2016-08-16 34 views
5

Yeniden boyutlandirilirken, yükseklik güncellenmez. Yük, yüksekliği ayarladıktan sonra, değişkeni güncellememe rağmen güncelleme yapmaz.Öğe yüksekliği jquery yeniden boyutlandirildikten sonra güncellenmiyor

Yüksekliği ayarladığı satırları çıkarırsam, değişkeni iyi güncelleştirir, ancak yükseklik ayarlandıktan sonra hiçbir şey yapmaz.

Neredeyim yanlış gittim?

var hero_height = $('.hero-image').outerHeight(); 
console.log('heroHeight: ' + hero_height); 

$(document).ready(function() { 
    $(window).load(function() { 

     $('.hero-image').css('height', hero_height); 

    }); 

    $(window).resize(function() { 

     if (hero_height !== $('.hero-image').outerHeight()) { 
      $('.hero-image').css('height', hero_height); 
     }; 

     hero_height = $('.hero-image').outerHeight(); 
     console.log('heroHeight: ' + hero_height); 

    }); 
}); 

İşte JS keman
https://jsfiddle.net/5c1za6xa/

+0

Görüntünün sadece% veya em özelliğini kullanamayacağının belirli bir nedeni var mı? Bunun için javascript (ya da bu konu için jQuery) ihtiyacınız olduğunu düşünmüyorum ve bunu uygulamaya çalışmak sadece başağrısı verecektir. Örneğin, http://learnlayout.com/percent.html adresini ziyaret edin. – nmg49

+0

Halihazırda kahraman görüntüsünde yüzde bir yükseklik kullanıyorum ve amaçlanan şekilde çalışıyor. Adres çubuklarını gizleyen cep telefonlarına bir düzeltme eklemek istiyorum. Adres çubuğu gizlendiğinde, pencere yüksekliği artık daha büyüktür ve bu nedenle yüzde, içeriği büyürken atlamak için içeriğin zorlanmasını yeniden hesaplar. Dürüst olmak gerekirse, bu çözümün işe yaramadığını fark ettim ... Çünkü adres çubuğu gizlendiğinde yükseklik de jquery ile güncellenir ... Hmmm ... – KINKWILDE

+0

Ah, – nmg49

cevap

1

olan pencere boyutlandırma fonksiyonunda var hero_height = $('.hero-image').outerHeight(); ekleyin.

$(window).resize(function() { 
    var hero_height = $('.hero-image').outerHeight(); 
    if (hero_height !== $('.hero-image').outerHeight()) { 
     $('.hero-image').css('height', hero_height); 
    }; 

    hero_height = $('.hero-image').outerHeight(); 
    console.log('heroHeight: ' + hero_height); 
}); 
+0

'u netleştirdiğiniz için teşekkürler Üzgünüm, bu hala çalışmıyor Çalışıyorum – KINKWILDE

+0

Kodunuzu kod snippet'lerine yükleyebilir, böylece daha iyi bir fikir edinebilirim. –

+0

Orijinal soru bir JS fiddle ile güncellendi – KINKWILDE

0

Bunu göz ardı ediyorsunuz! Bunun için jQuery'ye ihtiyacınız yok, sadece CSS media queries.

İşte bir örnek

nav { 
    display: block; 
} 

@media screen and (max-width: 480px) { 
    nav { 
    display: none; 
    } 
} 

Bu (teknik veya az 480px ekran yüksekliği bulunan her şey) bir nav mobil cihazlarda çubuğunu gizler var. Maksimum genişlik ve stilleri ihtiyaçlarınızı karşılayacak şekilde değiştirebilirsiniz. Bu (verdiniz.START_SPANAyarları hangi javascript desteği olmayan kullanıcılar/cihazlar için çalışırken, böylece

  • O javascript gerektirmez okumak daha kolay oluyor

    1. bir takım nedenlerden için jQuery üstündür bu günlerde neredeyse hiç kimse yok. Ancak javascript kullanmamak, sayfa yükleme sürenizi de büyük ölçüde hızlandıracaktır.
    2. Genel olarak (CSS3'ün yayınlanmasından bu yana), stili ayarlamak için hemen hemen hiçbir zaman javascript (veya bu konu için jQuery) kullanmanız gerekmez. Bu nedenle, sayfanın stilini/görünümünü değiştirmeye çalıştığınız için, CSS'yi kullanmalısınız. JS'yi web sayfanızın değil, stillerinizin dinamik işlevselliğine bırakın.
  • +0

    Ve durumu tamamen yanlış değerlendirdiniz - nav ile hiçbir şey yapıyorum ... Yukarıdaki cevabım, telefonlar varsayılan kullanıcı arayüzünden bahsediyor. URL'yi yazdığınız adres çubuğunu biliyor musunuz?Kaydırma üzerinde otomatik olarak gizlenecek ... Bu yüzden neden HERO-IMAGE içeriğimin durmasını engellemek için bir çözüm bulmaya çalışıyordum… – KINKWILDE

    +0

    KINKWILDE, sorularınızı daha iyi açıklamanız gerekiyor. Başlığınız sorunuzu doğru bir şekilde iletmiyor ve açıklamalarınız belirsiz ve kafa karıştırıcı. – nmg49

    İlgili konular