Відповіді:
Зазвичай ви можете порівняти 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.
clientWidth
і scrollWidth
відрізняється від 1px.
Спробуйте порівняти 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/uk/DOM/element. scrollWidth
http://developer.mozilla.org/en/DOM/element.scrollHeight
Я не думаю, що ця відповідь є ідеальною. Іноді ширина scrollWidth / clientWidth / offsetWidth однакова, навіть якщо текст переповнений.
Це добре працює в Chrome, але не в IE та Firefox.
Нарешті я спробував цю відповідь: виявлення еліпсису переповнення тексту в HTML
Це ідеально і добре працює в будь-якому місці. Тому я вибираю це, можливо, ви можете спробувати, ви не розчаруєте.
Інший спосіб - порівняти ширину елемента з шириною його батьків:
function checkOverflow(elem) {
const elemWidth = elem.getBoundingClientRect().width
const parentWidth = elem.parentElement.getBoundingClientRect().width
return elemWidth > parentWidth
}
Це рішення 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.