Добавление теней ящика в: после псевдоэлемента
У меня есть div с именем .testimonial-inner
и с использованием псевдоэлемента :after
у меня есть стрелка, которая находится под ней, указывая вниз. Проблема, с которой я столкнулась, заключается в добавлении тени для ящика, чтобы они выглядели как один естественный элемент.
Без box-shadow
в треугольнике:
![enter image description here]()
body {
background: #eee
}
.testimonial-inner {
background: #fff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
padding: 30px;
display: block;
margin-bottom: 25px;
position: relative;
-webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.25);
-moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.25);
box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);
}
.testimonial-inner:after {
top: 100%;
left: 48px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(255, 255, 255, 0);
border-top-color: #fff;
border-width: 18px;
margin-left: -18px;
}
<div class="c-4 testimonial-wrap">
<div class="testimonial-inner">
<p>Using Facebook was unquestionably the best decision I could possibly have made at the point in my journalistic journey. It enabled me to share my fears, frustrations as well as successes.</p>
</div>
</div>
Ответы
Ответ 1
Вы можете добавить другое: псевдоэлемент, повернуть его на 45deg
и добавить box-shadow
к нему.
Обновлено Fiddle
body {
background: #eee
}
.testimonial-inner {
background: #fff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
padding: 30px;
display: block;
margin-bottom: 25px;
position: relative;
box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);
}
.testimonial-inner:after {
top: 100%;
left: 48px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(255, 255, 255, 0);
border-top-color: #fff;
border-width: 18px;
margin-left: -18px;
}
.testimonial-inner:before {
content: '';
position: absolute;
transform: rotate(45deg);
width: 36px;
height: 36px;
bottom: -12px;
z-index: -1;
box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);
}
<div class="c-4 testimonial-wrap">
<div class="testimonial-inner">
<p>Using Facebook was unquestionably the best decision I could possibly have made at the point in my journalistic journey. It enabled me to share my fears, frustrations as well as successes.</p>
</div>
</div>
Ответ 2
Фильтр будет работать:
.shadowed {
-webkit-filter: drop-shadow(0px 2px 2px rgba(130,130,130,1));
filter : drop-shadow(0px 2px 2px rgba(130,130,130,1));
-ms-filter : "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
filter : "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
}
![enter image description here]()
Рабочий пример: http://codepen.io/tolmark12/pen/JopNeR?editors=110
Подробнее читайте в: Создание истинной тени для трансфера браузера
Ответ 3
ИМХО, я думаю, что это немного хакерское, но использует чистый css для этого:
div{
height:200px;
width:100%;
border-radius:10px;
background:gray;
position:relative;
box-shadow:0 0px 10px black;
border:1px solid black;
}
div:before{
position:absolute;
bottom:-10px;
left:40px;
content:"";
background:gray;
height:20px;
width:20px;
transform: rotate(45deg);
border-bottom:1px solid black;
border-right:1px solid black;
box-shadow:0 0px 10px black;
}
div:after{
position:absolute;
bottom:0px;
left:30px;
content:"";
background:gray;
height:20px;
width:40px;
}
<div>test</div>
Ответ 4
Вы не можете делать то, что вы хотите сделать, используя box-shadow. Это связано с тем, что эффект "стрелка" создается с использованием прозрачного цвета везде, кроме вершины. Это означает, что элемент по-прежнему является квадратом, и ваша тень будет отображаться вокруг него соответственно.
Если вы хотите добавить тень к форме изображения, попробуйте использовать SVG или просто изображение с предварительно выделенной тень.
<polygon points="220, 150 350, 220" style="fill:#FFFFFF; stroke:#000000;stroke-width:1"/>