2010-10-25 8 views
1

J'ai besoin de calculer la largeur d'un div dans la fenêtre. Si j'utilise .css (width) sur mon div, il calcule juste la largeur complète.Calculer la largeur de div dans la fenêtre

Mon code actuel pour essayer de calculer:

var $Windowwidth = $(window).width(); 
var $lefty = $("#gallerytop"); 
var $GalleryTopWidth = parseInt($lefty.css('width')); 
$("#footer").click(function() { 
    alert($Windowwidth) 
    alert($GalleryTopWidth) 
}); 

Ce que je voudrais accomplir est la suivante:

J'ai une div couvrant toute la largeur de ma fenêtre (100%, et au-delà). J'ai 2 boutons pour animer ce div à gauche et à droite par 241px. Je serais en mesure de mettre un arrêt si mon div mobile a atteint un certain point dans ma fenêtre d'affichage (disons, par exemple, la fin droite de la div, en cliquant sur le bouton droit, est maintenant au milieu de ma fenêtre/fenêtre , maintenant je ne veux plus que je puisse cliquer sur le bon bouton).

Quelqu'un peut-il aider?

Merci!

Répondre

1
var $aantal = $("#gallerytop img").size() * $("#gallerytop img:first").width(); 
var $viewportsize = parseInt($(window).width()/$("#gallerytop img:first").width()); 
var $overflow = $("#gallerytop img").size() - $viewportsize; 
var $clickcount = 0; 
var $extrabijtellen = 0; 
var $isScrolling = false; 
var $extrabijtellendynamisch = $(window).width()/10; 

$("#next").click(function() { 
    var $lefty = $("#gallerytop, #gallerybottom"); 
    if ($clickcount < $overflow && !$isScrolling) { 
     $isScrolling = true; 
     if ($clickcount == ($overflow - 1)) { 
      $extrabijtellen = $extrabijtellendynamisch; 
     } 
     else { 
      $extrabijtellen = 0; 
     } 
     $lefty.stop().animate({ 
      left: (parseInt($lefty.css('left'), 10) - ($("#gallerytop img:first").width() + $extrabijtellen)) 
     }, "normal", function() { $isScrolling = false; }); 
     $clickcount++; 
    } 
}); 

$('#prev').click(function() { 
    var $righty = $("#gallerytop, #gallerybottom"); 
    if ($clickcount > 0 && !$isScrolling) { 
     $isScrolling = true; 
     if ($clickcount == ($overflow - 1)) { 
      $extrabijtellen = $extrabijtellendynamisch; 
     } 
     else { 
      $extrabijtellen = 0; 
     } 
     $righty.stop().animate({ 
      marginLeft: (parseInt($righty.css('marginLeft'), 10) + ($("#gallerytop img:first").width() + $extrabijtellen)) 
     }, "normal", function() { $isScrolling = false; }); 
     $clickcount--; 
    } 
}); 

if (($aantal) > $viewportsize) { 
    $("#prev, #next").css("display", "block"); 
} 
0

J'utiliserais probablement la position gauche ($(....).offset().left) de ma div pour contrôler si elle atteint ce point dans ma fenêtre.

+0

Cela ne contribuerait pas à ma situation comme div en mouvement est une largeur variable (construction dynamique vers le haut) .. – Mathijs

+0

Je ne comprends pas vraiment, la couche peut avoir tout largeur, sa position à gauche sera le même , n'est-ce pas? – netadictos

+0

Oui, c'est un peu difficile à expliquer. En tout cas, je l'ai trouvé moi-même. Assez compliqué! J'ai posté la réponse ci-dessous. Merci quand même! – Mathijs

Questions connexes