2016-08-16 1 views
5

Bei der Größenänderung wird die Höhe nicht aktualisiert. Sobald die Last ihre Höhe eingestellt hat, wird sie nicht aktualisiert, obwohl ich die Variable aktualisiert habe.Elementhöhe wird nicht nach jquery resize aktualisiert

Wenn ich die Zeilen herausnehmen, wo es die Höhe setzt, dann aktualisiert sich meine Variable gut, aber sobald die Höhe eingestellt ist, tut es nichts.

Wo bin ich falsch gelaufen?

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

    }); 
}); 

Hier ist eine JS Geige
https://jsfiddle.net/5c1za6xa/

+0

Gibt es einen bestimmten Grund, warum Sie nicht einfach eine% oder em Eigenschaft auf dem Bild verwenden können? Ich glaube nicht, dass Sie dafür Javascript (oder jQuery) benötigen und versuchen, es so zu implementieren, wird Ihnen nur Kopfschmerzen bereiten. Siehe zum Beispiel http://learnlayout.com/percent.html. – nmg49

+0

Ich verwende bereits eine prozentuale Höhe auf dem Heldenbild und es funktioniert wie vorgesehen. Ich möchte einfach einen Fix für Handys hinzufügen, die ihre Adressleisten verbergen. Wenn die Adressleiste ausgeblendet wird, ist die Fensterhöhe jetzt größer und der Prozentsatz berechnet den Inhalt neu, sodass er springt, wenn er größer wird. Um ehrlich zu sein, habe ich gerade realisiert, dass diese Lösung auch nicht funktioniert ... Weil die Höhe auch über jquery aktualisiert wird, wenn sich die Adressleiste verbirgt ... Hmmm ... – KINKWILDE

+0

Ah, danke für die Klarstellung – nmg49

Antwort

1

Fügen var hero_height = $('.hero-image').outerHeight(); im Fenster Resize-Funktion.

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

Sorry, das tut es immer noch nicht arbeite nicht. – KINKWILDE

+0

können Sie Ihren Code in Code-Schnipsel hochladen, damit ich eine bessere Idee bekommen kann. –

+0

Ursprüngliche Frage wurde mit einer JS Geige aktualisiert – KINKWILDE

0

Sie überschätzen dies! Sie brauchen jQuery überhaupt nicht, nur CSS media queries.

Hier ist ein Beispiel

nav { 
    display: block; 
} 

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

Dies wird eine Navigationsleiste auf mobile Geräte verstecken (oder technisch, alles mit einer Bildschirmhöhe von weniger als 480px). Sie können natürlich die maximale Breite und Stile an Ihre Bedürfnisse anpassen. Dies ist weit überlegen jQuery für eine Reihe von Gründen

  1. Es ist viel einfacher
  2. zu lesen Es ist nicht Javascript erforderlich, so dass es für die Benutzer/Geräte funktionieren, die kein JavaScript unterstützt (das die Genehmigung erteilt ist fast niemand in diesen Tagen). Aber die Verwendung von Javascript wird auch die Ladezeit Ihrer Seite enorm beschleunigen.
  3. Im Allgemeinen (seit der Veröffentlichung von CSS3), müssen Sie fast nie Javascript (oder jQuery für diese Angelegenheit) verwenden, um Stil anzupassen. Da Sie versuchen, den Stil/das Aussehen der Seite zu ändern, sollten Sie daher CSS verwenden. Belassen Sie das JS für die dynamische Funktionalität Ihrer Webseite, nicht für Stile.
+0

Und Sie haben die Situation völlig falsch eingeschätzt - ich mache nichts mit Nav ... Meine Antwort oben spricht über die Standardbenutzeroberfläche des Telefons. Sie kennen die Adressleiste, in die Sie die URL eingeben?Es wird sich automatisch auf Scroll verstecken ... Deshalb habe ich versucht, eine Lösung zu finden, um meinen HERO-IMAGE Inhalt vom Springen abzuhalten ... – KINKWILDE

+0

KINKWILDE, du musst deine Fragen besser klären. Ihr Titel vermittelt Ihre Frage nicht genau und Ihre Erläuterungen sind vage und verwirrend. – nmg49

Verwandte Themen