Je dois faire bouger plusieurs divs de droite à gauche sur l'écran et arrêter quand il arrive au bord. J'ai récemment joué avec jQuery, et il me semble que ce que je veux peut être fait en utilisant ça. Est-ce que quelqu'un a ou sait où je peux trouver un exemple de ceci?Comment puis-je utiliser jQuery pour déplacer un div à travers l'écran?
Répondre
Vous souhaiterez vérifier la fonction animée jQuery(). La manière standard de le faire est de positionner un élément absolument et ensuite d'animer la propriété CSS "left" ou "right". Un moyen également populaire est d'augmenter/diminuer la marge de gauche ou de droite. Maintenant, cela étant dit, vous devez être conscient de la perte de performance grave pour tout type d'animation qui dure plus d'une seconde ou deux. Javascript n'était tout simplement pas destiné à gérer des animations longues, soutenues et lentes. Cela a à voir avec la façon dont l'élément DOM est redessiné et recalculé pour chaque "frame" de l'animation. Si vous effectuez une animation de largeur de page qui dure plus de quelques secondes, attendez-vous à voir votre processeur augmenter de 50% ou plus. Si vous êtes sur IE6, préparez-vous à voir votre ordinateur s'enflammer spontanément dans une boule enflammée d'incompétence du navigateur.
Pour lire à ce sujet, consultez this thread (à partir de mon tout premier post Stackoverflow pas moins)!
est ici un lien vers les docs jQuery pour l'Animate() fonction: http://docs.jquery.com/Effects/animate
Dans jQuery 1.2 et plus récente, vous n'avez plus à placer l'élément tout à fait; vous pouvez utiliser le positionnement relatif normal et utiliser + = ou - = pour ajouter ou soustraire des propriétés, par ex.
$("#startAnimation").click(function(){
$(".toBeAnimated").animate({
marginLeft: "+=250px",
}, 1000);
});
Et pour faire écho le gars qui a répondu d'abord les conseils: Javascript est pas performant. N'utilisez pas trop les animations, ou ne vous attendez pas à ce que les choses tournent bien et rapidement sur votre PC haute performance sur Chrome pour qu'il soit esthétique sur un PC tournant sous IE. Testez-le, et assurez-vous qu'il se dégrade bien!
un coup d'oeil à this demo - use jquery animation effect for moving a div
Ici je l'ai fait bacs complets pour la requête ci-dessus. ci-dessous est le lien de démonstration, je pense que cela peut vous aider à
Démo:http://codebins.com/bin/4ldqp9b/1
HTML:
<div id="edge">
<div class="box" style="top:20; background:#f8a2a4;">
</div>
<div class="box" style="top:70; background:#a2f8a4;">
</div>
<div class="box" style="top:120; background:#5599fd;">
</div>
</div>
<br/>
<input type="button" id="btnAnimate" name="btnAnimate" value="Animate" />
CSS:
body{
background:#ffffef;
}
#edge{
width:500px;
height:200px;
border:1px solid #3377af;
padding:5px;
}
.box{
position:absolute;
left:10;
width:40px;
height:40px;
border:1px solid #a82244;
}
JQuery:
$(function() {
$("#btnAnimate").click(function() {
var move = "";
if ($(".box:eq(0)").css('left') == "10px") {
move = "+=" + ($("#edge").width() - 35);
} else {
move = "-=" + ($("#edge").width() - 35);
}
$(".box").animate({
left: move
}, 500, function() {
if ($(".box:eq(0)").css('left') == "475px") {
$(this).css('background', '#afa799');
} else {
$(".box:eq(0)").css('background', '#f8a2a4');
$(".box:eq(1)").css('background', '#a2f8a4');
$(".box:eq(2)").css('background', '#5599fd');
}
});
});
});
Il semble y avoir une erreur sur Chrome –
Juste une petite fonction rapide, je tambourinait qui se déplace DIVs de leur place actuelle à un point cible, une étape de pixel à la fois. J'ai essayé de commenter le mieux possible, mais la partie qui vous intéresse est l'exemple 1 et l'exemple 2, juste après [$ (function() {// jquery document.ready]. codez-le, puis quittez l'intervalle si les conditions sont remplies.
D'abord le Demo: http://jsfiddle.net/pnYWY/
D'abord les DIVs ...
<style>
.moveDiv {
position:absolute;
left:20px;
top:20px;
width:10px;
height:10px;
background-color:#ccc;
}
.moveDivB {
position:absolute;
left:20px;
top:20px;
width:10px;
height:10px;
background-color:#ccc;
}
</style>
<div class="moveDiv"></div>
<div class="moveDivB"></div>
exemple 1) Lancer
// first animation (fire right away)
var myVar = setInterval(function(){
$(function() { // jquery document.ready
// returns true if it just took a step
// returns false if the div has arrived
if(!move_div_step(55,25,'.moveDiv'))
{
// arrived...
console.log('arrived');
clearInterval(myVar);
}
});
},50); // set speed here in ms for your delay
exemple 2) Départ différé
// pause and then fire an animation..
setTimeout(function(){
var myVarB = setInterval(function(){
$(function() { // jquery document.ready
// returns true if it just took a step
// returns false if the div has arrived
if(!move_div_step(25,55,'.moveDivB'))
{
// arrived...
console.log('arrived');
clearInterval(myVarB);
}
});
},50); // set speed here in ms for your delay
},5000);// set speed here for delay before firing
maintenant la fonction:
function move_div_step(xx,yy,target) // takes one pixel step toward target
{
// using a line algorithm to move a div one step toward a given coordinate.
var div_target = $(target);
// get current x and current y
var x = div_target.position().left; // offset is relative to document; position() is relative to parent;
var y = div_target.position().top;
// if x and y are = to xx and yy (destination), then div has arrived at it's destination.
if(x == xx && y == yy)
return false;
// find the distances travelled
var dx = xx - x;
var dy = yy - y;
// preventing time travel
if(dx < 0) dx *= -1;
if(dy < 0) dy *= -1;
// determine speed of pixel travel...
var sx=1, sy=1;
if(dx > dy) sy = dy/dx;
else if(dy > dx) sx = dx/dy;
// find our one...
if(sx == sy) // both are one..
{
if(x <= xx) // are we going forwards?
{
x++; y++;
}
else // .. we are going backwards.
{
x--; y--;
}
}
else if(sx > sy) // x is the 1
{
if(x <= xx) // are we going forwards..?
x++;
else // or backwards?
x--;
y += sy;
}
else if(sy > sx) // y is the 1 (eg: for every 1 pixel step in the y dir, we take 0.xxx step in the x
{
if(y <= yy) // going forwards?
y++;
else // .. or backwards?
y--;
x += sx;
}
// move the div
div_target.css("left", x);
div_target.css("top", y);
return true;
} // END :: function move_div_step(xx,yy,target)
Utilisez jQuery
html
<div id="b"> </div>
css
div#b {
position: fixed;
top:40px;
left:0;
width: 40px;
height: 40px;
background: url(http://www.wiredforwords.com/IMAGES/FlyingBee.gif) 0 0 no-repeat;
}
scénario
var b = function($b,speed){
$b.animate({
"left": "50%"
}, speed);
};
$(function(){
b($("#b"), 5000);
});
voir jsfiddle http://jsfiddle.net/vishnurajv/Q4Jsh/
- 1. Comment déplacer div avec la souris en utilisant jquery?
- 2. Comment obtenir les ID div dans un div à Jquery?
- 3. Comment utiliser Nant/TeamCity pour déployer à travers DMZ?
- 4. Comment autoriser l'utilisateur à déplacer un div positionné de façon absolue?
- 5. Utiliser PlotKit (javascript) à travers C#
- 6. obtenir tableau JSON à travers javascript jquery
- 7. Comment utiliser dijit.TooltipDialog sur un div?
- 8. Utiliser RJS pour remplacer Div
- 9. Comment précharger un combobox div dans jquery
- 10. Comment utiliser jquery pour glisser/déposer
- 11. correctement boucle à travers JSON avec jQuery
- 12. déplacer un curseur de style: déplacer
- 13. Comment estomper un div avec jQuery?
- 14. Comment déplacer un élément avec un élément de script sans ré-exécuter un script avec jQuery?
- 15. jQuery FadeIn/FadeOut, boucle à travers un tableau
- 16. Boucle JQuery à travers un tableau bidimensionnel d'éléments
- 17. jQuery - comment utiliser stopPropagation()
- 18. en utilisant JS pour verrouiller un div
- 19. Jquery application de css pour charger div
- 20. Squeak - Comment déplacer un cercle?
- 21. Comment utiliser jQuery pour masquer du contenu dans une balise DIV
- 22. Comment utiliser jQuery pour récupérer le contenu d'une page et le rendre dans une div?
- 23. jQuery - Comment placer un DIV sur un overlay?
- 24. Comment utiliser jQuery pour parcourir un nombre non spécifié de cases à cocher?
- 25. JQuery - Comment sélectionner spécifique DIV
- 26. HTML comment passer à travers des colonnes
- 27. En passant un tableau associatif à travers AJAX pour PHP
- 28. vertical align div dans un div utilisant jquery?
- 29. Passer un drapeau gcc à travers makefile
- 30. comment passez-vous à travers un tableau dans fortran?
Une remarque supplémentaire: les animations simultanées multiplient les problèmes de performance. –
Si le div est positionné fixe, un navigateur plus intelligent n'a pas besoin de redessiner tout l'arbre DOM. –
Une résolution ou absolution ne semble pas avoir d'importance pour FF3 ou Safari 3. Si le navigateur redessine l'arbre entier ou pas, je ne suis pas sûr. De toute façon, mon CPU saute encore à peu près la même chose. –