2017-05-20 9 views
1

これは、列にいくつかのテキストが表示されます:<textarea>をマルチカラムレイアウトに適合させる方法は?

<div class="content-box" style="column-width: 8em"> 
    <p>blah blah...</p> 
    <p>blah blah...</p> 
    <p>blah blah...</p> 
</div> 

をしかし、テキストエリアは、テキストの残りの部分のように列単位をラップしていないよう:

<div class="content-box" style="column-width: 8em"> 
    <p>blah blah...</p> 
    <textarea rows="100"></textarea> 
    <p>blah blah...</p> 
    <p>blah blah...</p> 
</div> 

私はラインでテキストエリアを表示したいですテキストが長すぎると、次の列にこぼれ落ちることがあります。基本的には編集可能な領域以外のテキストのように見えるはずです。この仕事をする方法はありますか?

私はmad-libsアプリケーションを構築しようとしています。テキストの特定の部分を編集可能(空白部分を埋める)にする必要がある以外は、複数列のテキストレイアウト(新聞のように見える)があります。編集可能な領域は長くなることがあり、通常のテキストのように、編集が終了すると次の列に正常に流出するはずです。

答えて

3
textareaがあることをしないだろう

が、contenteditable要素になる

div[contenteditable] { 
 
    outline: none; 
 
}
<div class="content-box" style="column-width: 8em"> 
 
    <p>blah blah...</p> 
 
    <div contenteditable> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    blah edit<br> 
 
    </div> 
 
    <p>blah blah...</p> 
 
    <p>blah blah...</p> 
 
</div>

+0

'textarea'で許可されているものよりも' contenteditable'と暗示はるかに暗黙の振る舞いがあることに注意してください。予期しない場合、予測されない結果につながるHTMLコンテンツを入力(またはコピー/貼り付け)することがあります。さらに、処理の価値を取り戻すことに興味がある場合は、イベントを処理するか、HTMLコンテンツをテキストに戻すか、「textContent」とクロス・フィンガーをデフォルトに戻す必要があります。すべてのデフォルトがあなたのケースに合っていれば、これは行く方法です。 – Simon

+0

@Simonご意見ありがとうございます。私はそれをよく知っています。 'contenteditable'を使い始める人はすぐに危険に晒されることはありません。あなたのWebサーバーに誰かが何をすべきかを知る必要があるとき、そして' contenteditable'か 'textarea'危険性も同様に大きかった...編集可能なテキスト列をどのように流すべきかという問題があった。 – LGSon

+0

もちろん、私のコメントは、他の誰かがこの回答を見に来たら一般的な情報でした – Simon

-1

textarea要素を使用してこれを達成できるとは思いません。これはブラウザのデフォルトに依存し、他の要素と同じくらいの柔軟性は許されません。

あなたができることは、CSSを使用して一種のテキストエリアをシミュレートし、イベントを自分で処理することです(キーボードとマウスイベントを使用して)。これは大変な作業かもしれませんが。

関連する問題