Ящик тень вокруг закругленных углов?
Я использую библиотеку Twitter Bootstrap для быстрого создания прототипа.
Вот как выглядит мой макет в HTML:
<div class="navbar-messages container">
<div class="alert alert-info fade in">
<button class="close" data-dismiss="alert">×</button>
<strong>Awesomeness!</strong> You're pretty cool.
</div>
<div class="alert alert-error fade in">
<button class="close" data-dismiss="alert">×</button>
<strong>Awesomeness!</strong> You're pretty cool.
</div>
</div>
Вот что выглядит мой МЕНЬШЕ:
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;
}
Что действительно странно в том, что тень отбрасывания не изогнута вокруг изогнутых углов дочернего элемента:
![enter image description here]()
Как я могу сделать его правильно кривой вокруг углов?
Ответы
Ответ 1
В элементе div.navbar div.navbar-messages
отсутствуют закругленные углы, поэтому тень кажется квадратной. Как описано в его названии, box-shadow
рисует тень вокруг поля элемента, а не содержимое элемента, поэтому, если у самого окна нет закругленных углов, то и его тень не будет.
Вы можете попробовать применить те же стили border-radius
к div.navbar div.navbar-messages
, так что его тень будет кривой вокруг углов:
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;
}
Ответ 2
yep... просто поставьте радиус границы на div, который имеет тень. Удостоверьтесь, что значение border-radius соответствует значению объекта внутри div, и они будут правильно соответствовать.
Ответ 3
У меня есть это:
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;
}
Итак:
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
Это сработало для меня очень хорошо! Большое спасибо.