Как изменить вес шрифта для каждой буквы, набранной javascript

У меня есть этот переменный шрифт, который я сделал, и я хочу реализовать его на веб-сайте, где, когда пользователь вводит, вес шрифта для каждой буквы увеличивается. У меня есть этот код прямо сейчас, что он растет для всего набранного текста, но там меняется все, а не каждая буква (поэтому мне нужен код, чтобы сказать, что для каждого нажатия клавиши изменяется вес шрифта, но не весь текст, поэтому первый набранная буква будет иметь меньший вес шрифта и останется таким, но следующие буквы будут увеличиваться в весе шрифта). Заранее спасибо всем, кто может помочь, я действительно новичок в этом!

<p id="testarea" contentEditable="true">
   Type your text hereeeeeeeeeee
</p>

<button type="button" onclick="myFunction2()">uncensour</button>

<script>
   document.getElementById("testarea").onkeypress = function () { 
   myFunction() }
   document.getElementById("testarea").addEventListener("input", myFunction);
   var initWeight = 101;
   function myFunction() {
      document.getElementById("testarea").style.fontWeight = initWeight++ ;
   }
   function myFunction2() {
      document.getElementById("testarea").style.fontWeight = "101";
   }


   function myFunction2() {
      document.getElementById("testarea").style.fontWeight = "101";
   }
</script>

person Hanna Hofmann    schedule 14.07.2020    source источник


Ответы (1)


Насколько мне известно, к сожалению, нет реального способа стилизовать отдельные символы в одном и том же элементе. Поэтому вам, вероятно, нужно разделить набранный текст на отдельные символы и обернуть их в элемент (например, Span). Таким образом, у вас есть каждый персонаж в отдельном элементе, который вы можете индивидуально стилизовать. Для этого вам нужно немного JS и, вероятно, следует просто поиграть с этими подходами, пока вы не будете счастливы.

Посмотрите эту тему здесь, например, 2-й ответ может стать для вас хорошим началом:

Динамическое применение CSS к отдельным символам?

Это может помочь вам найти решение, соответствующее вашим ожиданиям.

person Warden330    schedule 14.07.2020