Dapatkah saya menggunakan JavaScript untuk memeriksa (terlepas dari scrollbar) jika elemen HTML telah meluap kontennya? Misalnya, div panjang dengan ukuran tetap kecil, properti overflow disetel ke terlihat, dan tidak ada bilah gulir pada elemen.
javascript
html
css
Barett
sumber
sumber
clientWidth
danscrollWidth
berbeda dengan 1px.Coba bandingkan
element.scrollHeight
/element.scrollWidth
denganelement.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
sumber
Saya rasa jawaban ini tidak sempurna. Terkadang scrollWidth / clientWidth / offsetWidth sama meskipun teksnya meluap.
Ini berfungsi dengan baik di Chrome, tetapi tidak di IE dan Firefox.
Akhirnya, saya mencoba jawaban ini: deteksi elipsis luapan teks HTML
Ini sempurna dan bekerja dengan baik di mana saja. Jadi saya memilih ini, mungkin Anda bisa mencoba, Anda tidak akan mengecewakan.
sumber
Cara lain adalah membandingkan lebar elemen dengan lebar induknya:
function checkOverflow(elem) { const elemWidth = elem.getBoundingClientRect().width const parentWidth = elem.parentElement.getBoundingClientRect().width return elemWidth > parentWidth }
sumber
Dengan jQuery, Anda dapat melakukan:
if ( $(".inner-element").prop('scrollHeight') > $(".inner-element").height() ) { console.log("element is overflowing"); } else { console.log("element is not overflowing"); }
Ubah ke
.prop('scrollWidth')
dan.width()
jika perlu.sumber
Ini adalah solusi javascript (dengan Mootools) yang akan mengurangi ukuran font agar sesuai dengan batasan 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 dari elHeader:
width:100%; font-size:40px; line-height:36px; font-family:Arial; text-align:center; max-height:36px; overflow:hidden;
Perhatikan bahwa pembungkus elHeader menyetel lebar elHeader.
sumber