Wydaje mi się, że znalazłem sposób, używając właściwości CSS content, aby wstawić znacznik końca wiersza przed elementem. Oczywiście to nie działa:
#restart:before { content: '<br/>'; }
Ale jak to robisz?
Wydaje mi się, że znalazłem sposób, używając właściwości CSS content, aby wstawić znacznik końca wiersza przed elementem. Oczywiście to nie działa:
#restart:before { content: '<br/>'; }
Ale jak to robisz?
Odpowiedzi:
Jest to możliwe przy użyciu \A sekwencji ucieczki w treści generowanej przez element pseudo. Przeczytaj więcej w specyfikacji CSS2.
#restart:before { content: '\A'; }
Konieczne może być również dodanie white-space:pre;do #restart.
uwaga: \Aoznacza koniec wiersza.
ps Kolejny zabieg
:before { content: ' '; display: block; }
#restartmusi też byćdisplay: inline;
:before { content: ' '; display: block; }zamiast tego użyłem .
inline-blockelementami. Po prostu nie przejdą do następnej linii. Jedynym rozwiązaniem było dołączenie pustego miejsca <div></div>w kodzie HTML.
Jeśli #restartjest to element inline (np <span>, <em>etc), a następnie można przekształcić go w elemencie bloku przy użyciu:
#restart { display: block; }
Będzie to miało wpływ na zapewnienie przerwania linii zarówno przed, jak i za elementem.
Nie ma sposobu, aby CSS wstawił coś, co działa jak znak końca wiersza tylko przed elementem, a nie po nim. Być może możesz spowodować przerwanie wiersza wcześniej jako efekt uboczny innych zmian, na przykład float: leftlub clear: leftpo elemencie pływającym, a nawet coś szalonego, #restart:before { content: 'a load of non-breaking spaces'; }ale prawdopodobnie nie jest to dobry pomysł w ogólnym przypadku.
float: leftElementem może się przydać, ponieważ kurczą się do montażu i uruchomienia na nową linię. W przeciwnym razie to, czego chcesz, może nie być możliwe.
To działa dla mnie:
#restart:before {
content: ' ';
clear: right;
display: block;
}
Po prostu umieść znak nowej linii Unicode w pseudo elemencie przed:
#restart:before { content: '\00000A'; }
Następujące CSS zadziałały dla mnie:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
Istnieją dwa powody, dla których nie możesz dodawać wygenerowanej treści za pośrednictwem CSS w sposób, w jaki chcesz:
generowana treść akceptuje treść, a nie znaczniki. Znaczniki nie będą oceniane, ale tylko wyświetlane.
:beforea :afterwygenerowana treść jest dodawana do elementu, więc nawet dodanie spacji lub litery i zdefiniowanie jej jako blocknie zadziała.
Istnieje ::outsidepseudoelement, który może zrobić, co chcesz. Wydaje się jednak, że nie ma obsługi przeglądarki. (Przeczytaj więcej tutaj: http://www.w3.org/TR/css3-content/#wrapping )
Najlepiej jest użyć tutaj trochę jQuery:
$('<br />').insertBefore('#restart');
Tak, całkowicie wykonalne, ale zdecydowanie jest to totalny hack (ludzie mogą patrzeć na ciebie nieprzyzwoicie przy pisaniu takiego kodu).
Oto kod HTML:
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
Oto CSS:
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
Oto skrzypce: http://jsfiddle.net/AprNY/
Spróbuj wykonać następujące czynności:
#restart::before {
content: '';
display: block;
}
W ogóle nie miałem szczęścia wstawiać przerwy z: przed. Moim rozwiązaniem było dodanie zakresu z klasą i wstawienie przerwy wewnątrz rozpiętości. Następnie zmień klasę, aby wyświetlić: none; lub wyświetl: blokuj w razie potrzeby.
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;
}
}
Mam nadzieję że to pomoże.
Możesz wypełnić dokument <br>tagami i włączyć je \ wyłączyć za pomocą CSS, tak jak wszystkie inne:
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
Możesz również użyć wstępnie zakodowanej encji HTML do podziału wiersza w treści i będzie to miało ten sam efekt.
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 Content Proerty, „nowe linie” ... p nie doda marginesu ani dopełnienia na końcu p wewnątrz bloku nadrzędnego (np. sekcja ›treści› p). „\ A” łamanie linii wymusza odstęp linii, równoważną stylizowaną wysokość linii.
Dodaj margin-top:20px;do #restart. Lub jakakolwiek luka wielkości, którą uważasz za odpowiednią. Jeśli jest to element inline, musisz go dodać display:blocklub display:inline-blockchociaż nie sądzę, że inline-blockdziała na starszych wersjach IE.
Zamiast w jakiś sposób ręcznie dodawać znak border-bottom: 1px solid #ff0000końca wiersza, możesz wykonać implementację, która weźmie obramowanie elementu i renderuje tylko border-<side>określoną stronę.
<br>, nie <hr>.