2016-08-16 11 views
5

Podczas zmiany rozmiaru nie aktualizuje wysokości. Gdy obciążenie ustawi jego wysokość, nie zaktualizuje się mimo aktualizacji zmiennej.Wysokość elementu nie jest aktualizowana po zmianie wielkości jquery

Jeśli wyjmę linie, w których ustawia wysokość, moja zmienna aktualizuje się dobrze, ale po ustawieniu wysokości po prostu nic nie robi.

Gdzie popełniłem błąd?

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); 

    }); 
}); 

Oto JS skrzypce
https://jsfiddle.net/5c1za6xa/

+0

Czy istnieje jakiś szczególny powód, dla którego nie można po prostu użyć właściwości% lub em na obrazie? Nie sądzę, że potrzebujesz javascript (lub jQuery o to chodzi) do tego i próbując wdrożyć to w ten sposób tylko dostarczy ci bólów głowy. Zobacz na przykład http://learnlayout.com/percent.html. – nmg49

+0

Już używam procentowej wysokości na obrazie bohatera i działa zgodnie z przeznaczeniem. Po prostu chcę dodać poprawkę do telefonów komórkowych, które ukrywają paski adresu. Kiedy pasek adresu się ukryje, wówczas wysokość okna jest teraz większa, więc procent ponownie przelicza wymuszanie przeskakiwania zawartości w miarę jej powiększania. Szczerze mówiąc, właśnie uświadomiłem sobie, że to rozwiązanie też nie zadziała ... Ponieważ wysokość zostanie również zaktualizowana przez jquery, gdy pasek adresu się ukryje ... Hmmm ... – KINKWILDE

+0

Ah, dzięki za wyjaśnienie – nmg49

Odpowiedz

1

Dołącz var hero_height = $('.hero-image').outerHeight(); w funkcji zmiany rozmiaru okna.

$(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

Niestety, to nadal nie działa nie działa. – KINKWILDE

+0

możesz przesłać swój kod do fragmentów kodu, aby uzyskać lepszy pomysł. –

+0

Oryginalne pytanie zostało zaktualizowane za pomocą JS fiddle – KINKWILDE

0

Przerażasz to! W tym celu nie potrzebujesz jQuery, tylko CSS media queries.

Oto przykład

nav { 
    display: block; 
} 

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

Spowoduje to ukrycie paska nawigacyjnego na urządzeniach mobilnych (lub Technicznie nic o wysokości ekranu mniejszej niż 480px). Oczywiście można zmienić maksymalną szerokość i style, aby dopasować je do swoich potrzeb. To jest o wiele lepsze niż jQuery dla wielu powodów

  1. to sposób łatwiejsze do odczytania
  2. Nie wymaga JavaScript, więc będzie pracować dla użytkowników/urządzeń, które nie obsługują JavaScript (które przyznawane jest prawie nikogo w dzisiejszych czasach). Ale nie używanie javascript przyspieszy również czas ładowania strony ogromnie.
  3. Ogólnie (od wydania CSS3), prawie nigdy nie trzeba używać javascript (lub jQuery w tym zakresie), aby dostosować styl. Dlatego, ponieważ próbujesz zmienić styl/wygląd strony, powinieneś użyć CSS. Pozostaw JS dynamicznej funkcjonalności strony internetowej, a nie stylów.
+0

I całkowicie błędnie oceniłeś sytuację - nic nie robię z nav ... Moja odpowiedź powyżej mówi o domyślnym interfejsie telefonu. Znasz ten pasek adresu, na którym wpisujesz adres URL?Automatycznie ukryje się przy przewijaniu ... Dlatego właśnie próbowałem wymyślić rozwiązanie, które uniemożliwiłoby przeskakiwanie zawartości HERO-IMAGE ... – KINKWILDE

+0

KINKWILDE, musisz lepiej wyjaśnić swoje pytania. Twój tytuł nie odzwierciedla dokładnie twojego pytania, a twoje wyjaśnienia są niejasne i mylące. – nmg49

Powiązane problemy