2015-11-23 8 views
5

私はjQueryを使ってテキストを適応させようとしています。ここではフィドルは次のとおりです。

http://jsfiddle.net/bq2ca7ch/

あなたはそれでいくつかのテキストをdiv要素を見ることができます。 divは指定された高さを持たず、高さはテキストの高さと上と下の10%のパディングから計算されます。

私はフォントサイズを応答したいと思っています。 divの元のサイズは124ピクセル、フォントサイズは50ピクセルだったので、この比率を維持したいとします。それは、私が知る必要があることを意味し、何パーセントが124から何パーセントですか。それは約40.32(50/124 * 100)です。つまり、font-sizeをvalueに設定する必要があります。コンテナの高さ/ 100 * 40.32と同じです。ここで私が使用したコードは次のとおりです。

function foo(){ 
var container = $(".box"); 
var containerHeight = $(".box").innerHeight().toFixed(); 
var neededSize = (containerHeight/100*40.32).toFixed(); 

container.css("font-size", neededSize + "px"); 
} 

$(window).resize(foo); 
$(document).ready(foo); 

これは動作しているようですが、ページのサイズを変更したときだけです。私がそれをリロードすると、いくつかの異なる値があります。同じ関数が、サイズ変更とオンロードで異なる値を与えるのはなぜですか?

+0

私にとってはうまく動作します。応答性の高いテキストが必要な場合は、pxの代わりにemを使用してみてください –

答えて

1

1. .theの機能は一度だけ実行すると、あなただけのリロード。

2.しかし、サイズを変更すると、関数は2回実行され、新しい高さに基づいて計算が再度行われるため、フォントサイズが変更されます。

function foo(jQuery){ 
    var container = $(".box"); 
    var containerHeight = $(".box").innerHeight(true).toFixed(2); 
    var neededSize = (containerHeight/100*40.32).toFixed(2); 
alert(containerHeight); 
    container.css("font-size", neededSize + "px"); 
} 

$(window).resize(foo); 
$(document).ready(foo); 

サイズ変更方法が信頼できない: 主なものは、間違ってinnerheight

はこれを参照してください。計算されたサイズを変更の上にあります。 サイズ変更ハンドラ内のコードは、ハンドラが呼び出された回数に決して依存しないでください。インプリメンテーションに応じて、サイズ変更イベントが進行中(Internet ExplorerやSafariやChromeなどのWebKitベースのブラウザの典型的な動作)やサイズ変更操作の終了時に1回だけ、サイズ変更イベントを連続的に送信できますOperaなどのいくつかの他のブラウザ)。

+0

まあ、私はあなたのコードを使用してみた "TypeError:$(...)。innerHeight(...)toFixedは関数ではありません"。そういうふうに振る舞うはずですか? – qtxt

+0

jqueryファイルを選択する例:JQuery 1.6.4 –

-1

私はこれで試してみましたが、私にとってはどちらも同じ結果を与えてくれました。してみてください。このため、私はそのサイズの変化を観察し何

+0

コンソールに間違いがあります。 – qtxt

関連する問題