2009-09-23 10 views
6

Tôi muốn khoảng cách giữa các thẻ <p>content</p> của mình. Không phải trước và không sau <p> thẻ. Fx mã của tôi là:Tạo khoảng trắng giữa đoạn (x) html, css

<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <p>Some text</p> 
</div> 
Something 

Tôi không muốn khoảng trống giữa h1 và p được thực hiện với lề không trên h1. Nhưng tôi không muốn không gian sau thẻ <p> cuối cùng. Điều này có thể không có: con cuối cùng hoặc một số js/jQuery?

Tôi không thể đặt class = "last" trên thẻ cuối cùng vì nó là hệ thống CMS.

Trả lời

14
p + p { 
    margin-top: 1.5em; 
} 

(Mặc dù điều này đòi hỏi một trình duyệt với sự hỗ trợ tốt hơn cho CSS hơn IE6)

+2

cách nó * nên * được thực hiện – annakata

+0

Tốt, tôi sẽ thử điều đó. Tôi đang hướng tới IE7 +, Chrome, Safari 4+, FireFox 2+ –

+0

hoạt động hoàn hảo :) cảm ơn. –

0
<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <div class="paragraph-space"></div> 
    <p>Some text</p> 
</div> 

?

+0

Cảm ơn bạn đã trả lời nhưng tôi không thể kiểm soát văn bản theo cách đó. (CMS) –

2

Đặt lề dưới mặc định thành p, sau đó cung cấp thẻ cuối cùng cho một lớp không có lề dưới.

+0

cách an toàn của IE – annakata

+0

Tôi không thể làm điều đó vì văn bản được hiển thị bằng CMS. –

+0

OK, làm cách nào để đặt margin-top thành "div p" và margin-bottom phủ định thành "div h1"? – da5id

0
<div> 
    <h1>A headline</h1> 
    <p>Some text</p> 
    <p style="margin-bottom: 0;">Some text</p> 
</div> 
+0

Cảm ơn bạn đã trả lời nhưng tôi không thể kiểm soát văn bản theo cách đó. (CMS) –

4

Nếu bạn không yêu cầu hỗ trợ IE6 bạn có thể sử dụng:

div, h1, p { margin: 0; } 
p + p { margin-top: 12px; } 

Nếu bạn cần phải hỗ trợ IE6, đây là một hack bẩn nhưng nó hoạt động mà không có Javascript:

div, h1, p { margin: 0; } 
h1 { margin-bottom: -12px; } 
p { margin-top: 12px; } 

Điểm bất lợi của phương pháp này là bạn không thể đơn giản sử dụng, giả sử, 1em cho các lề cân bằng khi chúng có kích thước phông chữ khác nhau. Bạn có thể điều chỉnh thủ công theo yêu cầu hoặc sử dụng độ rộng pixel.

+0

Nhưng vấn đề với phương pháp cuối cùng là, nếu tôi có một danh sách sau h1 thì chúng sẽ nổi vào nhau. Tôi sẽ đi với IE7 +. –

+0

Nếu bạn có thể sử dụng IE7 + thì bạn sẽ được sắp xếp. Tôi chỉ chỉ ra điều này cho đầy đủ bởi vì nhiều người cần phải hỗ trợ IE6 vẫn còn (thật đáng buồn). – cletus

+0

Ngoài ra, điều đáng nói là tôi sẽ không đề nghị làm điều này cho tất cả các div. Tôi muốn kết hợp một lớp học để đưa vào div nơi bạn muốn làm điều này, nơi bạn biết định dạng của nội dung để tránh tình huống như bạn đề cập đến. Cùng một tiêu đề được theo dõi bởi vấn đề danh sách có cùng vấn đề với việc sử dụng công cụ chọn +. – cletus

0

Nếu bạn muốn làm cho nó duyệt hơn tương thích, bạn cũng có thể sử dụng:

p { margin-top: 24px; } 
h1 { margin-bottom: -24px; } // play with this value as necessary 

lề âm sẽ kéo các yếu tố về phía họ. It's messier hơn tôi thích, nhưng khi bạn đang ở lòng thương xót của CMS tạo ra mã không có cách nào để thêm các lớp học, bạn phải sáng tạo.

+0

Có, cletus cũng cho thấy điều này nhưng cảm ơn. –