CSS Bulle avec Zone d'Ombre
Créer un DIV qui utilise CSS pour dessiner un triangle à gauche. En essayant d'appliquer un uniforme box-shadow pour les deux parents et le pseudo-élément (voir les images) et le code.
Est-ce possible? Ou suis-je mieux d'utiliser border-image de pour cela?
(En haut: Avant que l'Ombre, au Milieu: CSS Box-Shadow, Bas: Résultat Souhaité)
.bubble{
height: 200px;
width: 275px;
opacity: 0;
margin-top: 41px;
float: right;
background-color: #F2F2F2;
-webkit-border-radius: 5px;
-webkit-box-shadow: 0px 0px 6px #B2B2B2;
}
.bubble::after {
height: 0px;
width: 0px;
content: ".bubble{
height: 200px;
width: 275px;
opacity: 0;
margin-top: 41px;
float: right;
background-color: #F2F2F2;
-webkit-border-radius: 5px;
-webkit-box-shadow: 0px 0px 6px #B2B2B2;
}
.bubble::after {
height: 0px;
width: 0px;
content: "\00a0";
display: block;
margin-left: -10px;
margin-top: 28px;
border-width: 10px 10px 10px 0;
border-style: solid;
border-color: transparent #F2F2F2 transparent transparent;
-webkit-box-shadow: 0px 0px 6px #B2B2B2;
}
a0";
display: block;
margin-left: -10px;
margin-top: 28px;
border-width: 10px 10px 10px 0;
border-style: solid;
border-color: transparent #F2F2F2 transparent transparent;
-webkit-box-shadow: 0px 0px 6px #B2B2B2;
}
Vous devez vous connecter pour publier un commentaire.
Au lieu d'utiliser un triangle de hack, vous pouvez simplement faire pivoter une div à l'aide de
transform
et d'obtenir un vraibox-shadow
. Puisque vous ne voulez l'ombre sur un côté de la div (le visible triangle), vous devez faire leblur
plus petit et plus laopacity
.Démo: http://jsfiddle.net/ThinkingStiff/mek5Z/
HTML:
CSS:
De sortie:
transform: skew();
pour modifier l'angle du triangle.skewX
au lieu de tout simplementskew
:-moz-transform: rotate( 29deg ) skewX( -35deg );
left
,top
, et les deux premières valeurs debox-shadow
.Ici est un travail complet exemple en pleine (S)CSS, avec
variables pour le nez, la taille de l'ombre de la largeur et une option de frontière.
L'astuce consiste à obtenir les décalages et les transformer à droite pour obtenir des pixels de la perfection, et à utiliser
overflow:hidden
comme nécessaire de couper le nez de votre bulle (surtout si vous avez besoin de frontières).L'exemple dans la réponse ci-dessus ne fonctionne pas pour nous, parce que l'ombre est coupée et il est posé au-dessus de la bulle de la zone.
Dégrade gracieusement dans IE7/8.
HTML:
SCSS:
Je sais que C'est un peu délicat, mais, semble bien pour moi.
Voici le violon http://jsfiddle.net/dzfj6/
HTML
CSS
Au lieu de
box-shadow
, vous pouvez simplement utiliserborder
pour buble.Une autre solution est d'utiliser
filter: drop-shadow(0 1px 2px rgba(0,0,0,.5));
Elle place l'ombre autour des objets de forme.Ne pas utiliser
box-shadow
.