Szukałem tego w pracy i podobała mi się odpowiedź tnt-roxa, ale nie mogłem nie zauważyć, że ma dodatkowe obciążenie, które można wyciąć.
document.body.setScaledFont = function(){
this.style.fontSize = (this.offsetWidth*0.35)+'%';
return this;
}
document.body.setScaledFont();
Wycinanie narzut pozwala uruchomić trochę szybciej jeśli dodasz go do onresize imprezy.
Jeśli szukasz tylko mieć czcionkę wewnątrz określonego elementu zestawu do zmiany rozmiaru w celu dopasowania, można również zrobić coś jak na poniższym
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();
};
Właśnie odpowiedź zauważył Nicolaas' również miał trochę dodatkowych kosztów. Sprzątałem to trochę. Z perspektywy wydajności nie jestem fanem używania pętli while i powolnego przesuwania w dół, dopóki nie znajdziesz takiego, który pasuje.
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");
Oto przykład mojego wcześniejszego kodu przy użyciu 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();
});
Dzięki. Tutaj jest dla każdego, kto chciałby to zobaczyć: http://jsfiddle.net/xVB3t/2/ – Diego
dziękuję bardzo, że podzielasz rozwiązany problem, który jest naprawdę pomocny i jak powinno się robić +1! – Trufa
możliwy duplikat [automatycznego rozmiaru tekstu dynamicznego w celu wypełnienia kontenera o stałym rozmiarze] (http://stackoverflow.com/questions/687998/auto-size-dynamic-text-to-fill-fixed-size-container) –