Eu tenho um elemento e preciso de sua largura sem (!) Barra de rolagem vertical.
O Firebug me diz que a largura do corpo é 1280 px.
Qualquer um deles funciona bem no Firefox:
console.log($('.element').outerWidth() );
console.log($('.element').outerWidth(true) );
$detour = $('.child-of-element').offsetParent();
console.log( $detour.innerWidth() );
Todos eles retornam 1263 px , que é o valor que procuro.
No entanto, todos os outros navegadores me dão 1280 px .
Existe uma maneira de cross-browser para obter uma largura de tela inteira sem (!) Barra de rolagem vertical?
jquery
cross-browser
width
freqüente
fonte
fonte
width: 100%;
Respostas:
.prop("clientWidth")
e.prop("scrollWidth")
em JavaScript :
PS: Observe que, para usar de
scrollWidth
forma confiável, seu elemento não deve transbordar horizontalmentejsBin demo
Você também pode usar,
.innerWidth()
mas isso funcionará apenas nobody
elementofonte
body
estouro ou não. se transbordar, restrinja-o.Você pode usar o vanilla javascript simplesmente escrevendo:
Você também pode usar isso para obter a largura do documento da seguinte maneira:
Fonte: MDN
Você também pode obter a largura da janela inteira, incluindo a barra de rolagem, da seguinte maneira:
No entanto, isso não é compatível com todos os navegadores, portanto, como alternativa, você pode usar
docWidth
como descrito acima e adicionar a largura da barra de rolagem .Fonte: MDN
fonte
document.documentElement.clientWidth
me ajudou muito, pois funciona para altura também (innerHeight
pode ser menor se o corpo não preencher a página, etc.) e obtém o valor sem a barra de rolagem.Aqui estão alguns exemplos que presumem
$element
ser umjQuery
elemento:fonte
Experimente isto:
Você pode obter a largura da tela com e sem a barra de rolagem usando este código. Aqui, alterei o valor de estouro de
body
e obtive a largura com e sem barra de rolagem.fonte
O lugar mais seguro para obter a largura e altura corretas sem as barras de rolagem é no elemento HTML. Experimente isto:
O suporte do navegador é bastante decente, com o IE 9 e superior suportando isso. Para OLD IE, use um dos muitos substitutos mencionados aqui.
fonte
Eu experimentei um problema semelhante e isso
width:100%;
resolveu para mim. Cheguei a essa solução depois de tentar uma resposta a essa pergunta e perceber que a própria natureza de um<iframe>
tornará essas ferramentas de medição javascript imprecisas sem usar alguma função complexa. Fazer 100% é uma maneira simples de cuidar disso em um iframe. Não sei sobre o seu problema, pois não tenho certeza de quais elementos HTML você está manipulando.fonte
Nenhuma dessas soluções funcionou para mim, no entanto, fui capaz de consertar pegando a largura e subtraindo a largura da barra de rolagem . Não tenho certeza de como isso é compatível com vários navegadores.
fonte
Aqui está o que eu uso
fonte