2016-10-20 2 views
0

Ich möchte mein div nach links 5 mal gehen und danach zurückkommen. zu tun, dass ich das Skript haben:Wenn Rand links == Prozent

Javascrpit:

$(document).ready(function() { 
    if(document.getElementById('twitter').style.marginLeft == "-278%") 
    { 
    (function($){ 
     setInterval(function(){ 

     $('#twitter').animate({ 
     marginLeft: '+=278%', 
     },3000); 

     }, 5000); 

    })(jQuery); 
    }else{ 
    (function($){ 
     setInterval(function(){ 
     $('#twitter').animate({ 
      marginLeft: '-=55.6%', 
     },2000); 

     }, 5000); 
    })(jQuery); 
    } 
}); 

ich ein funktionierendes Script mit px haben mit:

if($('#twitter').css("marginLeft")==('-5300px')) 

aber ich brauche Prozent reagieren zu können, kann mir jemand helfen Bitte ?

EDIT:

Die Animation funktioniert, nur die Bedingung für die, wenn nicht funktioniert.

+0

oups leider falsches Wort, reaktions * –

+0

Ränder sind nicht in% Alter. Wenn Sie% age (oder etwas anderes, zB em, vh) verwenden, werden sie in px konvertiert. Sie könnten zurück in ein% alter in Ihrem js konvertieren, indem Sie den aktuellen Rand und die Breite und ein kleines calc. –

+0

aber wenn ich "console.log (document.getElementById ('twitter'). Style.marginLeft)" es gibt mir Prozent zurück. Ich werde etwas mit Ihrem Calc versuchen, aber ich habe eine sehr seltsame div (Breite: 1000%) –

Antwort

0

Verwenden position: absolute und left Attribut statt margin-left

<div id='twitter'> 
    hello 
</div> 

#twitter{ 
position: absolute; 
left: -50%; 
} 
+0

Position: absolute Pause mein CSS und nicht das Problem lösen, und das Problem ist nicht, dass das div nicht gehen wird, die Problem ist, dass sie nie wieder nach rechts geht, nur das if (marginLeft == "-278%") funktioniert nicht. –

+0

OK, also werden wir berechnen, die Breite muss margin-left sein. 'var parentWidth = $ ('# twitter'). Width ($ ('# twitter'). Parent(). Width());' und die Zahl wird margin ist 'var marginLeftNumber = - 2.78 * parentWidth' und Endlich '$ ('# twitter'). animate ({marginLeft: marginLeftNumber + '',}, 2000);' –

+0

Ich mag die Art, wie du das gemacht hast, nur ein paar Fehler für die Annimierung, aber ich habe es geändert und jetzt ist es arbeiten .... aber das funktioniert immer noch nicht. Wenn ich logge den Rand von Twitter und den Rand meiner Haltebedingung zur gleichen Zeit (das ist –

Verwandte Themen