2012-06-13 33 views
10

Tôi có bố cục nơi tất cả nội dung trang nằm trong một hộp có các góc tròn. Điều này bao gồm tiêu đề của trang, v.v. Tôi có phần tử div chứa nội dung tiêu đề, div chứa nội dung chính của trang và div có chứa chân trang. Vấn đề của tôi là: Vì biên giới của "tiêu đề" của tôi div không được làm tròn, "vùng chứa" lớn div dường như không được làm tròn ở trên cùng. Tôi đã điều tra và chỉ ra rằng đây chỉ đơn giản là tiêu đề "div tự chồng lên" vùng chứa "div. Tôi có một ví dụ ở đây: http://jsfiddle.net/V98h7/.Biên giới bán kính không ảnh hưởng đến các yếu tố bên trong

Tôi đã thử làm tròn đường viền của "tiêu đề" div ở cùng một mức độ, nhưng điều này tạo ra một khiếm khuyết nhỏ trên biên giới (nó có viền của riêng nó, màu nền của tiêu đề "div) . Trong tuyệt vọng, tôi cũng đã thử đặt chỉ mục z của vùng chứa thành một số lớn. Điều đó không làm gì cả.

Tôi cảm thấy rằng cần có một giải pháp đơn giản cho vấn đề này. Tôi không muốn sửa javascript. Tôi thích CSS hơn, nhưng LESS cũng ổn.

+0

Hãy nhớ rằng LESS chỉ là một bộ tiền xử lý cho CSS. Tại sao lại nhắc đến LESS nếu cả hai ngôn ngữ đều mạnh mẽ như nhau? – Mitja

Trả lời

31

Đây là fiddle - http://jsfiddle.net/ashwyn/V98h7/2/

Add -

#outer { 
    overflow:hidden 
} 

và nó sẽ làm việc.

+0

Đây là những gì tôi đang tìm kiếm. Tôi sẽ thử nó! – diracdeltafunk

+0

Thực ra gần đây tôi đã gặp vấn đề này. Cảm ơn. – Ashwin

+0

Hmmm ...đây là một cái gì đó kỳ lạ. Tôi đang nhận được một bó của không gian giữa div tiêu đề của tôi và đầu div bên ngoài. cụ thể là, khu vực nơi bán kính bắt đầu – diracdeltafunk

0

đây là bản cập nhật jsfiddle

http://jsfiddle.net/V98h7/1/

Để chỉ góc biên giới vòng border-radius có thể mất 4 giá trị TOP-LEFT RADIUSTOP-RIGHT RADIUSBOTTOM-RIGHT RADIUSBOTTOM-LEFT-RADIUS

nên border-radius: 20px 20px 0 0; sẽ tròn div bên trong của bạn từ đầu. Hãy nhớ sử dụng cùng một giá trị bán kính như giá trị của div cha, nếu không bạn sẽ thấy một số đường viền phụ.

+0

Như tôi đã nói trong bài viết của tôi, điều này gây ra ổn định trong một số trình duyệt. – diracdeltafunk

+0

Bạn có thể cho biết trình duyệt nào cũng sẽ giúp tôi thử nghiệm hay không. Đang sử dụng cùng một mã nhiều nơi trong các dự án của tôi. – Rishabh

+0

Trong Chrome, tôi thấy lỗi này rất nhiều. Nó rất nhẹ, nhưng hiện tại. – diracdeltafunk

-1

Hãy thử cho div chứa một bán kính đường viền lớn hơn một chút (trên hai góc trên cùng) so với div tiêu đề.

+0

Ý tưởng hay, tôi sẽ kiểm tra. – diracdeltafunk

1

Sử dụng này:

#outer { overflow: hidden; } 

hay này:

#inner1 { 
    border-top-left-radius: 20px; 
    border-top-right-radius: 20px; 
} 

Hoặc bạn có lẽ có thể thử này:

#outer div:first { 
    border-top-left-radius: 20px; 
    border-top-right-radius: 20px; 
} 

(Lưu ý: Tôi đã không kiểm tra tùy chọn cuối cùng trên).

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