Mam element i potrzebuję jego szerokości bez (!) Pionowego paska przewijania.
Firebug mówi mi, że szerokość ciała to 1280px.
Każda z tych opcji działa dobrze w przeglądarce Firefox:
console.log($('.element').outerWidth() );
console.log($('.element').outerWidth(true) );
$detour = $('.child-of-element').offsetParent();
console.log( $detour.innerWidth() );
Wszystkie zwracają 1263px , czyli wartość, której szukam.
Jednak wszystkie inne przeglądarki dają mi 1280px .
Czy istnieje sposób na uzyskanie szerokości pełnego ekranu bez (!) Pionowego paska przewijania?
jquery
cross-browser
width
częsty
źródło
źródło
width: 100%;
Odpowiedzi:
.prop("clientWidth")
i.prop("scrollWidth")
w JavaScript :
PS: Pamiętaj, że aby używać
scrollWidth
niezawodnie, element nie powinien przepełniać się w poziomiejsBin demo
Możesz również użyć,
.innerWidth()
ale to zadziała tylko nabody
elemencieźródło
body
przepełnia się, czy nie. jeśli się przepełnia, ogranicza go.Możesz użyć zwykłego javascript, pisząc po prostu:
Możesz również użyć tego, aby uzyskać szerokość dokumentu w następujący sposób:
Źródło: MDN
Możesz również uzyskać szerokość całego okna, w tym paska przewijania, w następujący sposób:
Jednak nie jest to obsługiwane przez wszystkie przeglądarki, więc jako rozwiązanie zastępcze możesz użyć
docWidth
powyższego i dodać szerokość paska przewijania .Źródło: MDN
źródło
document.documentElement.clientWidth
pomogło mi najbardziej, ponieważ działa również dla wysokości (innerHeight
może być mniejsza, jeśli treść nie wypełnia strony itp.) i pobiera wartość bez paska przewijania.Oto kilka przykładów, które zakładają, że
$element
jest tojQuery
element:źródło
Spróbuj tego :
Możesz uzyskać szerokość ekranu z paskiem przewijania i bez niego, używając tego kodu. Tutaj zmieniłem wartość przepełnienia
body
i otrzymałem szerokość z paskiem przewijania i bez niego.źródło
Najbezpieczniejszym miejscem do uzyskania prawidłowej szerokości i wysokości bez pasków przewijania jest element HTML. Spróbuj tego:
Obsługa przeglądarek jest całkiem przyzwoita, a IE 9 i nowsze to obsługują. W przypadku STAREGO IE użyj jednego z wielu wymienionych tutaj rozwiązań zastępczych.
źródło
Doświadczyłem podobnego problemu i
width:100%;
rozwiązałem go za siebie. Doszedłem do tego rozwiązania po wypróbowaniu odpowiedzi na to pytanie i zdaniu sobie sprawy, że sama natura<iframe>
narzędzi pomiarowych javascript będzie niedokładna bez użycia jakiejś złożonej funkcji. Wykonanie 100% to prosty sposób na zadbanie o to w elemencie iframe. Nie wiem o Twoim problemie, ponieważ nie jestem pewien, jakimi elementami HTML manipulujesz.źródło
Żadne z tych rozwiązań nie zadziałało, ale udało mi się to naprawić, biorąc szerokość i odejmując szerokość paska przewijania . Nie jestem pewien, jak jest to zgodne z różnymi przeglądarkami.
źródło
Oto czego używam
źródło