Ich schaute mir das für die Arbeit an und ich mochte die Antwort von tnt-rox, aber ich konnte nicht anders, als zu bemerken, dass es zusätzlichen Overhead hatte, der ausgeschnitten werden konnte.
document.body.setScaledFont = function(){
this.style.fontSize = (this.offsetWidth*0.35)+'%';
return this;
}
document.body.setScaledFont();
den Overhead Ausschneiden macht es ein wenig schneller laufen, wenn Sie es zu einem onresize Ereignis hinzuzufügen.
Wenn Sie nur suchen, um die Schriftart in einem bestimmten Element haben, eingestellt zu passen, um die Größe, können Sie auch auch so etwas wie die folgenden
window.onload = function(){
var scaledFont = function(el){
if(el.style !== undefined){
el.style.fontSize = (el.offsetWidth*0.35)+'%';
}
return el;
}
navs = document.querySelectorAll('.container>nav'),
i;
window.onresize = function(){
for(i in navs){
scaledFont(navs[i]);
}
};
window.onresize();
};
Ich habe gerade bemerkt nicolaas' Antwort tun hatte etwas zusätzlicher Overhead. Ich habe es ein bisschen aufgeräumt. Aus Performance-Sicht bin ich nicht wirklich ein Fan davon, eine While-Schleife zu verwenden und langsam die Größe nach unten zu bewegen, bis Sie eine passende gefunden haben.
function setPageHeaderFontSize(selector) {
var $ = jQuery;
$(selector).each(function(i, el) {
var text = $(el).text();
if(text.length) {
var span = $("<span>").css({
visibility: 'hidden',
width: '100%',
position: 'absolute',
'line-height': '300px',
top: 0,
left: 0,
overflow: 'visible',
display: 'table-cell'
}).text(text),
height = 301,
fontSize = 200;
$(el).append(span);
while(height > 300 && fontSize > 10) {
height = span.css("font-size", fontSize).height();
fontSize--;
}
span.remove();
$(el).css("font-size", fontSize+"px");
}
});
}
setPageHeaderFontSize("#MyDiv");
Und hier ist ein Beispiel für meine früheren Code mit Jquery.
$(function(){
var scaledFont = function(el){
if(el.style !== undefined){
el.style.fontSize = (el.offsetWidth*0.35)+'%';
}
return el;
};
$(window).resize(function(){
$('.container>nav').each(scaledFont);
}).resize();
});
Dank. Hier ist es für jeden, der es gerne sehen würde: http://jsfiddle.net/xVB3t/2/ – Diego
vielen Dank für das Teilen des gelösten Problems, das ist wirklich hilfreich und ist, wie Dinge getan werden sollten +1! – Trufa
mögliches Duplikat von [Automatischer dynamischer Text zum Füllen von Behältern mit fester Größe] (http://stackoverflow.com/questions/687998/auto-size-dynamic-text-to-fill-fixed-size-container) –