Eu tenho uma div com uma altura fixa e overflow:hidden;
Quero verificar com jQuery se a div tem elementos que estão excedendo a altura fixa da div. Como posso fazer isso?
javascript
jquery
html
Justin Meltzer
fonte
fonte
Respostas:
Na verdade, você não precisa de nenhum jQuery para verificar se há um estouro ou não. Usando
element.offsetHeight
,element.offsetWidth
,element.scrollHeight
eelement.scrollWidth
você pode determinar se o seu elemento tem maior índice do que o seu tamanho:Veja o exemplo em ação: Fiddle
Mas se você quiser saber qual elemento dentro do seu elemento é visível ou não, precisará fazer mais cálculos. Existem três estados para um elemento filho em termos de visibilidade:
Se você deseja contar itens semi-visíveis, seria o script necessário:
E se você não quiser contar semi-visível, pode calcular com uma pequena diferença.
fonte
<p>
é um elemento de nível de bloco e ocupa 100% de largura. Se você quiser tentar isso com uma quantidade de texto dentro de p, basta fazerp{display:inline}
. Dessa forma, o texto interno determina a largura dep
.Eu tinha a mesma pergunta que o OP, e nenhuma dessas respostas atendeu às minhas necessidades. Eu precisava de uma condição simples, para uma necessidade simples.
Aqui está a minha resposta:
Além disso, você pode mudar
scrollWidth
porscrollHeight
se você precisa testar a ambos os casos.fonte
Então, eu usei a biblioteca jquery transbordante: https://github.com/kevinmarx/overflowing
Depois de instalar a biblioteca, se você deseja atribuir a classe
overflowing
a todos os elementos que estão excedendo, basta executar:Isso dará à classe
overflowing
, como<div class="targetElement overflowing">
todos os elementos que estão transbordando. Você pode adicionar isso a algum manipulador de eventos (clique, mouseover) ou outra função que executará o código acima para que ele seja atualizado dinamicamente.fonte
Parcialmente baseado na resposta de Mohsen (a primeira condição adicionada cobre o caso em que a criança está oculta diante dos pais):
Então faça:
fonte
Um método é verificar o scrollTop contra ele mesmo. Atribua ao conteúdo um valor de rolagem maior que seu tamanho e verifique se o scrollTop é 0 ou não (se não for 0, o excesso está excedido).
http://jsfiddle.net/ukvBf/
fonte
Em inglês simples: obtenha o elemento pai. Verifique a altura e salve esse valor. Em seguida, percorra todos os elementos filhos e verifique suas alturas individuais.
Isso está sujo, mas você pode ter a idéia básica: http://jsfiddle.net/VgDgz/
fonte
Aqui está uma solução jQuery pura, mas é bastante confusa:
fonte
Esta é a solução jQuery que funcionou para mim.
offsetWidth
etc não funcionou.Se isso não funcionar, verifique se o pai dos elementos tem a largura desejada (pessoalmente, eu tive que usar
parent().parent())
.position
É relativo ao pai. Também incluíextra_width
porque meus elementos ("tags") contêm imagens que levam pouco tempo para serem usadas . load, mas durante a chamada de função eles têm largura zero, estragando o cálculo.Para contornar isso, eu uso o seguinte código de chamada:Espero que isto ajude.
fonte
Corrigi isso adicionando outra div na que estourou. Então você compara as alturas dos 2 divs.
e os js
Parece mais fácil ...
fonte