Chèn ngắt dòng bên trong thuộc tính giữ chỗ của textarea?


179

Tôi đã thử một vài cách tiếp cận nhưng không có cách nào hiệu quả. Có ai biết một thủ thuật tiện lợi để khắc phục điều này không?

<textarea placeholder='This is a line \n this should be a new line'></textarea>

<textarea placeholder='This is a line     
should this be a new line?'></textarea> <!-- this works in chrome apparently -->

CẬP NHẬT: Nó không hoạt động trong chrome. Đó chỉ là chiều rộng của textarea.

Xem: http://jsfiddle.net/pdXRx/


2
Nếu sử dụng PHP, bạn có thể đặt <?="\n"?>dưới dạng một dòng mới
rybo111

39
Chỉ cần thêm &#10;thuộc tính giữ chỗ, thích <textarea placeholder="This is a line&#10;This is another one"></textarea>. Câu trả lời là dưới đây.
lu1s

4
@ lu1s này hoạt động trong Chrome, IE nhưng không hoạt động trong Firefox và Safari.
mb21

1
@ mb21 Tôi đã thử nghiệm nó một phút trước trong Firefox 60.0.2 và bây giờ nó hoạt động. Có lẽ nó sẽ hoạt động trong hầu hết các trình duyệt bây giờ.
tsuma534

3
Đó là năm 2020 và vẫn chưa có giải pháp cho Safari?
Ömer

Câu trả lời:


61

Những gì bạn có thể làm là thêm văn bản dưới dạng valuetôn trọng ngắt dòng \n.

$('textarea').attr('value', 'This is a line \nthis should be a new line');

Sau đó, bạn có thể gỡ bỏ nó focusvà áp dụng lại (nếu trống) trên blur. Một cái gì đó như thế này

var placeholder = 'This is a line \nthis should be a new line';
$('textarea').attr('value', placeholder);

$('textarea').focus(function(){
    if($(this).val() === placeholder){
        $(this).attr('value', '');
    }
});

$('textarea').blur(function(){
    if($(this).val() ===''){
        $(this).attr('value', placeholder);
    }    
});

Ví dụ: http://jsfiddle.net/airandfingers/pdXRx/247/

Không thuần CSS và không sạch nhưng thực hiện các mẹo.


4
Tôi chắc chắn có thể giả mạo hiệu ứng giữ chỗ bằng cách sử dụng javascript, nhưng tôi đã hy vọng điều gì đó đơn giản hơn
amosrivera

2
Thật không may, @amosrivera, dường như không có cách tiêu chuẩn nào: developer.mozilla.org/en/HTML/HTML5/ mẹo, ngoài cách giải quyết theo kịch bản.
Jason Gennaro

3
Giải pháp tốt, nhưng tôi sẽ thêm if($(this).val() == 'This is...')vào focustrình xử lý, nếu không, nếu bạn thêm một số văn bản, sau đó mất tiêu điểm, sau đó nhấp vào văn bản một lần nữa, văn bản của bạn biến mất.
Dennis Golomazov

2
@DenisGolomazov Bổ sung tốt; Tôi vừa gửi một chỉnh sửa với kiểm tra trong xử lý tập trung. Tôi cũng khuyên bạn nên thêm một lớp giữ chỗ và giữ chỗ theo kiểu khác nhau, như được hiển thị trong bản cập nhật này với ví dụ jsfiddle đã sửa đổi của tôi: jsfiddle.net/airandfingers/pdXRx/249
Aaron

Điều gì xảy ra nếu người dùng thực hiện đầu vào khớp chính xác với văn bản giữ chỗ, sẽ không bị xóa?
Arjuna

274

Bạn có thể chèn một thực thể html dòng mới &#10;bên trong thuộc tính giữ chỗ:

<textarea name="foo" placeholder="hello you&#10;Second line&#10;Third line"></textarea>

Hoạt động trên: Chrome 62, IE10, Firefox 60

Không hoạt động trên: Safari 11

https://jsfiddle.net/lu1s/bxkjLpag/2/


7
điều này không chính xác những gì câu hỏi ban đầu yêu cầu. Tại sao nó không được bình chọn cao hơn? Nó không hoạt động trong mọi trình duyệt?
DaveAlger

9
@DaveAlger - Quả thực là không. Tôi chỉ thử nó trong FF và nó in ra theo &#10;nghĩa đen, mà không tạo ra một ký tự khoảng trắng. Xem nhà phát
triển.mozilla.org / vi /HTML /HTML5 / Mạnh

1
Hoạt động trên IE10 và Chrome 62.
miny1997

1
Hoạt động rất tốt trong các phiên bản Firefox mới hơn
ii iml0sto1

