Мне кажется, что я нашел способ, используя свойство содержимого CSS, вставить тег разрыва строки перед элементом. Очевидно, это не работает:
#restart:before { content: '<br/>'; }
Но как ты это делаешь?
Мне кажется, что я нашел способ, используя свойство содержимого CSS, вставить тег разрыва строки перед элементом. Очевидно, это не работает:
#restart:before { content: '<br/>'; }
Но как ты это делаешь?
Ответы:
Это возможно с помощью \A
escape-последовательности в сгенерированном контентом psuedo-element. Подробнее читайте в спецификации CSS2.
#restart:before { content: '\A'; }
Вам также может понадобиться добавить white-space:pre;
в #restart
.
примечание: \A
обозначает конец строки.
ps Еще одна процедура, которая будет
:before { content: ' '; display: block; }
#restart
должно бытьdisplay: inline;
:before { content: ' '; display: block; }
вместо этого.
inline-block
элементами. Они просто не пойдут на следующую строку. Единственным выходом было добавить пустую строку <div></div>
в HTML.
Если #restart
это встроенный элемент (например <span>
, и <em>
т. Д.), То вы можете превратить его в блочный элемент, используя:
#restart { display: block; }
Это обеспечит разрыв строки как до, так и после элемента.
Не существует способа, чтобы CSS вставлял что-то, что действует как разрыв строки только перед элементом, а не после. Возможно, вы могли бы вызвать разрыв строки до, как побочный эффект других изменений, например float: left
, или clear: left
после плавающего элемента, или даже чего-то сумасшедшего, #restart:before { content: 'a load of non-breaking spaces'; }
но это, вероятно, не очень хорошая идея в общем случае.
float: left
Элемент может быть полезна, так как они сжимаются к приступу и начать новую строку. В противном случае то, что вы хотите, может оказаться невозможным.
Это работает для меня:
#restart:before {
content: ' ';
clear: right;
display: block;
}
Просто поместите символ перевода строки в юникоде внутри псевдоэлемента before:
#restart:before { content: '\00000A'; }
Следующий CSS работал для меня:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
Есть две причины, по которым вы не можете добавлять сгенерированный контент через CSS так, как вам хочется:
сгенерированный контент принимает контент, а не разметку. Разметка не будет оцениваться, а будет отображаться только.
:before
и :after
сгенерированный контент добавляется внутри элемента, поэтому даже добавление пробела или буквы и определение его как block
не будет работать.
Существует ::outside
псевдоэлемент, который может делать то, что вы хотите. Тем не менее, похоже, нет поддержки браузера. (Подробнее читайте здесь: http://www.w3.org/TR/css3-content/#wrapping )
Лучше всего использовать JQuery здесь:
$('<br />').insertBefore('#restart');
Да, вполне выполнимо, но это определенно полный взлом (люди могут испортить вам внешний вид написания такого кода).
Вот HTML-код:
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
Вот CSS:
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
Вот скрипка: http://jsfiddle.net/AprNY/
Попробуйте следующее:
#restart::before {
content: '';
display: block;
}
Мне совсем не повезло, вставив разрыв с: before. Мое решение состояло в том, чтобы добавить промежуток с классом и поместить разрыв в промежуток. Затем измените класс для отображения: нет; или отобразить: заблокировать при необходимости.
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;
}
}
Надеюсь это поможет.
Вы можете заполнить свой документ <br>
тегами и включить / выключить их с помощью css, как и любые другие:
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
Вы также можете использовать предварительно закодированный объект HTML для разрыва строки
в вашем контенте, и он будет иметь тот же эффект.
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 Content Proerty, "newlines" ... p не будет добавлять поля или отступы в конце p внутри родительского блока (например, body ›section› п). "\ A" разрыв строки приводит к пробелу строки, эквивалентному стилизованной высоте строки.
Добавить margin-top:20px;
к #restart
. Или любой другой размер, который вы считаете подходящим. Если это встроенный элемент, который вам нужно добавить, display:block
или display:inline-block
хотя я не думаю, что он inline-block
работает на более старых версиях IE.
Вместо того, чтобы как-то вручную добавлять разрыв строки, вы можете сделать реализацию, border-bottom: 1px solid #ff0000
которая будет принимать границу элемента и отображать только border-<side>
ту сторону, которую вы укажете.
<br>
, а не <hr>
.