2012-05-13 41 views
12

Tôi đang sử dụng thư viện Bootstrap của Twitter để nhanh chóng ném một mẫu thử nghiệm.Bóng hộp xung quanh các góc tròn?

Đây là những gì bố trí của tôi trông giống như trong HTML:

<div class="navbar-messages container"> 
    <div class="alert alert-info fade in"> 
     <button class="close" data-dismiss="alert">&times;</button> 
     <strong>Awesomeness!</strong> You're pretty cool. 
    </div> 
    <div class="alert alert-error fade in"> 
     <button class="close" data-dismiss="alert">&times;</button> 
     <strong>Awesomeness!</strong> You're pretty cool. 
    </div> 
</div> 

Đây là những gì có vẻ ít tôi như:

div.navbar div.navbar-messages { 
    .drop-shadow(1px 1px 10px 1px rgba(0, 0, 0, 0.2)); 

    div.alert { 
     -webkit-border-radius: 0px; 
     -moz-border-radius: 0px; 
     border-radius: 0px; 

     margin-bottom: 0px; 

     &:last-child { 
      -webkit-border-bottom-right-radius: 4px; 
      -webkit-border-bottom-left-radius: 4px; 
      -moz-border-radius-bottomright: 4px; 
      -moz-border-radius-bottomleft: 4px; 
      border-bottom-right-radius: 4px; 
      border-bottom-left-radius: 4px; 
     } 
    } 
} 

.drop-shadow(@params) { 
    -moz-box-shadow: @params; 
    -webkit-box-shadow: @params; 
    box-shadow: @params; 
} 

Điều thực sự kỳ lạ là các hiệu ứng bóng đổ không được uốn cong xung quanh các yếu tố của con các góc cong:

enter image description here

Cách thức Tôi có thể làm cho nó cong quanh các góc không?

+0

tăng số bóng của hộp – Bongs

+1

Có thể có một nền gradient phía sau nút không bị cắt bởi bán kính đường viền? Tôi không thể tái tạo vấn đề bằng cách sử dụng mã bạn đã đưa ra trong câu hỏi, xem [this jsfiddle] (http://jsfiddle.net/53kDh/1/). (Thử nghiệm trong FF và IE9, bạn không đề cập đến một trình duyệt cụ thể trong câu hỏi của bạn.) – Jeroen

+0

@Jeroen: Fiddle của bạn không khớp với mã ở đây. Trong câu hỏi này, bóng của hộp nằm trên phần tử cha. Trong fiddle của bạn, bóng hộp chỉ áp dụng cho các phần tử 'div.alert'. – BoltClock

Trả lời

22

Phần tử div.navbar div.navbar-messages thiếu góc tròn, do đó bóng sẽ xuất hiện hình vuông. Như được mô tả bằng tên của nó, box-shadow vẽ một bóng xung quanh hộp của phần tử và không phải là nội dung của phần tử, vì vậy nếu chính hộp đó không có góc tròn, thì bóng sẽ không bị bóng.

Bạn có thể thử áp dụng cùng border-radius phong cách để div.navbar div.navbar-messages là tốt, vì thế cái bóng của nó sẽ làm cong xung quanh các góc:

div.navbar div.navbar-messages { 
    .drop-shadow(1px 1px 10px 1px rgba(0, 0, 0, 0.2)); 
    .rounded-bottom-corners(4px); 

    div.alert { 
     -webkit-border-radius: 0px; 
     -moz-border-radius: 0px; 
     border-radius: 0px; 

     margin-bottom: 0px; 

     &:last-child { 
      .rounded-bottom-corners(4px); 
     } 
    } 
} 

.drop-shadow(@params) { 
    -moz-box-shadow: @params; 
    -webkit-box-shadow: @params; 
    box-shadow: @params; 
} 

.rounded-bottom-corners(@params) { 
    -webkit-border-bottom-right-radius: @params; 
    -webkit-border-bottom-left-radius: @params; 
    -moz-border-radius-bottomright: @params; 
    -moz-border-radius-bottomleft: @params; 
    border-bottom-right-radius: @params; 
    border-bottom-left-radius: @params; 
} 
+0

Tôi nhận thấy bạn đang chuyển params vào ví dụ css của bạn. Tôi đã tìm kiếm nhanh và không tìm thấy gì hữu ích. Đây có phải là bằng chứng về khái niệm hoặc thực sự là điều bạn có thể làm? – Jacksonkr

+2

@Jackson: Đó là tính năng LESS. Tôi chỉ nhận thấy bây giờ rằng câu hỏi không được gắn thẻ [ít], vì vậy tôi đã thêm vào đó. Bạn có thể đọc về nó ở đây: http://lesscss.org/#-parametric-mixins – BoltClock

0

vâng ... chỉ cần đặt một border-radius trên div có cái bóng . Đảm bảo giá trị bán kính đường viền khớp với giá trị của đối tượng bên trong div và chúng sẽ khớp đúng cách.

0

Tôi có điều này:

blockquote { 
    border: none; 
    font-style: italic; 
    font-size: 20px; 
    line-height: 40px; 
    font-weight: 300; 
    padding: 0; 
    margin: 30px 0; 
    text-shadow: 0 1px 1px #666666; 
    background: rgba(255,255, 255, 0.4); 
    box-shadow: 0px 0.5px 1px #888888; 
    padding-left: 10px; 
    -webkit-border-radius: 6px; 
    -moz-border-radius: 6px; 
    border-radius: 6px; 
} 

Vì vậy:

-webkit-border-radius: 6px; 
     -moz-border-radius: 6px; 
     border-radius: 6px; 

Đó làm việc cho tôi khá tốt! Cảm ơn rất nhiều.

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