В первую очередь вам нужен div с атрибутом contenteditable.Вы можете установить данные внутри него, используя опасных по правилам prop в реагировать или setinnerhtml в обычном javascript.Вы сможете печатать внутри него и использовать событие onChanged для захвата изменений внутри div и создания стилей текста внутри этой функции
document.getElementById("inner").innerHTML = "Paragraph changed!";
#inner{background:yellow}
<!DOCTYPE html>
<html>
<body>
<div class="outer" contenteditable="true">This is a paragraph. <span id="inner"></span> Try to change this text.</div>
</body>
</html>