2013-04-07 64 views
40

我有一個高度爲200px的textarea,但是當我將200px的文字傳遞給我時,我希望擴展textarea而不是用滾動條保持200px的高度。只能用CSS擴展一個textarea是可能的嗎?

只有CSS才能做到這一點?

+1

不,它是不可能只用CSS – 2013-04-07 18:15:48

+3

這裏做的是什麼,可以做一個很好的例子與textarea使用CSS:http://css-tricks.com/textarea-tricks/我相信你在找什麼是7.自動調整大小,以適應內容。 – Mason240 2013-04-07 19:42:29

+1

從Mason240的評論,http://css-tricks.com/textarea-tricks/,**第7節。自動調整大小以適應內容**儘管使用了標題,但仍使用jQuery/JavaScript *而非CSS。正如上面的user1317647所述,它僅用CSS是不可能的,但需要腳本。 – JonBrave 2016-06-29 11:15:03

回答

60

相反的textarea,您可以使用divcontentEditable屬性:

div { 
 
    display: inline-block; 
 
    border: solid 1px #000; 
 
    min-height: 200px; 
 
    width: 300px; 
 
}
<div contentEditable="true"></div>

DEMO

+1

+1非常好的方法。在我們可以用'div'替換'textarea'的情況下,它可以工作,並且得到很好的支持:http://caniuse.com/#feat=contenteditable。 – 2013-04-07 18:37:49

+0

謝謝!這正是尋找的東西。 – swayziak 2013-04-07 18:42:50

+0

當我選擇該div時,如何刪除邊框?當我在Chrome中選擇DIV時,會顯示可怕的藍色邊框。 – swayziak 2013-04-07 19:02:42

4

不,它是不可能只用CSS做的,但你可以使用jQuery:

$('#your_textarea').on('keydown', function(e){ 
    var that = $(this); 
    if (that.scrollTop()) { 
     $(this).width(function(i,h){ 
      return h + 20; 
     }); 
    } 
}); 
5

用戶只需使用CSS即可製作textarea文件。事實上,在一些現代瀏覽器中,這種可擴展性甚至是瀏覽器的默認設置。您可以明確要求它:

textarea { resize: both; } 

瀏覽器支持正在增長,但仍然有限。

有通常只是可調整大小的一個小提示:在右上角有一個調整手柄。我恐怕大多數用戶都不會理解這個提示。

您不能通過僅使用CSS的內容使textarea自動擴展

-6

這裏有一個簡單,純粹的PHP和HTML的解決方案,而不需要JS,使textarea的適合尺寸。 HTML: <textarea rows="<?php echo linecount($sometext, 100, 3);?>" cols="100" name="sometext"><?php echo $sometext;?></textarea>

<?php 
    /* (c)MyWeb.cool, 2014 
    * ------------------------------------------------------------------------- 
    *Calculate number of rows in a textarea. 
    * Parms : $text:  The contents of a textarea, 
    *   $cols:  Number of columns in the textarea, 
    *   $minrows: Minimum number of rows in the textarea, 
    * Return: $row:  The number of in textarea. 
    * ---------------------------------------------------------------------- */ 
    function linecount($text, $cols, $minrows=1) { 
    // Return minimum, if empty` 
    if ($text <= '') { 
    return $minrows; 
    } 
    // Calculate the amount of characters 
    $rows = floor(strlen($text)/$cols)+1; 
    // Calculate the number of line-breaks 
    $breaks = substr_count($text, PHP_EOL); 
    $rows = $rows + $breaks; 
    if ($minrows >= $rows) { 
    $rows = $minrows; 
    } 
    // Return the number of rows 
    return $rows; 
    } 
    ?> 

`而這一次更短,更好:

function linecount($text, $cols, $minrows=1) { 
    if ($text <= '') {return $minrows;} 
    $text = wordwrap($text, $cols, PHP_EOL); 
    $rows = substr_count($text, PHP_EOL)+1; 
    if ($minrows >= $rows) {$rows = $minrows;} 
    return $rows; 
} 
?> 
+4

當用戶輸入更多文本時,這不會擴展客戶端的文本區域。這通常也不是一個好主意 - 除非使用等寬字體,否則不能通過計算字符來衡量文本。 – Niall 2017-02-10 12:27:38

+2

不是PHP的問題 – 2017-04-10 11:00:26

相關問題