安全な値はおそらく -32768px
ですが、これは仕様の一部ではなく、(おそらく時代遅れの) 実装固有の従来の制限を観察したものです。
レンダリング時に CSS プロパティ値を要素に適用する前に、これらの宣言を解析して、実質的に文字列よりも操作可能で抽象的なものにする必要があります。つまり、ほとんど何でもプロパティ値として入力できます。
.a {text-indent: -999px;}
.b {text-indent: -99999999px;}
.c {text-indent: medium potato;}
最初の例は、指を交差させて、正しく解析されます。最後のものは無効であり、無視されます (中程度のポテトは現在 w3c CSS 仕様の一部ではないため)。しかし、真ん中のものは、オーバーフローすると風変わりになります(ブラウザによって割り当てられたメモリに「収まりません」)。私はフィドルをまとめました。これらはtext-indent
、ブラウザーが「チョーク」してデフォルトでゼロに設定された値です。
#On OSX 10.8 Lion 64bit:
Safari 6 -2^31
Chrome 22 -2^26 #your original -99999999px would have failed here
Firefox 14 -2^70
Opera 12 -2^70
#On Win Server 2008 64bit:
Firefox 13 -2^70
Chrome 21 -2^70
IE 9 -2^70
明日、別のボックスでさらにテストを実行します。上記の結果が更新されましたが、あまり興奮していません。このフィドルを使用して独自のテストを実行することもできます。表示されたままの最初の項目には、適用されたが無視された値が表示されます。値は、使用するブラウザ/OS、およびハードウェアによって異なると想定しています。
16 ビットの符号付き整数 (-32768 から +32767 まで) の制約であるという保守的な制約を提案した偽の列のスタイリングに関する記事で、そのような制限の実際的な参照を最初に見たのを覚えています。これは、テキストだけでなく、インデント以外の長さの値。この値がさまざまなブラウザーとそのバージョンでどの程度一貫しているか、また、異なる単位で表された分数や値にどの程度適用できるかはわかりません。