UPDATE (Jan 2016): Retas kecil yang bagus mungkin tidak berfungsi di semua browser lagi jadi saya punya solusi baru dengan sedikit javascript di bawah ini.
A Little Hack Bagus
Rasanya tidak enak, tetapi Anda bisa meletakkan baris baru di html. Seperti ini:
<textarea rows="6" id="myAddress" type="text" placeholder="My Awesome House,
1 Long St
London
Postcode
UK"></textarea>
Perhatikan setiap baris pada baris baru (tidak sedang dibungkus) dan setiap indentasi 'tab' adalah 4 spasi. Memang itu bukan metode yang sangat bagus, tetapi tampaknya berhasil:
http://jsfiddle.net/01taylop/HDfju/
- Kemungkinan tingkat indentasi setiap baris akan bervariasi tergantung pada lebar area teks Anda.
- Penting untuk memiliki
resize: none;di css sehingga ukuran textarea tetap (Lihat jsfiddle).
Atau
Ketika Anda menginginkan baris baru, tekan return dua kali (Jadi ada baris kosong di antara 'baris baru' Anda. 'Baris kosong' ini dibuat perlu memiliki cukup tab / spasi yang akan menyamakan dengan lebar teks Anda. Tampaknya menjadi masalah jika Anda memiliki terlalu banyak, Anda hanya perlu cukup. Ini sangat kotor dan mungkin tidak sesuai dengan browser. Saya berharap ada cara yang lebih mudah!
Solusi yang Lebih Baik
Lihatlah JSFiddle .
- Solusi ini menempatkan div di belakang textarea.
- Beberapa javascript digunakan untuk mengubah warna latar belakang textarea, menyembunyikan atau mengungkapkan placeholder dengan tepat.
- Input dan placeholder harus memiliki ukuran font yang sama, karenanya kedua mixin.
- The
box-sizingdandisplay: block pada textarea penting atau div di belakangnya tidak akan sama ukurannya.
- Pengaturan
resize: verticaldan a min-heightpada textarea juga penting - perhatikan bagaimana teks placeholder akan membungkus dan memperluas textarea akan menjaga latar belakang putih. Namun, mengomentariresize properti akan menyebabkan masalah saat memperluas area teks secara horizontal.
- Pastikan ketinggian minimum pada textarea sudah cukup untuk menutupi seluruh placeholder Anda dengan lebar terkecil. **

HTML:
<form>
<input type='text' placeholder='First Name' />
<input type='text' placeholder='Last Name' />
<div class='textarea-placeholder'>
<textarea></textarea>
<div>
First Line
<br /> Second Line
<br /> Third Line
</div>
</div>
</form>
SCSS:
$input-padding: 4px;
@mixin input-font() {
font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
font-size: 12px;
font-weight: 300;
line-height: 16px;
}
@mixin placeholder-style() {
color: #999;
@include input-font();
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
form {
width: 250px;
}
input,textarea {
display: block;
width: 100%;
padding: $input-padding;
border: 1px solid #ccc;
}
input {
margin-bottom: 10px;
background-color: #fff;
@include input-font();
}
textarea {
min-height: 80px;
resize: vertical;
background-color: transparent;
&.data-edits {
background-color: #fff;
}
}
.textarea-placeholder {
position: relative;
> div {
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: $input-padding;
background-color: #fff;
@include placeholder-style();
}
}
::-webkit-input-placeholder {
@include placeholder-style();
}
:-moz-placeholder {
@include placeholder-style();
}
::-moz-placeholder {
@include placeholder-style();
}
:-ms-input-placeholder {
@include placeholder-style();
}
Javascript:
$("textarea").on('change keyup paste', function() {
var length = $(this).val().length;
if (length > 0) {
$(this).addClass('data-edits');
} else {
$(this).removeClass('data-edits');
}
});
<?="\n"?>sebagai baris baru