2011-01-24 18 views
181

Jak znaleźć bieżącą szerokość <div> w sposób zgodny z różnymi przeglądarkami bez przy użyciu biblioteki takiej jak jQuery?Jak znaleźć szerokość elementu div przy użyciu surowego kodu JavaScript?

+71

+1 dla "bez komentarza" jQuery :) – Zlatko

+1

Możliwy duplikat [ustaleń offsetWidth , clientWidth, scrollWidth i -Height, odpowiednio] (http://stackoverflow.com/questions/21064101/interstanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively) (który, istotnie, został zapytany znacznie później, ale nadal ma ** znacznie bardziej rozbudowaną odpowiedź **). – Keelan

Odpowiedz

267
document.getElementById("mydiv").offsetWidth 
+8

To lub "cientWidth", chociaż nie znam prawdziwej różnicy. – JCOC611

+96

'offsetWidth' zawiera szerokość obramowania,' clientWidth' nie. – lincolnk

+0

Gdy myDiv nie miał reguły CSS, ale w tagu zdefiniowano "width" i "height", offsetWidth zwrócił szerokość rodzica. Nie było problemu Właśnie dodałem regułę CSS i działało dobrze. – rob

1

Można również wyszukiwać za pomocą DOM className. Na przykład:

document.getElementsByClassName("myDiv") 

Spowoduje to wyświetlenie tablicy. Jeśli jest jedna szczególna właściwość jesteś zainteresowany. Na przykład:

var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth; 

divWidth teraz będzie równa szerokości pierwszego elementu div w swojej tablicy.

21

Można użyć clientWidth lub offsetWidthMozilla developer network reference

To byłoby jak:

document.getElementById("yourDiv").clientWidth; // returns number, like 728 

lub szerokości Granice:

document.getElementById("yourDiv").offsetWidth; // 728 + borders width 
0

rozmowy poniżej metody na znacznika div lub ciała onclick =” pokaż (wydarzenie); " Funkcja pokazu (event) {

 var x = event.clientX; 
     var y = event.clientY; 

     var ele = document.getElementById("tt"); 
     var width = ele.offsetWidth; 
     var height = ele.offsetHeight; 
     var half=(width/2); 
     if(x>half) 
     { 
      // alert('right click'); 
      gallery.next(); 
     } 
     else 
     { 
      // alert('left click'); 
      gallery.prev(); 
     } 


    } 
5

Wszystkie odpowiedzi są w porządku, ale nadal chce dać jakieś inne alternatywy, które mogą pracować.

Jeśli szukasz przypisanej szerokości (ignorowanie dopełnienia, marginesu itd.), Możesz użyć.

getComputedStyle(element).width; //returns value in px like "727.7px" 

getComputedStyle umożliwia dostęp do wszystkich stylów tych elementów. Na przykład: padding, paddingLeft, margin, border-top-left-round i tak dalej.

+0

To nie zadziała w IE 6-8. –

1

W rzeczywistości nie trzeba używać document.getElementById("mydiv").
można po prostu użyć identyfikator div, jak:

var w = mydiv.clientWidth;
lub
var w = mydiv.offsetWidth;
itp

Powiązane problemy