Tôi cảm thấy như tôi đã thấy một cách, sử dụng thuộc tính nội dung CSS, để chèn thẻ ngắt dòng trước một phần tử. Rõ ràng điều này không hoạt động:
#restart:before { content: '<br/>'; }
Nhưng làm thế nào để bạn làm điều này?
Tôi cảm thấy như tôi đã thấy một cách, sử dụng thuộc tính nội dung CSS, để chèn thẻ ngắt dòng trước một phần tử. Rõ ràng điều này không hoạt động:
#restart:before { content: '<br/>'; }
Nhưng làm thế nào để bạn làm điều này?
Câu trả lời:
Có thể sử dụng \A
chuỗi thoát trong nội dung được tạo bởi phần tử psuedo. Đọc thêm trong thông số CSS2.
#restart:before { content: '\A'; }
Bạn cũng có thể cần phải thêm white-space:pre;
vào #restart
.
lưu ý: \A
biểu thị sự kết thúc của một dòng.
ps Một cách điều trị khác
:before { content: ' '; display: block; }
#restart
cũng phải như vậydisplay: inline;
:before { content: ' '; display: block; }
thay thế.
inline-block
các yếu tố. Họ chỉ đơn giản là sẽ không đi vào dòng tiếp theo. Giải pháp duy nhất là thực sự nối thêm một khoảng trống <div></div>
trong HTML.
Nếu #restart
là một yếu tố nội tuyến (ví dụ <span>
, <em>
vv) sau đó bạn có thể biến nó thành một yếu tố ngăn chặn sử dụng:
#restart { display: block; }
Điều này sẽ có tác dụng đảm bảo ngắt dòng cả trước và sau phần tử.
Không có cách nào để CSS chèn thứ gì đó hoạt động như ngắt dòng chỉ trước một phần tử chứ không phải sau đó. Bạn có thể có thể gây ra ngắt dòng trước đây như là một tác dụng phụ của các thay đổi khác, ví dụ float: left
, hoặc clear: left
sau một yếu tố nổi, hoặc thậm chí là một thứ gì đó điên rồ như thế #restart:before { content: 'a load of non-breaking spaces'; }
nhưng đây có lẽ không phải là một ý tưởng hay trong trường hợp chung.
float: left
yếu tố có thể được sử dụng, vì chúng co lại để phù hợp và bắt đầu trên một dòng mới. Nếu không, những gì bạn muốn có thể không thể.
Điều này làm việc cho tôi:
#restart:before {
content: ' ';
clear: right;
display: block;
}
Chỉ cần đặt một ký tự dòng mới unicode trong phần tử giả trước:
#restart:before { content: '\00000A'; }
Theo dõi CSS làm việc cho tôi:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
Có hai lý do khiến bạn không thể thêm nội dung được tạo qua CSS theo cách bạn muốn:
nội dung được tạo ra chấp nhận nội dung và không đánh dấu. Đánh dấu sẽ không được đánh giá mà chỉ hiển thị.
:before
và :after
nội dung được tạo được thêm vào trong phần tử, do đó, thậm chí thêm một khoảng trắng hoặc chữ cái và xác định nó là block
sẽ không hoạt động.
Có một ::outside
yếu tố giả có thể làm những gì bạn muốn. Tuy nhiên, dường như không có hỗ trợ trình duyệt. (Đọc thêm tại đây: http://www.w3.org/TR/css3-content/#wrapping )
Đặt cược tốt nhất là sử dụng một chút jQuery ở đây:
$('<br />').insertBefore('#restart');
Vâng, hoàn toàn có thể làm được nhưng nó chắc chắn là một vụ hack hoàn toàn (mọi người có thể cho bạn vẻ ngoài bẩn thỉu khi viết mã như vậy).
Đây là HTML:
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
Đây là CSS:
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
Đây là câu đố: http://jsfiddle.net/AprNY/
Hãy thử như sau:
#restart::before {
content: '';
display: block;
}
Tôi không có chút may mắn nào với việc nghỉ ngơi với: trước đây. Giải pháp của tôi là thêm một khoảng với một lớp và đặt dấu ngắt bên trong khoảng đó. Sau đó thay đổi lớp để hiển thị: none; hoặc hiển thị: chặn khi cần thiết.
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;
}
}
Hi vọng điêu nay co ich.
Bạn có thể điền tài liệu của mình bằng <br>
các thẻ và bật chúng lên \ off với css giống như bất kỳ tài liệu nào khác:
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
Bạn cũng có thể sử dụng thực thể HTML được mã hóa trước để ngắt dòng
trong nội dung của mình và nó sẽ có tác dụng tương tự.
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 Nội dung Proerty, "newlines" ... p sẽ không thêm lề cũng như đệm ở cuối p trong khối cha mẹ (ví dụ: phần cơ thể cách ly p). "\ A" phá vỡ không gian dòng, chiều cao dòng tương đương.
Thêm một margin-top:20px;
để #restart
. Hoặc bất kỳ khoảng cách kích thước bạn cảm thấy là phù hợp. Nếu đó là một yếu tố nội tuyến, bạn sẽ phải thêm display:block
hoặc display:inline-block
mặc dù tôi không nghĩ rằng nó inline-block
hoạt động trên các phiên bản IE cũ hơn.
Thay vì thêm thủ công ngắt dòng bằng cách nào đó, bạn có thể thực hiện border-bottom: 1px solid #ff0000
sẽ lấy đường viền của phần tử và chỉ hiển thị border-<side>
bất kỳ phía nào bạn chỉ định.
<br>
, không <hr>
.