2012-06-07 70 views
69

Có thể trong css thuần túy, nghĩa là không thêm thẻ html bổ sung, để ngắt dòng như <br>? Tôi muốn các ngắt dòng sau khi các yếu tố <h4>, nhưng không phải trước đây:Ngắt dòng (như <br>) chỉ sử dụng css

HTML

<li> 
    Text, text, text, text, text. <h4>Sub header</h4> 
    Text, text, text, text, text. 
</li> 

CSS

h4 { 
    display: inline; 
} 

Tôi đã tìm thấy rất nhiều câu hỏi như thế này, nhưng luôn luôn có câu trả lời như "sử dụng display: block; ", mà tôi không thể làm, khi <h4> phải ở trên cùng một dòng.

+0

Tại sao yếu tố này một h4? Tại sao bạn sử dụng nó ở một nơi như thế này? – toniedzwiedz

+0

Sự tò mò của chúng tôi, lý do bạn không muốn sử dụng
là gì? –

+1

Lý do: Tôi có rất nhiều yếu tố danh sách. Và tôi cũng tự hỏi liệu một giải pháp thanh lịch có tồn tại hay không. Nó thường không tốt đẹp để sử dụng thẻ br giữa các phần tử (và tôi thấy tiêu đề như là một phần tử của riêng nó) – Steeven

Trả lời

111

Nó hoạt động như thế này:

h4 { 
    display:inline; 
} 
h4:after { 
    content:"\a"; 
    white-space: pre; 
} 

Ví dụ: http://jsfiddle.net/Bb2d7/

Bí quyết xuất phát từ đây: https://stackoverflow.com/a/66000/509752 (có nhiều lời giải thích)

+1

Rất đẹp. \ A làm gì? – Steeven

+6

'\ a' có nghĩa là ngắt dòng, ký tự U + 000A và' khoảng trống trắng: trước cho các trình duyệt coi nó là một ngắt dòng trong hiển thị. –

+0

Được rồi, cảm ơn @ JukkaK.Korpela. Vậy tại sao nó không được kết xuất như một ngắt dòng ngay từ đầu? Mặc dù giải pháp này rất đơn giản, nó vẫn sẽ ghi đè các lệnh không gian trắng khác. – Steeven

2

Hãy thử

h4{ display:block;} 

trong css của bạn

http://jsfiddle.net/ZrJP6/

+1

cộng với một số sử dụng thận trọng của 'margin-bottom' sẽ đưa bạn đến đó. –

+3

Nhưng nếu tôi hiểu rõ, h4 phải ở trên cùng một dòng với văn bản trước đó. Với display: block, có một ngắt dòng trước h4. – adriantoine

+0

Cái gì? 'margin-bottom' sẽ đặt h4 ở cùng dòng với văn bản trước? – Steeven

2

Bạn có thể sử dụng ::after để tạo ra một khối -height 0px sau <h4>, mà hiệu quả di chuyển bất cứ điều gì sau khi <h4> đến dòng kế tiếp :

h4 { 
 
    display: inline; 
 
} 
 
h4::after { 
 
    content: ""; 
 
    display: block; 
 
}
<ul> 
 
    <li> 
 
    Text, text, text, text, text. <h4>Sub header</h4> 
 
    Text, text, text, text, text. 
 
    </li> 
 
</ul>

Các vấn đề liên quan