2013-08-03 32 views
14

Có lẽ kiến ​​thức CSS của tôi là có hạn, nhưng tôi không uderstand này:Đoạn bỏ qua phong cách vì một đoạn lồng nhau

<p style="color: green"> 
    <p style="color: red">This is red</p> 
    This should be green. But it's not. 
</p> 

Dòng thứ hai sẽ làm cho màu đen bỏ qua "color: green". Tại sao? Tôi đã thử nghiệm trong Chrome 28 và Firefox 22.

+3

Cũng cần lưu ý, bạn có thể đến gốc của sự cố nếu bạn đã kiểm tra kết quả trong trình duyệt. Các công cụ kiểm tra hiện có sẵn cho tất cả các trình duyệt chính. – Cthulhu

Trả lời

16

Bạn không thể lồng đoạn.

Đoạn là phần tử đóng tự động, </p> là tùy chọn - bất kỳ thành phần khối nào sẽ tự động đóng mở lần cuối <p>.

Đây là những gì đang xảy ra:

<p style="color: green"> 
</p> <!-- auto-closed paragraph --> 

<p style="color: red"> 
    This is red 
</p> 

This should be green. But it's not. 

</p> <!-- here you have syntax error --> 
+0

Cảm ơn! Tôi đã cố gắng làm tổ trong một đoạn với cùng một hiệu ứng. Có vẻ như các khoản tiền của đoạn đóng không chỉ với một đoạn văn mà bởi bất kỳ phần tử khối nào. Cũng cố gắng lồng một h1 vào h1 và kết quả cũng giống như với các đoạn văn. –

+1

Có, tôi đã thử quá và có vẻ như thế - bất kỳ phần tử khối ** nào đóng một đoạn văn. Hãy để tôi sửa câu trả lời. – MightyPork

5

Bạn không thể tổ <p> 's. Thẻ kết thúc của một đoạn có thể bị bỏ qua nếu nó được theo sau với một đoạn văn khác. Điều này có nghĩa là trong mã của bạn, đoạn đầu tiên không chứa văn bản, đoạn thứ hai chứa "Đây là màu đỏ". Sau đó, có một số văn bản "Điều này nên được màu xanh lá cây. Nhưng nó không phải." không có kiểu và thẻ đóng </p>, không có thẻ mở.

kiểm tra: http://www.w3.org/TR/html-markup/p.html

1

khoản không thể được lồng vào nhau trong vòng một yếu tố đoạn hoặc chặn.

Khi mã của bạn được trả lại trong trình duyệt nó được trả lại như như dưới đây

<p style="color: green"></p> 
    <p style="color: red"> 
     This is red 
    </p> 
    This should be green. But it's not. 
    <p></p> 

Vì vậy, bạn có thể thấy, không có wrapper để câu cuối cùng kết quả là mặc định css màu tức là màu đen đang được áp dụng trong vấn đề này.

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