Нативный js реализует выпуск выражения смайликов в поле ввода

CSS

emoji表情
кодовый адрес вгитхаб-адрес

идеи реализации смайликов

  • Сначала на странице есть текстовое поле ввода, нажмите кнопку публикации и список смайликов.
  • Список смайликов на самом деле состоит из каждой картинки вместо смайликов.Здесь я использовал шесть картинок вместо шести смайликов.
  • Щелчок по каждому отдельному пакету выражений добавит соответствующий пакет выражений с атрибутами в поле ввода, например [стоя на коленях]
  • Затем, когда вы нажмете, чтобы опубликовать, выполните регулярное сопоставление каждого атрибута пакета смайликов и замените его соответствующим путем к изображению.
  • Здесь я столкнулся с проблемой, как сохранить пробел новой строки в поле ввода текста,
  • Я подумал о сопоставлении символов новой строки и пробелов с регулярными выражениями, а затем их замене.Позже я обнаружил, что есть свойство css, которое особенно легко использовать white-space:pre

Я думаю, что свойство white-space css очень полезно, я раньше не обращал на него особого внимания, но я просто использую его здесь.

  • Пустое пространство: стандартные значения по умолчанию, пробел будет игнорироваться браузером. Обычный представляет пространство слияния, несколько смежных пространств объединяются в пространство, а перенос в исходном коде используется в качестве обработки пространства, и выполняется только автоматический перенос в соответствии с размером контейнера. Пробел здесь представляет собой значение пустых символов, включая пробелы, такие как пробелы, табуляции и т. д. Для удобства представляет собой унифицированный «пробел».

пробел: nowrap не переносится

white-space:nowrap和normal一样,也合并空格,但是不会根据容器大小换行,表示不换行。
white-space:nowrap会导致文本不换行,经常和overflow,text-overflow一起使用

white-space:pre сохраняет пробелы без переноса

white-space:pre的作用是保持源码中的空格,有几个空格算几个空格显示,同时换行只认源码中的换行和<br/>标签。

white-space: pre-wrap сохраняет пробелы для переноса

white-space:pre-wrap的作用是保留空格,并且除了碰到源码中的换行和<br/>会换行外,还会自适应容器的边界进行换行。
white-space:pre-wrap和white-space:pre的区别就是会自适应容器的边界进行换行。

white-space: pre-line объединяет пробелы и переносы

white-space:pre-line的作用是合并空格,换行和white-space:pre-wrap一样,遇到源码中的换行和<br/>会换行,碰到容器的边界也会换
行。
свойство пробела исходное пространство Исходный код Сворачивать Обертывания границ контейнера
normal сливаться халатное отношение новая линия новая линия
nowrap сливаться халатное отношение новая линия без разрыва строки
pre резерв резерв новая линия без разрыва строки
pre-wrap резерв резерв новая линия новая линия
pre-line сливаться новая линия новая линия новая линия