Код: Выделить всё
Код: Выделить всё
h1 {
border: 1px black solid;
outline: none;
text-indent: 36px;
}
h1:empty::before {
content: attr(placeholder);
color: grey;
}
< /code>
js: < /p>
const h1 = document.querySelector('h1');
h1.addEventListener('input', () => {
if (h1.textContent !== '') return;
let elemToDel = [];
for (let i of h1.children) {
elemToDel.push(i);
}
elemToDel.forEach(i => i.remove());
});
Код JS предназначен для удаления оставшихся символов новой строки, когда h1.textContent пуст, чтобы :empty::before применяется.
Однако нажатие Enter при отсутствии текста (за исключением ::before) приводит к тому, что курсор, по-видимому, игнорирует текстовый отступ, хотя при вводе текста что-нибудь, а затем нажать введите, а затем удалив новую строку и набранный текст, кажется, снова помещает его в нужное место.
Я написал это:
Код: Выделить всё
const caretPos = window.getSelection();
const range = document.createRange();
range.selectNodeContents(h1);
range.collapse(false);
caretPos.removeAllRanges();
caretPos.addRange(range);
< /code>
сразу после "elemtodel.foreach (i => i.Remove ());" но это, похоже, не сработало. < /p>
Я также пытался: < /p>
h1.textContent = ' ';
Подробнее здесь: https://stackoverflow.com/questions/793 ... ment-in-h1
Мобильная версия