Antworten:
Normalerweise können Sie die client[Height|Width]
mit vergleichen scroll[Height|Width]
, um dies zu erkennen ... aber die Werte sind dieselben, wenn ein Überlauf sichtbar ist. Eine Erkennungsroutine muss dies berücksichtigen:
// 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;
}
Getestet in FF3, FF40.0.2, IE6, Chrome 0.2.149.30.
clientWidth
und scrollWidth
von 1px unterscheidet.
Versuchen Sie, element.scrollHeight
/ element.scrollWidth
mit element.offsetHeight
/ zu vergleichenelement.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
Ich denke nicht, dass diese Antwort perfekt ist. Manchmal sind die scrollWidth / clientWidth / offsetWidth gleich, obwohl der Text überläuft.
Dies funktioniert gut in Chrome, aber nicht in IE und Firefox.
Zuletzt habe ich diese Antwort ausprobiert: Erkennung von HTML-Textüberlauf-Auslassungspunkten
Es ist perfekt und funktioniert überall gut. Also wähle ich das, vielleicht kannst du es versuchen, du wirst nicht enttäuschen.
Eine andere Möglichkeit besteht darin, die Elementbreite mit der Breite des übergeordneten Elements zu vergleichen:
function checkOverflow(elem) {
const elemWidth = elem.getBoundingClientRect().width
const parentWidth = elem.parentElement.getBoundingClientRect().width
return elemWidth > parentWidth
}
Dies ist eine Javascript-Lösung (mit Mootools), die die Schriftgröße reduziert, um sie an die Grenzen von elHeader anzupassen.
while (elHeader.clientWidth < elHeader.scrollWidth || elHeader.clientHeight < elHeader.scrollHeight) {
var f = parseInt(elHeader.getStyle('font-size'), 10);
f--;
elHeader.setStyle('font-size', f + 'px');
}
Das CSS von elHeader:
width:100%;
font-size:40px;
line-height:36px;
font-family:Arial;
text-align:center;
max-height:36px;
overflow:hidden;
Beachten Sie, dass der Wrapper von elHeader die Breite von elHeader festlegt.