2017-12-08 2 views
0

Ich habe ein Bild, das am unteren Rand des Bildschirms ist und ich möchte seine Ränder basierend auf dem Wert eines Labels erhöhen (nach oben verschieben).Vergrößern des Bildrands basierend auf einem Label-Wert html

<img src="flag.png" 
style=" margin-left:50%; 
     position:absolute; 
     margin-top:50%; 
     bottom:0px; 
     "> 
<label id="countdown" > countdown: </label> 

Label ID = "Countdown" wird häufig aktualisiert.

Im Wesentlichen ist es möglich, das Bild nach oben zu verschieben (erhöhen Sie den Wert von "unten: 0;") basierend auf dem Wert der ID = "Countdown"?

+0

ja, müssen Sie eine JS zu halten, den Wert der Countdown Überprüfung jeder Zeit es ändert sich ... aber vor allem, fügen Sie Ihre JS hier, zeigen Sie, was Sie versucht haben –

Antwort

2

Ich bin mir nicht sicher, wie der Wert des Etiketts geändert wird. Es ist möglicherweise einfacher, das Flagstyling zu aktualisieren, wenn Sie den Etiketteninhalt aktualisieren.

Hier ist ein Beispiel für den Einstieg: https://jsfiddle.net/fztkjb89/

$(function() { 
    var initialCountDown = 100; 
    var countDown = initialCountDown; 


    setInterval(function(){ 
    // update label 
    $('#counter').text(countDown); 

    // update image style 
    $('img').css('bottom', initialCountDown-countDown); 

    // progress countdown 
    countDown--; 

    // reset counter 
    if (countDown == 0){ 
     countDown = initialCountDown; 
    } 
    }, 100); 
}); 

Wenn dies nicht möglich ist, überprüfen Sie meine andere Antwort aus.

+0

Danke für die Referenz, ich bin nach dem Ändern der CSS durch Lesen des Wertes der Bezeichnung. – Emily

+0

In diesem Fall sollte die Bindung an "DOMSubtreeModified" funktionieren. Siehe meine andere Antwort. – JasperZelf

0

Da Sie angegeben, dass Sie den Wert aus dem Etikett bekommen muss, ist hier ein Weg, es zu tun:

$(function(){ 
 
    $('label').bind('DOMSubtreeModified', function() { 
 
    \t var labelText = $('label').html(); 
 
    // use regex to get the number from the label string 
 
    var matches = labelText.match(/\d+$/); 
 
    // event fires with empty text and new contents 
 
    // only update the flag when we have labelText and a valid number 
 
    if(labelText && matches[0]){ 
 
    \t var countDownNumber = parseInt(matches[0]); 
 
     // I use 100 - countdown here, but 
 
     // you would propably have some calculation to determine the height of your flag here. 
 
     $('.flag').css('bottom', 100-countDownNumber) 
 
    } 
 
    }); 
 
    
 
    
 
    // separate code to update the label 
 
    var i = 100; 
 
    setInterval(function(){ 
 
    \t $('label').html('countdown: '+i); 
 
    i--; 
 
    if(i === 0){ 
 
    \t i= 100; 
 
    } 
 
    }, 100); 
 
    
 
})
.flag{ 
 
    width: 30px; 
 
    margin-left:50%; 
 
    position:absolute; 
 
    margin-top:50%; 
 
    bottom:0px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<img class="flag" src="http://www.thedayibecameapirate.com/wp-content/uploads/2012/05/Flag3.png"> 
 

 
<label id="countdown" > countdown: <span id="counter"></span></label>

Verwandte Themen