4

現在、ブラウザ間の互換性に取り組んでいると、さまざまな IE の問題に遭遇しました。

スクロールせずに特定のテキストをレンダリングするような高さのテキストエリアが必要です。そのため、サーバー側とフロントエンドでそのようなテキストの行を数えます。

<textarea rows="15">...</textarea>

これまでのところ、Chrome、FF、Opera で動作します。

クロム 24.0.1312.57 m

しかし、IE8ではそのような運はありません:

IE8

および IE9:

IE9

とにかくJS以外にそれを修正する方法はありますか? doctype を取得しましたが、私の値HTML5はそのままにしておきたいと思います。font-size

テキストエリアの計算されたスタイル:

background-color: rgb(255, 255, 255);
border-bottom-color: rgb(204, 204, 204);
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom-style: solid;
border-bottom-width: 1px;
border-left-color: rgb(204, 204, 204);
border-left-style: solid;
border-left-width: 1px;
border-right-color: rgb(204, 204, 204);
border-right-style: solid;
border-right-width: 1px;
border-top-color: rgb(204, 204, 204);
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-top-style: solid;
border-top-width: 1px;
box-shadow: rgba(0, 0, 0, 0.0745098) 0px 1px 1px 0px inset;
color: rgb(167, 169, 172);
cursor: auto;
display: inline-block;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 13px;
font-weight: normal;
height: 300px;
letter-spacing: normal;
line-height: 20px;
margin-bottom: 4px;
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
overflow-x: auto;
overflow-y: auto;
padding-bottom: 4px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
resize: both;
text-align: start;
text-indent: 0px;
text-shadow: none;
text-transform: none;
vertical-align: middle;
white-space: nowrap;
width: 432.546875px;
word-spacing: 0px;
word-wrap: break-word; # changed to «pre» for IE
writing-mode: lr-tb;
4

4 に答える 4

0

スタイルシートには実際にはが含まれていないと思います。これwhite-space: preは、のデフォルトのレンダリングtextarea(改行を尊重する)を壊してしまうためです。それ以外は、なぜ標準モードで問題が発生するのかわかりません。

HTMLマークアップ(非公開)には</textarea>、最後のテキスト行の直後に終了タグが含まれていると想定しています。そうしないと、ブラウザはコンテンツに空の16行目があることを意味します。(このブラウザの動作は、終了タグの直前の改行は無視されるというHTML 4.01仕様に違反していますが、どうすればよいですか?)しかし、これが問題である場合は、Firefoxなどでも表示されます。

heightプロパティがtextarea300ピクセルに設定されている設定は正しいです。これは、行数(15)に行の高さ(20ピクセル)を掛けたものに等しくなります。

ただし、Quirksモードでは、IEは誤動作します。つまり、height属性値を、パディングや境界線を含む、要素が占める合計領域の高さを指定するものとして解釈します。したがって、4pxの上下のパディングと2pxの境界線にはが必要になりますheight: 310px。これにより、準拠するブラウザに過度の間隔が生じます。したがって、標準モードで作業するのが最適です。文字列にタイプミスがないか確認してくださいdoctype。IEでは、F12を使用して開発者ツールに入ることができます。開発ツールでは、プロパティを調べたり、ブラウザのモードを確認したりできます。

于 2013-02-12T12:55:50.897 に答える
0

CSS の高さを計算して、それをボックスのインライン スタイルにも追加してみてください。

于 2013-02-11T22:21:22.163 に答える