2010-10-25 1 views
1

Мне нужно рассчитать ширину div в окне просмотра. Если я использую .css (width) для моего div, он просто вычисляет полную ширину.Рассчитать ширину div в окне просмотра

Мой текущий код пытается вычислить:

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

Что я хотел бы выполнить это следующим образом:

У меня есть один DIV, покрывающую всю ширину моего окна (100%, и за его пределами). У меня есть 2 кнопки для анимации этого div влево и вправо на 241px. Я бы мог установить остановку, если мой движущийся div достиг определенной точки в моем окне просмотра (скажем, например, правый конец div, щелкнув правой кнопкой мыши, теперь находится посередине моего окна просмотра/окна , теперь я больше не хочу, чтобы это можно было щелкнуть правой кнопкой).

Может ли кто-нибудь помочь?

Спасибо!

ответ

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

Я бы, вероятно, использовал левую позицию ($(....).offset().left) моего div для управления, если он достигнет этой точки в моем окне просмотра.

+0

Это не помог бы в моей ситуации как двигающаяся DIV имеет переменную ширину (динамическое накопление) .. – Mathijs

+0

я не очень понимаю, слой может иметь любую ширину, его левое положение будет таким же , не так ли? – netadictos

+0

Да, это немного сложно объяснить. Во всяком случае, я нашел его сам. Довольно сложно! Я опубликовал ответ ниже. Спасибо, в любом случае! – Mathijs