Jak znaleźć aktualną szerokość <div>
w sposób zgodny z wieloma przeglądarkami bez korzystania z biblioteki takiej jak jQuery?
javascript
html
Joda Maki
źródło
źródło
Odpowiedzi:
źródło
cientWidth
, choć nie znam prawdziwej różnicy.offsetWidth
obejmuje szerokość ramki,clientWidth
nie ma.display: none
lub nie jest częścią dokumentu, zawsze będzie miała zerową wysokość odsunięcia.Możesz użyć
clientWidth
luboffsetWidth
odniesienia do sieci dla programistów MozillaTo byłoby jak:
lub z szerokością ramek:
źródło
Wszystkie odpowiedzi są prawidłowe, ale nadal chcę podać inne alternatywy, które mogą działać.
Jeśli szukasz przypisanej szerokości (ignorując wypełnienie, margines itp.), Możesz użyć.
getComputedStyle pozwala na dostęp do wszystkich stylów tego elementu. Na przykład: padding, paddingLeft, margin, border-top-left-radius i tak dalej.
źródło
Możesz także przeszukiwać DOM za pomocą ClassName. Na przykład:
To zwróci tablicę. Jeśli interesuje Cię jedna konkretna nieruchomość. Na przykład:
divWidth
będzie teraz równa szerokości pierwszego elementu w tablicy div.źródło
W rzeczywistości nie musisz używać
document.getElementById("mydiv")
.Możesz po prostu użyć identyfikatora div, takiego jak:
var w = mydiv.clientWidth;
lub
var w = mydiv.offsetWidth;
itp.
źródło
Inną opcją jest użycie funkcji getBoundingClientRect. Należy pamiętać, że getBoundingClientRect zwróci pusty prostokąt, jeśli wyświetlany element ma wartość „none”.
źródło
wywołaj metodę poniżej na div lub body tag onclick = "show (event);" funkcja pokaż (zdarzenie) {
źródło
Prawidłowy sposób uzyskania obliczonego stylu czeka na wyrenderowanie strony. Można to zrobić w następujący sposób. Zwróć uwagę na czas oczekiwania na uzyskanie
auto
wartości.Jeśli używasz tylko
możesz uzyskać
auto
wartości szerokości i wysokości, ponieważ przeglądarki nie renderują się do momentu pełnego załadowania.źródło