¿Puedo usar JavaScript para verificar (independientemente de las barras de desplazamiento) si un elemento HTML ha desbordado su contenido? Por ejemplo, un div largo con tamaño pequeño y fijo, la propiedad de desbordamiento configurada como visible y sin barras de desplazamiento en el elemento.Determinar si el contenido de un elemento HTML se desborda
Respuesta
Normalmente, se puede comparar la client[Height|Width]
con el fin scroll[Height|Width]
para detectar esto ... pero los valores serán los mismos cuando el desbordamiento sea visible. Por lo tanto, una rutina de detección debe dar cuenta de esto:
// Determines if the passed element is overflowing its bounds,
// either vertically or horizontally.
// Will temporarily modify the "overflow" style to detect this
// if necessary.
function checkOverflow(el)
{
var curOverflow = el.style.overflow;
if (!curOverflow || curOverflow === "visible")
el.style.overflow = "hidden";
var isOverflowing = el.clientWidth < el.scrollWidth
|| el.clientHeight < el.scrollHeight;
el.style.overflow = curOverflow;
return isOverflowing;
}
Probado en FF3, FF40.0.2, IE6, Chrome 0.2.149.30.
intente comparar element.scrollHeight/element.scrollWidth a element.offsetHeight/element.offsetWidth
http://developer.mozilla.org/en/DOM/element.offsetWidth
http://developer.mozilla.org/en/DOM/element.offsetHeight
http://developer.mozilla.org/en/DOM/element.scrollWidth
http://developer.mozilla.org/en/DOM/element.scrollHeight
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight –
No creo que esta respuesta sea perfecta. En ocasiones, scrollWidth/clientWidth/offsetWidth es el mismo aunque el texto esté desbordado.
Esto funciona bien en Chrome, pero no en IE y Firefox.
Por fin, he intentado esta respuesta: HTML text-overflow ellipsis detection
Es perfecto y funciona bien en cualquier lugar. Así que elijo esto, tal vez puedas intentarlo, no decepcionarás.
Sugiero eliminar o dejar de votar esta respuesta, ya que tiene algún defecto. Yo uso esto al principio, pero no puede funcionar perfecto con un estilo de CSS especial. – zjalex
Esta es una solución de javascript (con Mootools) que reducirá el tamaño de fuente para ajustarse a los límites de elHeader.
while (elHeader.clientWidth < elHeader.scrollWidth || elHeader.clientHeight < elHeader.scrollHeight) {
var f = parseInt(elHeader.getStyle('font-size'), 10);
f--;
elHeader.setStyle('font-size', f + 'px');
}
El CSS de elHeader:
width:100%;
font-size:40px;
line-height:36px;
font-family:Arial;
text-align:center;
max-height:36px;
overflow:hidden;
Nota de la envoltura elHeader define la anchura de elHeader.
- 1. Compruebe si se admite el elemento html
- 2. pestañas jquery-ui contenido desborda contenedor
- 3. Force div para desplazarse si el texto se desborda HTML/CSS?
- 4. Determinar si un elemento es un campo de formulario
- 5. ¿Cómo puedo determinar el tipo de elemento HTML en JavaScript?
- 6. ScrollViewer Altura para desplazarse automáticamente cuando el contenido se desborda en la página
- 7. ¿Se desborda BigInteger alguna vez?
- 8. Añadir contenido si el elemento no está vacío
- 9. se desborda en size_t adiciones
- 10. jQuery - ¿Cómo determinar si existe un elemento padre?
- 11. ¿Cómo se desborda un buffer de socket Linux?
- 12. ¿Cómo comprobar si el contenido de la cadena contiene HTML?
- 13. ¿Cómo puedo determinar las posiciones de "nuevas líneas" en el texto de un elemento HTML?
- 14. Si se cambia el contenido en CKEditor
- 15. jQuery: ¿Cómo puedo detectar si el html ha cambiado dentro de un elemento dado?
- 16. Determinar el contenido varchar en columnas nvarchar
- 17. Contenteditable DIV: cómo puedo determinar si el cursor está al principio o al final del contenido
- 18. HTML/CSS: ¿Por qué el cuerpo no se extiende a su contenido?
- 19. Cómo determinar si "html" o "body" se desplaza por la ventana
- 20. ¿Qué sucede realmente cuando se desborda un byte?
- 21. Cómo determinar si se hizo clic en el elemento secundario en Jquery
- 22. se desborda al multiplicar caracteres sin signo?
- 23. Determinar si un UIViewController se presenta de manera modal
- 24. ¿Cómo puedo determinar si se muestra un botón de retroceso?
- 25. Encontrar si el elemento existe en la página html completa
- 26. Xpath - Obtiene el elemento HTML si su clase contiene texto
- 27. Hacer elemento de posición fija, pero seguir la página de desplazamiento si el contenido es demasiado grande
- 28. Determinar el último elemento al que se hizo clic
- 29. Determinar si se ha producido un cambio de día
- 30. Determinar si se redirige stdout para un proceso de Python
gracias Shog9 ... la rutina de detección es, creo, lo que necesitaba, porque juego con desbordamiento (oculto/visible) –
Tengo una pregunta similar en http://stackoverflow.com/questions/2023787/how-to-determine-if-hidden-overflow-text-is-at-top-or-bottom-of Elemento en el que estoy tratando de descubrir qué partes del elemento contenedor tienen un desbordamiento oculto. – slolife
Me pregunto si esto dará un breve parpadeo ya que el estilo se cambia brevemente. –