Sinto que vi uma maneira, usando a propriedade CSS content, de inserir uma tag de quebra de linha antes de um elemento. Obviamente, isso não funciona:
#restart:before { content: '<br/>'; }
Mas como você faz isso?
Sinto que vi uma maneira, usando a propriedade CSS content, de inserir uma tag de quebra de linha antes de um elemento. Obviamente, isso não funciona:
#restart:before { content: '<br/>'; }
Mas como você faz isso?
Respostas:
É possível usar a \A
sequência de escape no conteúdo gerado pelo elemento psuedo. Leia mais na especificação CSS2.
#restart:before { content: '\A'; }
Você também pode precisar adicionar white-space:pre;
a #restart
.
Nota: \A
denota o final de uma linha.
ps Outro tratamento a ser
:before { content: ' '; display: block; }
#restart
também deve serdisplay: inline;
:before { content: ' '; display: block; }
.
inline-block
elementos. Eles simplesmente não vão para a próxima linha. A única solução foi realmente acrescentar um vazio <div></div>
no HTML.
Se #restart
for um elemento embutido (por exemplo <span>
, <em>
etc), você poderá transformá-lo em um elemento de bloco usando:
#restart { display: block; }
Isso terá o efeito de garantir uma quebra de linha antes e depois do elemento.
Não existe uma maneira de o CSS inserir algo que funciona como uma quebra de linha somente antes de um elemento e não depois. Talvez você possa causar uma quebra de linha antes como efeito colateral de outras alterações, por exemplo float: left
, ou clear: left
após um elemento flutuante, ou mesmo algo doido, #restart:before { content: 'a load of non-breaking spaces'; }
mas isso provavelmente não é uma boa ideia no caso geral.
float: left
elemento pode ser de alguma utilidade, pois eles se ajustam e começam em uma nova linha. Caso contrário, o que você deseja pode não ser possível.
Isso funciona para mim:
#restart:before {
content: ' ';
clear: right;
display: block;
}
Basta colocar um caractere de nova linha unicode no pseudo elemento anterior:
#restart:before { content: '\00000A'; }
O seguinte CSS funcionou para mim:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
Há duas razões pelas quais você não pode adicionar conteúdo gerado via CSS da maneira que desejar:
o conteúdo gerado aceita conteúdo e não marcação. A marcação não será avaliada, mas exibida apenas.
:before
e o :after
conteúdo gerado é adicionado dentro do elemento, portanto, mesmo adicionando um espaço ou letra e definindo-o como block
não funcionará.
Há um ::outside
pseudo elemento que pode fazer o que você deseja. No entanto, parece não haver suporte ao navegador. (Leia mais aqui: http://www.w3.org/TR/css3-content/#wrapping )
A melhor aposta é usar um pouco de jQuery aqui:
$('<br />').insertBefore('#restart');
Sim, totalmente factível, mas é definitivamente um hack total (as pessoas podem lhe dar uma aparência suja por escrever esse código).
Aqui está o HTML:
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
Aqui está o CSS:
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
Aqui está o violino: http://jsfiddle.net/AprNY/
Tente o seguinte:
#restart::before {
content: '';
display: block;
}
Não tive sorte em inserir uma quebra com: antes. Minha solução foi adicionar um intervalo com uma classe e colocar a pausa dentro do intervalo. Em seguida, mude a classe para exibir: none; ou exibir: bloqueie conforme necessário.
HTML
<div>
<span class="ItmQty"><br /></span>
<span class="otherclass">
<asp:Label ID="QuantityLabel" runat="server" Text="Qty: ">
</asp:Label>
</span>
<div class="cartqty">
<asp:TextBox ID="QuantityTextBox" runat="server" Text='<%# Bind("Quantity","{0:#}") %>' Width="50"></asp:TextBox>
</div>
</div>
CSS
@media only screen and (min-width: 854px)
{
.ProjItmQty
{
display: block;
clear: both;
}
}
@media only screen and (min-width: 1003px)
{
.ProjItmQty
{
display: none;
}
}
Espero que isto ajude.
Você pode preencher seu documento com <br>
tags e ativá-los \ off com css, como qualquer outro:
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
Você também pode usar a entidade HTML pré-codificada para uma quebra de linha
no seu conteúdo e isso terá o mesmo efeito.
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 O Proerty de conteúdo, "novas linhas" ... p não adicionará margem nem preenchimento no final de p dentro do bloco pai (por exemplo, corpo ›seção› p) A quebra de linha "\ A" força o espaço da linha, altura-estilo equivalente.
Adicione um margin-top:20px;
a #restart
. Ou qualquer diferença de tamanho que você considere apropriada. Se for um elemento em linha, você precisará adicionar display:block
ou, display:inline-block
embora eu não ache que inline-block
funcione em versões mais antigas do IE.
Em vez de adicionar manualmente uma quebra de linha de alguma forma, você pode implementar o border-bottom: 1px solid #ff0000
que assumirá a borda do elemento e renderizará apenas border-<side>
o lado que você especificar.
<br>
, não <hr>
.