2016-03-25 7 views
2

Ich versuche den folgenden Code, aber es funktioniert nicht. Logischerweise sollte es in Ordnung sein, aber kann mir jemand sagen, was ich hier vermisse? Das Ziel ist, die Schriftgröße des (h1) -Tags sollte sich automatisch an die Höhe des übergeordneten Elements anpassen.Kind Element Schriftgröße dynamisch nach Elternhöhe anpassen

Code Pen Link

HTML

<div class="product-title"> 
    <h1>Some Title which should not cross parent height and adjust font-size dynamically</h1> 
</div> 

CSS

.product-title{ 
    height: 200px; 
    width: 200px; 
} 

JS

function adjustFontSize() { 
     $('#h1').each(function() { 
     var child = $(this); 
     var parent = child.parent(); 

     child.css('font-size', '18'); //set max default font size 
     while (child.height() > parent.height() && parseInt(child.css('font-size')) > 9) { //check div height condition 
       child.css('font-size', (parseInt(child.css('font-size')) - 1) + "px"); //decrease font size accordingly 
     } 
     }); 
     } 
+0

statt '$ ('# h1'). Each (...' sollte '$ ('h1' sein). Each (...' –

+0

kein luck..tried mit, dass .. funktioniert nicht –

+0

Ich denke, dein Problem ist, dass die Schriftgröße in ems ist. Also, wenn Sie die Schriftgröße auswerten, wird es nie größer als 9 sein, denn 9em ist wirklich groß. Sie betreten nie Ihre Schleife als ein Ergebnis Ich werde eine Antwort mit einer Lösung posten – mhodges

Antwort

1

Okay, los gehts. Dies sollte das sein, wonach Sie suchen. Lass es mich wissen, wenn es nicht für dich funktioniert!

$(window).load(function() { 
    function adjustFontSize() { 

    $('.product-title h1').each(function() { 

     var child = $(this); 
     var parent = child.parent(); 
     var fontSize = 3; 
     child.css("font-size", fontSize + "em"); 
     while (child.height() > parent.height() && fontSize > .75) { //check div height condition 
     fontSize -= .05; 
     child.css('font-size', fontSize + "em"); //decrease font size accordingly 
     } 

    }); 

    } 
    adjustFontSize(); 
}); 
+1

oh mann..das funktioniert so perfekt..wunderbare lösung ... vielen dank für diese konkrete lösung.ich kann Verwende deine Lösung jetzt in meinen Live-Projekten. Prost Man ... –

+0

Eine Sache zu beachten ist, dass, wenn die Eltern verkleinert und macht den Text kleiner, und dann wieder größer, Ihr child.height()> parent.height() wird falsch sein, so wird es nicht die Größe des Textes sichern. Ich habe meine Lösung aktualisiert, um dieses kleine Problem zu beheben – mhodges

+1

vielen Dank noch einmal Mann..now, ich habe eine Lösung für Kind Text überfüllt sowohl die Breite und Höhe der Eltern ... toller Job..cheers –