Я занимаюсь разработкой веб-текстового редактора без каких-либо contentEditable
, textarea
или input
вещей. Самая большая часть моей работы - это измерение ширины текста с левой (правой) стороны от текущей позиции каретка и перемещение каретки в тексте.
Например, когда пользователь нажимает клавишу ВНИЗ, необходимо вычислить текущее левое смещение каретки и в строке ниже символа, положение которого наиболее похоже, должно быть найдено.
Один очень удобный способ сделать это - использовать один элемент DOM на символ - я могу просто посмотреть на свойство offsetLeft
. Кроме того, позиционирование каретки намного проще. На самом деле все проще.
Однако Я очень не уверен в последствиях для производительности . Я видел эту технику (или аналогичную), которая используется в некоторых веб-интерфейсах JavaScript "IDE", и там она прекрасно работает.
У вас есть какие-нибудь советы, подсказки?
Знаете ли вы какой-нибудь другой быстрый способ измерения ширины текста. Я не хочу помещать участки линии в элемент DOM и каждый раз измерять ее ширину, так как думаю, что это будет намного медленнее.
РЕДАКТИРОВАТЬ: Я в основном спрашиваю о главном факте существования многих элементов дом. Как сделать измерения это другое дело.