Проблемы с прозрачной рамкой и коробчатой ​​тенью

Рассмотрим следующее:

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/

Я знаю, что это нормальное поведение, а не ошибка, но я хотел бы иметь возможность обрезать тень блока до непрозрачной части. стрелки.

Я не могу использовать одно изображение для всплывающей подсказки, так как содержимое может быть любой высоты, и я хотел бы избежать использования нескольких изображений, собранных вместе, только потому, что это решение НАМНОГО чище.

Кто-нибудь может придумать жизнеспособный обходной путь?

5
задан Turnip 18 June 2012 в 10:50
поделиться