10
Hoạt động trong Firefox 60.
Rob Porter

57

Đừng nghĩ rằng bạn được phép làm điều đó: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribution

Nội dung liên quan (nhấn mạnh của tôi):

Thuộc tính giữ chỗ thể hiện một gợi ý ngắn (một từ hoặc cụm từ ngắn) nhằm mục đích hỗ trợ người dùng nhập dữ liệu khi điều khiển không có giá trị. Một gợi ý có thể là một giá trị mẫu hoặc mô tả ngắn gọn về định dạng dự kiến. Thuộc tính, nếu được chỉ định, phải có giá trị không chứa các ký tự U + 000A LINE FEED (LF) hoặc U + 000D CARRIAGE RETURN (CR).


@amosrivera Hmm. Vâng, các nhà cung cấp được phép diễn giải thông số kỹ thuật theo cách họ thấy phù hợp.
Tieson T.

10
Tôi là một công cụ, nó trông giống như một đường ngắt nhưng thực tế nó chỉ là trình giữ chỗ bao quanh chiều rộng của văn bản ..
amosrivera

3
@amosrivera LOL, ít nhất bạn có thể cười về nó, phải không? Không có gì mất bằng cách thử ...:]
Tieson T.

1
Câu trả lời là đúng. nhưng tôi xem xét các quy tắc tổng vô nghĩa. Đối số chính xác cho "không được chứa" LR hoặc CR là gì?
Jens A. Koch

2
@ Jens-AndréKoch Tôi cho rằng lập luận là một trình giữ chỗ phải đơn giản; nếu giá trị đủ phức tạp để cần ngắt dòng, thì nó sẽ tồn tại như một phần tử anh chị em, tương tự như những gì bạn thấy nếu bạn kích hoạt liên kết "hiển thị trợ giúp" của trình chỉnh sửa nhận xét này. Một trình giữ chỗ không hiển thị khi đầu vào chứa nội dung, sau tất cả ...
Tieson T.

54

CẬP NHẬT (Tháng 1 năm 2016): Bản hack nhỏ xinh có thể không hoạt động trên tất cả các trình duyệt nữa vì vậy tôi có một giải pháp mới với một chút javascript bên dưới.


Một chút hack đẹp

Nó không cảm thấy tốt, nhưng bạn chỉ có thể đặt các dòng mới trong html. Như thế này:

<textarea rows="6" id="myAddress" type="text" placeholder="My Awesome House,
        1 Long St
        London
        Postcode
        UK"></textarea>

Lưu ý mỗi dòng nằm trên một dòng mới (không được bọc) và mỗi lần thụt lề của tab là 4 khoảng trắng. Cấp nó không phải là một phương pháp rất hay, nhưng nó có vẻ hiệu quả:

http://jsfiddle.net/01taylop/HDfju/

  • Có thể mức độ thụt lề của mỗi dòng sẽ thay đổi tùy thuộc vào độ rộng của vùng văn bản của bạn.
  • Điều quan trọng là phải có resize: none;trong css để kích thước của textarea được cố định (Xem jsfiddle).

Ngoài ra, khi bạn muốn có một dòng mới, hãy nhấn return hai lần (Vì vậy, có một dòng trống giữa 'dòng mới' của bạn. 'Dòng trống' này cần phải có đủ các tab / khoảng trắng tương đương với chiều rộng của textarea của bạn. Sẽ không có vấn đề gì nếu bạn có quá nhiều, bạn chỉ cần đủ. Điều này thật bẩn thỉu và có lẽ không tuân thủ trình duyệt. Tôi ước có một cách dễ dàng hơn!


Một giải pháp tốt hơn

Kiểm tra JSFiddle .

  • Giải pháp này đặt một div phía sau textarea.
  • Một số javascript được sử dụng để thay đổi màu nền của textarea, ẩn hoặc tiết lộ trình giữ chỗ một cách thích hợp.
  • Các đầu vào và giữ chỗ phải có cùng kích thước phông chữ, do đó hai mixin.
  • Các thuộc tính box-sizingdisplay: blocktrên textarea rất quan trọng hoặc div đằng sau nó sẽ không cùng kích thước.
  • Cài đặt resize: verticalvà a min-heighttrên textarea cũng rất quan trọng - chú ý cách văn bản giữ chỗ sẽ bao bọc và mở rộng vùng văn bản sẽ giữ nền trắng. Tuy nhiên, bình luận ra resizetài sản sẽ gây ra vấn đề khi mở rộng văn bản theo chiều ngang.
  • Chỉ cần đảm bảo chiều cao tối thiểu trên vùng văn bản là đủ để bao phủ toàn bộ chỗ dành sẵn của bạn ở chiều rộng nhỏ nhất của nó. **

Ảnh chụp màn hình của JSFiddle

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');
  }
});

