Вам нужно иметь родительский div (A) с overflow:hidden;position:relative
и статической высотой или минимальной высотой.
Внутри этого родителя у вас есть дети div (B) с contenteditable="true"
и style="position:absolute;width:100%;left:0;top:0"
Высота div A должна быть как integer * line-height of div B
После этого вам нужно включить rangy и библиотеку jQuery
Связать с функцией события div B keyup {
Использовать rangy для создания в текущей позиции курсора пусто span
.
Получите offset (). Top из этого диапазона и сравните его с offset().top +
outerHeight()
из div A. Если сначала большое, то второе -> вам нужно прокрутить вниз div B.
Для прокрутки вниз просто измените ток css top
на += line-height of div B
Уничтожить пустой промежуток.
(если позиция курсора терпит неудачу -> вам необходимо предварительно сохранить его перед созданием диапазона и восстановить позицию курсора после уничтожения диапазона)
}
Также вам нужно эмулировать все с помощью клавиш со стрелками. В этом случае вам нужно создать селектор переключателя с event.which при включении в div B. Коды клавиш здесь .
Прокрутка, если позиция курсора выходит за пределы видимого диапазона в div A (алгоритм, аналогичный тому, что я написал выше)
Да, это не простой способ, но он работает