Tôi có văn bản tùy chỉnh. Trong ví dụ này, nó làm cho các chữ cái màu đỏ hoặc xanh lá cây, ngẫu nhiên.Hiển thị dấu nháy trong văn bản tùy chỉnh mà không hiển thị văn bản của nó
var mydiv = document.getElementById('mydiv'),
myta = document.getElementById('myta');
function updateDiv() {
var fc;
while (fc = mydiv.firstChild) mydiv.removeChild(fc);
for (var i = 0; i < myta.value.length; i++) {
var span = document.createElement('span');
span.className = Math.random() < 0.5 ? 'green' : 'red';
span.appendChild(document.createTextNode(myta.value[i]));
mydiv.appendChild(span);
}
};
myta.addEventListener('input', updateDiv);
body { position: relative }
div, textarea {
-webkit-text-size-adjust: none;
width: 100%;
white-space: pre-wrap;
word-wrap: break-word;
overflow-wrap: break-word;
font: 1rem sans-serif;
padding: 2px;
margin: 0;
border-radius: 0;
border: 1px solid #000;
resize: none;
}
textarea {
position: absolute;
top: 0;
color: transparent;
background: transparent;
}
.red { color: #f00 }
.green { color: #0f0 }
<div id="mydiv"></div>
<textarea id="myta" autofocus=""></textarea>
Có một div đầu ra với một textarea trên nó. Vì vậy, textarea không bao gồm bất kỳ những thứ đầy màu sắc bên dưới nó, màu sắc và nền của nó được thiết lập để minh bạch. Mọi thứ hoạt động ở đây, ngoại trừ dấu mũ (con trỏ nhấp nháy do tác nhân người dùng cung cấp) là trong suốt.
Có cách nào để hiển thị dấu nháy mà không hiển thị văn bản của văn bản không?
Nếu tôi đặt div phía trên vùng văn bản thay thế và đặt nó pointer-events: none
, văn bản vẫn hiển thị bên dưới. Sự sắp xếp này cũng làm cho việc cuộn trơn tru trở nên khó khăn, vì vậy nó không hiệu quả với tôi.
contenteditable không phải là một yếu tố hình thức và có thể dẫn đến mất dữ liệu từ nội dung của nó không được trình duyệt lưu. Nó cũng khá lộn xộn để làm việc với. – bjb568
Liên quan: http://stackoverflow.com/questions/20728150/unusual-shape-of-a-textarea#comment31094671_20728150 và http://stackoverflow.com/questions/20728150/unusual-shape-of-a-textarea#comment31158616_20728275 – bjb568
Nếu bạn muốn 'textarea' quá, hãy xem [demo mới này] (https://jsfiddle.net/bb5jmw95/1/). Tôi chỉ thêm 'myta.value = text; 'để đặt văn bản trong' textarea'. Sau đó, bạn có thể chỉ cần ẩn 'textarea' bằng' display: none; '. Hy vọng điều này giúp đỡ :) – lmgonzalves