Một hack rất dễ thương. Điều này chắc chắn hoạt động trong Chrome. Chúng tôi có thể xác nhận nó hoạt động giống nhau trong tất cả các trình duyệt chính khác không?
Đánh dấu Amery

2
Tôi rất thích ai đó thử nghiệm nó trong IE. Tôi có thể xác nhận nó hoạt động trên các phiên bản Safari và Chrome mới nhất nhưng chắc chắn không phải Firefox. Bây giờ tôi sử dụng văn bản thay vì giữ chỗ và có một lớp css để làm cho văn bản trông giống như một trình giữ chỗ. Sau đó, một hàm jQuery nhỏ để xóa văn bản khi nó tập trung - hoặc đặt lại nếu trống!
Patrick

2
Hoạt động tốt trong Chrome và IE 11. Nhưng không hoạt động ở trình duyệt mặc định của Firefox và Android.
Lập trình viên hóa học

1
Không hoạt động trên Safari, Firefox, Opera. Chỉ hoạt động trong Chrome :(
by0

1
Đây phải là câu trả lời được chấp nhận, bởi vì câu trả lời hiện tại có thể gửi giá trị "giữ chỗ" với biểu mẫu. Lưu ý: giải pháp trong "Giải pháp tốt hơn" hoạt động chính xác trên trình duyệt. Các ý kiến ​​nói khác nhau phải đề cập đến "A Nice Little Hack".
Roy Prins

15

Làm thế nào về một giải pháp CSS: http://cssdeck.com/labs/07fwgrso

::-webkit-input-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

::-moz-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

:-ms-input-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

2
Đây là giải pháp tốt nhất trong số tất cả những giải pháp được liệt kê ở đây, IMO.
aendrew

Giải pháp này không hoạt động trong Firefox (được thử nghiệm trên 22.0-28.0b9).
Hartwig

@Hartwig Tôi thực sự nhận thấy như vậy. Vì một số lý do, Firefox không xử lý việc này một cách chính xác. Trên thực tế, nó cũng không hoạt động trên IE ==> thật không may, đó chỉ là WebKit.
Samuli Hakoniemi

15

Salaamun Alekum

&#10;

Hoạt động cho Google Chrome

nhập mô tả hình ảnh ở đây

<textarea placeholder="Enter Choice#1 &#10;Enter Choice#2 &#10;Enter Choice#3"></textarea>

Tôi đã thử nghiệm điều này trên Windows 10.0 (Build 10240) và Google Chrome Phiên bản 47.0.2526.80 m

08:43:08 AST 6 Rabi Al-Awwal, 1437 Thứ năm, 17 tháng 12 năm 2015

Cảm ơn bạn


10

Chỉ thêm & # 10 cho dòng ngắt, không cần phải viết bất kỳ CSS hoặc javascript nào.

textarea{
    width:300px;
    height:100px;

}
<textarea placeholder='This is a line this &#10should be a new line'></textarea>

<textarea placeholder=' This is a line 

should this be a new line?'></textarea>


9

Câu trả lời cũ:

Không, bạn không thể làm điều đó trong thuộc tính giữ chỗ. Bạn thậm chí không thể mã hóa các dòng mới như &#13;&#10;trong trình giữ chỗ.

Câu trả lời mới:

Các trình duyệt hiện đại cung cấp cho bạn một số cách để làm điều này. Xem JSFiddle này:

http://jsfiddle.net/pdXRx/5/


Fiddle hữu ích! Giải pháp 2 thực sự hoạt động trong Safari.
sandinmyjoints


6

Thử cái này:

<textarea
placeholder="Line1&#x0a;&#x09;&#x09;&#x09;Line2"
cols="10"
rows="5"
style="resize:none">
</textarea>

http://jsfiddle.net/vr79B/


Đây chỉ là một số khoảng trắng sau câu 1 và không thể được sử dụng trên nhiều cols hoặc chiều rộng linh hoạt.
Jeffrey Neo

5

Bạn không thể làm điều đó với HTML thuần túy, nhưng plugin jQuery này sẽ cho phép bạn: https://github.com/bradjasper/jQuery-Placeholder-Newlines


Thật tuyệt, làm việc cho tôi, tôi đã thay thế jquery.placeholder tiêu chuẩn bằng matthias bằng cuộc gọi này và phải thay thế các cuộc gọi này: $('input, textarea').placeholder();bằng cuộc gọi này$('input[placeholder], textarea[placeholder]').placeholder();
ryan2johnson9

4

Một phiên bản cải tiến một chút của câu trả lời của Jason Gennaro (xem bình luận mã):

var placeholder = 'This is a line \nthis should be a new line';
$('textarea').attr('value', placeholder);
$('textarea').focus(function(){
    if($(this).val() == placeholder){
        // reset the value only if it equals the initial one    
        $(this).attr('value', '');
    }
});
$('textarea').blur(function(){
    if($(this).val() == ''){
        $(this).attr('value', placeholder);
    }    
});
// remove the focus, if it is on by default
$('textarea').blur();

4

Tôi thích tác phẩm của Jason Gennaro và Denis Golomazov, nhưng tôi muốn thứ gì đó sẽ hữu ích hơn trên toàn cầu. Tôi đã sửa đổi khái niệm này để nó có thể được thêm vào bất kỳ trang nào mà không gây hậu quả.

http://jsfiddle.net/pdXRx/297/

<h1>Demo: 5 different textarea placeholder behaviors from a single JS</h1>

<h2>Modified behaviors</h2>

<!-- To get simulated placeholder with New Lines behavior,
     add the placeholdernl attribute -->

<textarea placeholdernl>    (click me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea placeholder='Address' placeholdernl>    (click me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<h2>Standard behaviors</h2>

<textarea placeholder='Address'>    (delete me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea>    (delete me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea placeholder='Address'></textarea>

Các javascript rất đơn giản

<script>
(function($){
var handleFocus = function(){
    var $this = $(this);
    if($this.val() === $this.attr('placeholdernl')){
        $this.attr('value', '');
        $this.css('color', '');
    }
};

var handleBlur = function(){
    var $this = $(this);
    if($this.val() == ''){
        $this.attr('value', $this.attr('placeholdernl'))
        $this.css('color', 'gray');
    }    
};

$('textarea[placeholdernl]').each(function(){
    var $this = $(this),
        value = $this.attr('value'),
        placeholder = $this.attr('placeholder');
    $this.attr('placeholdernl', value ? value : placeholder);
    $this.attr('value', '');
    $this.focus(handleFocus).blur(handleBlur).trigger('blur');
});
})(jQuery);
</script>

2

HTML

<textarea data-placeholder="1111\n2222"></textarea>

Mã não

$('textarea[data-placeholder]').each(function(){
    var $this = $(this),
        placeholder = $this.data('placeholder'),
        placeholderSplit = placeholder.split('\\n');
    placeholder = placeholderSplit.join('\n');
    $this.focus(function(){
        var $this = $(this);
        if($this.val() === placeholder){
            $this.val('');
            // $this.removeClass('placeholder');
        }
    }).blur(function(){
        var $this = $(this);
        if($this.val() == '') {
            $this.val(placeholder);
            // $this.addClass('placeholder');
        }
    }).trigger('blur');
});


1

Tôi đã sửa đổi câu đố của @Richard Bronosky như thế này .

Đó là cách tiếp cận tốt hơn để sử dụng data-*thuộc tính hơn là một thuộc tính tùy chỉnh. Tôi thay thế <textarea placeholdernl>để <textarea data-placeholder>và một số phong cách khác nữa.

chỉnh sửa
Dưới đây là câu trả lời ban đầu của Richard có chứa đoạn mã đầy đủ.


1
Tốt hơn là bất cứ khi nào bạn bao gồm một jsfiddle, hãy giải thích và dán mã ở đây, vì vậy chúng tôi có nó để tham khảo thêm và chúng tôi không phải tin rằng nội dung sẽ có trong jsfiddle mãi mãi.
avcajaraville

Bạn nói đúng, @avcajaraville. Nhưng tôi đã không bao gồm đoạn mã đầy đủ vì câu trả lời ban đầu của Richard là về cùng một chủ đề và tôi chỉ là sửa đổi đơn giản. Thay vào đó, tôi chỉ câu trả lời của anh ấy.
Gongdo Gong

1

rất đơn giản

  var position = your break position;
    var breakLine = "&#13;&#10;";//in html 
    var output = [value.slice(0, position), breakLine, value.slice(position)].join('');
    return output;

giá trị đại diện cho chuỗi ban đầu


1

Kiểm tra giải pháp này với giữ chỗ tùy chỉnh.

  • Bạn nhận được giữ chỗ nhiều dòng hoạt động trong tất cả các trình duyệt (bao gồm cả Firefox)
  • Có thể tùy chỉnh giữ chỗ như bạn muốn

Demo trên fiddle .

$(document).on('input', '#textArea', function () {
	
        if ($('#textArea').val()) {
            $('#placeholderDiv').hide();
        } else {
            $('#placeholderDiv').show();
        }   
});
#textAreaWrap {
    position: relative;
    background-color: white;
}

#textArea {
    position: relative;
    z-index: 1;
    width: 350px;
    height: 100px;
    min-height: 100px;
    padding: 6px 12px;
    resize: vertical;
    background-color: transparent;
    /* When set background-color: transparent - Firefox  displays
    unpleasant textarea border. Set border style to fix it.*/
    border: 1px solid #a5a5a5;
}

#placeholderDiv {
    position: absolute;
    top: 0;
    padding: 6px 13px;
    color: #a5a5a5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="textAreaWrap">
    
<textarea id="textArea"></textarea>

<!-- Check here. If textarea has content -
     set for this div attribute style="display: none;" -->
<div id="placeholderDiv">Multiline textarea<br>
                         placeholder<br>
                         <br>
                         that works in Firefox</div>
    
</div>


0

Tôi không thích giấu chỗ giữ chỗ khi bạn tập trung vào vùng văn bản. Vì vậy, tôi đã tạo một hàm xây dựng Placeholdertrông giống hệt như trình giữ chỗ tích hợp và cũng hoạt động trong các trình duyệt khác ngoài Google Chrome. Nó rất thuận tiện vì bạn có thể sử dụng Placeholderhàm bao nhiêu lần tùy ý và thậm chí không cần jQuery.

BIÊN TẬP:

Bây giờ nó cũng xử lý các trường hợp đặc biệt, như chèn giữ chỗ, một cách chính xác.

var textarea = document.getElementById("textarea");
new Placeholder(textarea, "Line 1\nLine 2\nLine 3");

function Placeholder(el, placeholder) {
    if (el.value == "" || el.value == placeholder) {
        el.style.color = "gray";
        el.value = placeholder;
        el._plc = true;
        el.className += " unselectable";
    }
    function keyPress(e) {
        window.setTimeout(function() {
            var replaced = reverseStr(el.value).replace(reverseStr(placeholder), "");
            
            if (el.value == "") {
                el.value = placeholder;
                el.style.color = "gray";
                cursorToStart(el);
                el._plc = true;
                el.className += " unselectable";
            } else if (el._plc && el.value.endsWith(placeholder) && replaced !== "") {
                el.value = reverseStr(replaced);
                el.style.color = "black";
                el._plc = false;
                el.readOnly = false;
                el.className = el.className.replace("unselectable", "");
            } else if (el._plc && el.readOnly) {
                var ch = String.fromCharCode(e.charCode);
                if (e.keyCode == 13) ch = "\n";     // ENTER
                else if (e.charCode == 0) return;   // non-character keys
                
                el.value = ch;
                el.style.color = "black";
                el._plc = false;
                el.readOnly = false;
                el.className = el.className.replace("unselectable", "");
            }
        }, 10);
    }
    el.addEventListener("keypress", keyPress, false);
    el.addEventListener("paste", keyPress, false);
    el.addEventListener("cut", keyPress, false);
    el.addEventListener("mousedown", function() {
        if (el._plc) el.readOnly = true;
    }, false);
    el.addEventListener("mouseup", function() {
        el.readOnly = false;
        if (el._plc) cursorToStart(el);
    }, false);
  
    function cursorToStart(input) {
        if (input.createTextRange) {
            var part = input.createTextRange();
            part.move("character", 0);
            part.select();
        } else if (input.setSelectionRange){
            input.setSelectionRange(0, 0);
        } input.focus();
    }
    function reverseStr(str) {
        if (!str) return "";
        return str.split("").reverse().join("");
    }
}
textarea {
    border: 1px solid gray;
    padding: 3px 6px;
    font-family: Arial;
    font-size: 13px;
    transition: .2s;
}
textarea:hover, textarea:focus {
    border-color: #2277cc;
}
textarea:focus {
    box-shadow: inset 0 0 5px #85B7E9;
}
*.unselectable {
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
}
<textarea id="textarea"></textarea>


0

Vấn đề này có thể được khắc phục bằng cách sử dụng bộ chọn hiển thị giữ chỗ và nền siêu áp đặt, nếu việc triển khai của bạn cho phép:

textarea:not(:placeholder-shown) {
  background: #fff;
}

div {
  top: 0;
  left: 14px;
  color: rgba(0,0,0,0.4);
  z-index: -1;
  position: absolute;
  line-height: 1.2;
  white-space: pre-wrap;
}

https://codepen.io/franciscoaquino/pen/YzyBPYK

Hỗ trợ chọn:

https://caniuse.com/#feat=css-placeholder-shown

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.