Es verdad que lo ideal es usar un <br> para hacer saltos de línea, lo más natural desde el punto de vista del HTML. Pero hay otras vías.
En CSS existe un atributo que te sirve para hacer más o menos las cosas que quieres, definiendo el comportamiento de los espacios en blanco y de los saltos de línea en el HTML.
El atributo se llama white-space y lo puedes usar para conseguir tus objetivos.
div {
white-space: pre-line;
}
Ese sería a mi modo de ver el valor del atributo white-space que estás necesitando.
El valor pre-line produce que el comportamiento de los saltos de línea y espacios en blanco en HTML sea igual que siempre estamos acostumbrandos, solo que los saltos de línea se tienen en cuenta, tal como tú necesitas.
Mírate también otros valores de white-space que igual te sirven mejor:
- normal: esto es el comportamiento normal del HTML
- nowrap: No se porducen saltos de línea en ningún caso, aunque las líneas sean demasiado largas.
- pre: Este es el comportamiento que tendría la etiqueta <pre>
- pre-line: Este comportamiento es el descrito anteriormente, los saltos de línea se tienen en cuenta y salvo eso, funciona igual que el HTML.
- pre-wrap: Este comportamiento sería el mismo que <pre> pero permite también saltos de línea cuando las líneas son muy grandes. A diferencia de pre-line, los espacios en blanco se tienen en cuenta también, como haría un <pre> normal.