Estou tentando usar o summernote com o django e estou encontrando esse problema: se eu colar 200 palavras de texto lorem ipsum embutido como teste no texfield, ele mostra o texto corretamente, mas em uma única linha que é muito grande e sai da tela para a direita.
Enquanto que se eu apenas colasse o lorem ipsum conforme codificado no modelo, a quebra de linha funcionaria perfeitamente.
Eu uso o tailwind aqui:
<div class="prose max-w-full break-words">
{{ post.content | safe }}
</div>
O campo de conteúdo é um campo de texto:
content = models.TextField()
Tentei adicionar a palavra-chave linebreaks e definir a quebra de linha para quebrar a palavra, mas não adiantou nada:
<div class="prose max-w-full break-words" style="word-wrap: break-word;">
{{ post.content | safe }}
</div>
Encapsulamento adequado de palavras longas
CSS -
overflow-wrap: break-word;
word-wrap
eoverflow-wrap
significam a mesma coisa.overflow-wrap
- Documentação MDNTailwindCSS v3 -
break-words
No TailwindCSS v3, o
break-words
utilitário inclui aoverflow-wrap: break-word;
configuração.Portanto, não há diferença entre escrever a solução diretamente no atributo de estilo CSS e usar o
break-words
utilitário.TailwindCSS v4 -
wrap-break-word
Exceto se você estiver usando a v4. Até a v3, algumas
overflow-wrap
propriedades eram agrupadas ilogicamente comword-break
, mas na v4 elas eram separadas; então o equivalente debreak-words
de versões anteriores agora éwrap-break-word
.Quebra de texto adequada
E quanto a textos longos? Por padrão, o CSS lida com quebra de texto, mas se você tiver substituído essa configuração anteriormente, o problema que você descreveu pode ocorrer. Felizmente, temos a opção de defini-lo corretamente novamente.
CSS -
white-space: normal;
Por padrão, essa configuração garante que textos longos sejam quebrados em várias linhas. No entanto, se você a substituiu no seu código, ela pode não estar mais em vigor.
white-space
- Documentação MDNTailwindCSS v3, v4 -
whitespace-normal
Nota : A partir da v4, é importante usar camadas. Se você colocar seu estilo padrão personalizado fora de uma camada, ele terá maior especificidade do que qualquer estilo TailwindCSS colocado dentro de uma camada, o que significa que o TailwindCSS não poderá substituir configurações sem camadas.
Eu separei o estilo CSS base do
@tailwindcss/typography
plugin. Você pode ler sobre quebra de linha e palavra aqui:Plug-in:
@tailwindcss/typography
A
prose
classe é um utilitário adicional deste plugin. Ela fornece estilo mais especializado para os filhos de elementos com aprose
classe.@tailwindcss/typography
- TailwindCSS v3@tailwindcss/typography
- TailwindCSS v4Para que funcione corretamente, você precisa passar HTML válido. No Django, é assim que deve ser feito:
safe
autoescape
Nota : No entanto, se o conteúdo for formatado, ou se você tiver estilos personalizados que substituam os estilos de prosa do TailwindCSS, podem surgir problemas. É uma boa ideia testá-lo em um ambiente separado e sem estilo. Se funcionar lá, o problema provavelmente está em seus próprios estilos, onde uma de suas regras é mais forte do que a Tipografia do TailwindCSS.