Рассмотрим следующее:
HTML
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ornare ligula et nulla auctor vitae tincidunt erat congue.
CSS
.info_bubble {
padding: 0 15px;
margin: 1em 0 3em;
border: 5px solid #FFF;
background: #A6CE39;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
width: 200px;
box-shadow: 0 0 10px #000;
color: #FFF;
position: absolute;
left: 50px;
top: 50px;
}
.info_bubble::before {
content: "";
position: absolute;
bottom: -20px;
left: 40px;
border-width: 20px 20px 0;
border-style: solid;
display: block;
width: 0;
top: 10px;
bottom: auto;
left: -23px;
border-width: 15px 23px 15px 0;
border-color: transparent #FFF;
}
.info_bubble::after {
content: "";
position: absolute;
bottom: -13px;
left: 47px;
border-width: 13px 13px 0;
border-style: solid;
display: block;
width: 0;
top: 16px;
bottom: auto;
left: -15px;
border-width: 9px 15px 9px 0;
border-color: transparent #A6CE39;
}
Пример: http://jsfiddle.net/ysqQV/2/
Приведенное выше создает «речевой пузырь» с треугольной «стрелкой» с левой стороны. Стрелка создается из границ, частично прозрачных и частично непрозрачных.
Я хотел бы использовать box-shadow за речевым пузырем, но это выглядит немного странно вокруг стрелки, поскольку тень отбрасывается от всего элемента, а не только от непрозрачной части.
Пример: http://jsfiddle.net/ysqQV/1/
Я знаю, что это нормальное поведение, а не ошибка, но я хотел бы иметь возможность обрезать тень блока до непрозрачной части. стрелки.
Я не могу использовать одно изображение для всплывающей подсказки, так как содержимое может быть любой высоты, и я хотел бы избежать использования нескольких изображений, собранных вместе, только потому, что это решение НАМНОГО чище.
Кто-нибудь может придумать жизнеспособный обходной путь?