Не работает перенос строки JavaScript

Есть вот такой код.

document.addEventListener("DOMContentLoaded", function() {
  let text = "Привет меня зовут Гриша.\n Я иду в восьмой класс.";
  let index = 0;

  function type() {
    if (index < text.length) {
      document.getElementById("scene").textContent += text.charAt(index);
      index++;
      setTimeout(type, 100);
    }
  }

  type();
});
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  cursor: url("http://www.rw-designer.com/cursor-view/6921.png"), auto;
}

body {
  background: Black;
  font-family: Courier, monospace;
}

#scene {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  animation: Typing 0.75s step-end 1;
  color: red;
}

@keyframes blinkCursor {
  from {
    border-right-color: rgba(0, 0, 0, 0.75);
  }
  to {
    border-right-color: transparent;
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Печатающий текст.</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/style3.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
</head>

<body>
  <div id="scene">
  </div>
</body>

</html>

Почему то не переносится текст. Я предполагаю что проблема где-то в коде нежели то, что я ставлю \n. Пробывал br и то и то не работает. И все же почему?


Ответы (1 шт):

Автор решения: Grundy

По-умолчанию, при рендеринге html браузер заменяет все пробельные символы на пробел, если символов несколько подряд - выведется один пробел.

Чтобы изменить это поведение можно воспользоваться свойством white-space со значением pre.

document.addEventListener("DOMContentLoaded", function() {
  let text = "Привет меня зовут Гриша.\nЯ иду в восьмой класс.";
  let index = 0;

  function type() {
    if (index < text.length) {
      document.getElementById("scene").textContent += text.charAt(index);
      index++;
      setTimeout(type, 100);
    }
  }

  type();
});
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  cursor: url("http://www.rw-designer.com/cursor-view/6921.png"), auto;
}

body {
  background: Black;
  font-family: Courier, monospace;
}

#scene {
  position: absolute;
  width: 400px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  animation: Typing 0.75s step-end 1;
  color: red;
  white-space: pre;
}

@keyframes blinkCursor {
  from {
    border-right-color: rgba(0, 0, 0, 0.75);
  }
  to {
    border-right-color: transparent;
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Печатающий текст.</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/style3.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
</head>

<body>
  <div id="scene"></div>
</body>

</html>

→ Ссылка