webデザインについてです。
やりたいこと
CSSとjQueryを使用して
・texeareaが改行されると自動的にtextareaの高さが変化する
・↑に合わせてtextareaの下にある要素もtextareaのすぐ下に配置されるようにする
※構造の問題で実際にはtextareaのすぐ下ではなくdlタグのすぐ下になります。
ということを実行したいです。
現在の各コード
HTML
1<dl> 2 <dt><img src="画像URL" class="icon" alt="アイコン画像"/></dt> 3 <dd> 4 <form name="Form" action="" method="post"> 5 <textarea name="message" id="caption">テキストを入力</textarea> 6 </form> 7 </dd> 8</dl> 9<ul> 10 <li>リスト内容</li> 11 <li>リスト内容</li> 12</ul>
CSS
1<style type="text/css"> 2* { 3 box-sizing: border-box; 4 -webkit-box-sizing: border-box; 5} 6 7body { 8 line-height: 1.5; 9 color: #000; 10 background: #FFF; 11 font-family: sans-serif; 12 font-size: 13px; 13} 14 15dl { 16 width: 100%; 17 padding-bottom: 10px; 18} 19 20dl dt { 21 float: left; 22 clear: left; 23 width: 50px; 24} 25 26.icon { 27 width: 50px; 28 height: 50px; 29} 30 31dl dd { 32 margin-left: 50px; 33 width: calc(100% - 50px); 34} 35 36#caption { 37 height: 50px; 38 width: 100%; 39 resize: none; 40 border: thin solid #000; 41 color: #CECECE; 42 background: #FFF; 43 font-family: sans; 44 font-size: 13px; 45} 46</style>
jQuery
1<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 2<script> 3$(function() { 4 var $textarea = $('#caption'); 5 var lineHeight = parseInt($textarea.css('lineHeight')); 6 $textarea.on('input', function(e) { 7 var lines = ($(this).val() + '\n').match(/\n/g).length; 8 $(this).height(lineHeight * lines); 9 }); 10}); 11 12$(function() { 13 var h = $('#caption').outerHeight(); 14 $('ul').css('margin-top',h); 15</script>
現状
上記のコードで動かした結果、textarea内で改行すると高さが自動で変化するというのは成功しましたが、dlタグのすぐ下のulが改行によるtextareaの高さの変化に対応しておらず、改行をし続けてtextareaの高さが伸びるにつれ、ulはtextareaに隠れてしまいます。
何か良い案があればご教授頂ければ幸いです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー