Siento que vi una manera, usando la propiedad de contenido CSS, para insertar una etiqueta de salto de línea antes de un elemento. Obviamente esto no funciona:
#restart:before { content: '<br/>'; }
¿Pero cómo haces esto?
Siento que vi una manera, usando la propiedad de contenido CSS, para insertar una etiqueta de salto de línea antes de un elemento. Obviamente esto no funciona:
#restart:before { content: '<br/>'; }
¿Pero cómo haces esto?
Respuestas:
Es posible usar la \A
secuencia de escape en el contenido generado por el elemento psuedo. Lea más en la especificación CSS2.
#restart:before { content: '\A'; }
También es posible que deba agregar white-space:pre;
a #restart
.
nota: \A
denota el final de una línea.
ps Otro tratamiento para ser
:before { content: ' '; display: block; }
#restart
también debe serlodisplay: inline;
:before { content: ' '; display: block; }
.
inline-block
elementos. Simplemente no irán a la siguiente línea. La única solución era agregar realmente un vacío <div></div>
en el HTML.
Si #restart
es un elemento en línea (por ejemplo <span>
, <em>
etc.), puede convertirlo en un elemento de bloque usando:
#restart { display: block; }
Esto tendrá el efecto de garantizar un salto de línea tanto antes como después del elemento.
No hay forma de que CSS inserte algo que actúe como un salto de línea solo antes de un elemento y no después. Tal vez podría causar un salto de línea antes como efecto secundario de otros cambios, por ejemplo float: left
, o clear: left
después de un elemento flotante, o incluso algo loco, #restart:before { content: 'a load of non-breaking spaces'; }
pero probablemente no sea una buena idea en el caso general.
float: left
elemento puede ser útil, ya que se ajustan y comienzan en una nueva línea. De lo contrario, lo que desea puede no ser posible.
Esto funciona para mi:
#restart:before {
content: ' ';
clear: right;
display: block;
}
Simplemente coloque un carácter de nueva línea Unicode dentro del pseudo elemento anterior:
#restart:before { content: '\00000A'; }
El siguiente CSS funcionó para mí:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
Hay dos razones por las que no puede agregar contenido generado a través de CSS de la manera que desee:
el contenido generado acepta contenido y no marcado. El marcado no se evaluará sino que solo se mostrará.
:before
y el :after
contenido generado se agrega dentro del elemento, por lo que incluso agregar un espacio o letra y definirlo como block
no funcionará.
Hay un ::outside
pseudo elemento que puede hacer lo que quieras. Sin embargo, parece que no hay soporte para el navegador. (Lea más aquí: http://www.w3.org/TR/css3-content/#wrapping )
La mejor apuesta es usar un poco de jQuery aquí:
$('<br />').insertBefore('#restart');
Sí, totalmente factible, pero definitivamente es un truco total (las personas pueden parecer sucias para escribir dicho código).
Aquí está el HTML:
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
Aquí está el CSS:
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
Aquí está el violín: http://jsfiddle.net/AprNY/
Intenta lo siguiente:
#restart::before {
content: '';
display: block;
}
No tuve suerte en absoluto al insertar un descanso con: antes. Mi solución fue agregar un lapso con una clase y poner el descanso dentro del lapso. Luego cambie la clase a mostrar: ninguna; o pantalla: bloquear según sea necesario.
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 esto ayude.
Puede llenar su documento con <br>
etiquetas y activarlas / desactivarlas con CSS como cualquier otra:
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
También puede usar la entidad HTML precodificada para un salto de línea
en su contenido y tendrá el mismo efecto.
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 The Content Proerty, "newlines" ... p no agregará margen ni relleno al final de p dentro del bloque padre (por ejemplo, cuerpo ›sección› pags). El salto de línea "\ A" fuerza el espacio de línea, altura de línea de estilo equivalente.
Añadir un margin-top:20px;
a #restart
. O cualquier diferencia de tamaño que considere apropiada. Si es un elemento en línea, tendrá que agregarlo display:block
o, display:inline-block
aunque no creo que inline-block
funcione en versiones anteriores de IE.
En lugar de agregar manualmente un salto de línea de alguna manera, puede implementar un implemento border-bottom: 1px solid #ff0000
que tomará el borde del elemento y solo se representará border-<side>
del lado que especifique.
<br>
, no <hr>
.