Можно ли использовать JavaScript для проверки (независимо от полос прокрутки), если элемент HTML переполнил его содержимое? Например, длинный div с небольшим фиксированным размером, свойство переполнения, установленное на видимое, и никакие полосы прокрутки на элементе.
Определите, переполняется ли содержимое элемента HTML
Ответ 1
Как правило, вы можете сравнить client[Height|Width]
с scroll[Height|Width]
, чтобы обнаружить это... но значения будут одинаковыми при видимости переполнения. Итак, для этой процедуры необходимо учитывать следующее:
// 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;
}
Протестировано в FF3, FF40.0.2, IE6, Chrome 0.2.149.30.
Ответ 2
Попробуйте сравнить element.scrollHeight
/element.scrollWidth
с 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
Ответ 3
Я не думаю, что этот ответ прекрасен. Иногда scrollWidth/clientWidth/offsetWidth одинаковы, даже если текст переполнен.
Это хорошо работает в Chrome, но не в IE и Firefox.
Наконец, я попробовал этот ответ: Эллипсис HTML-переполнения
Он идеален и хорошо работает везде. Поэтому я выбираю это, возможно, вы можете попробовать, вы не разочаруете.
Ответ 4
С помощью jQuery вы можете сделать:
if ( $(".inner-element").prop('scrollHeight') > $(".inner-element").height() ) {
console.log("element is overflowing");
} else {
console.log("element is not overflowing");
}
Измените на .prop('scrollWidth')
и .width()
при необходимости.
Ответ 5
Это javascript-решение (с Mootools), которое уменьшит размер шрифта, чтобы он соответствовал границам 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');
}
CSS elHeader:
width:100%;
font-size:40px;
line-height:36px;
font-family:Arial;
text-align:center;
max-height:36px;
overflow:hidden;
Обратите внимание, что оболочка elHeader устанавливает ширину elHeader.