Je viens de tomber sur une astuce CSS. Découvrez le violon ...
.tooltiptail {
display: block;
border-color: #ffffff #a0c7ff #ffffff #ffffff;
border-style: solid;
border-width: 20px;
width: 0px;
height: 0px;
}
.anothertail {
background-image: url(http://static.jqueryfordesigners.com/demo/images/coda/bubble-tail2.png);
display: block;
height: 29px;
width: 30px;
}
<div>Cool Trick:
<br />
<div class="tooltiptail"></div>
</div>
<br />
<div>How do I get this effect with only CSS?
<br />
<div class="anothertail"></div>
</div>
Cela crée un petit effet de type flèche / triangle, une "queue d'info-bulle". Cela me souffle! Je suis vraiment intéressé de savoir comment cela fonctionne?!
De plus, existe-t-il un moyen d'étendre cette astuce CSS pour créer un effet comme suit:
C'est un problème intéressant. Cela peut-il être fait en utilisant uniquement CSS, en ignorant l'ombre pour le moment?
MISE À JOUR 1
J'ai trouvé une solution à ma question initiale. Voici le violon ...
HTML
<div style="position: relative;">Cool Trick:<br />
<div class="tooltiptail"></div>
<div class="tooltiptail2"></div>
</div>
CSS
.tooltiptail {
display: block;
border-color: #ffffff #a0c7ff #ffffff #ffffff;
border-style: solid;
border-width: 20px;
width: 0px;
height: 0px;
}
.tooltiptail2 {
display: block;
border-color: transparent #ffffff transparent transparent;
border-style: solid;
border-width: 18px;
width: 0px;
height: 0px;
position: relative;
left: 4px;
top: -38px;
}
Maintenant, comment imiter exactement la petite image ci-dessus en utilisant du CSS pur, y compris l'ombre et en la rendant compatible avec tous les navigateurs?
MISE À JOUR 2
Voici ma solution après une combinaison des réponses ci-dessous. Je ne l'ai pas testé sur plusieurs navigateurs, mais il a fière allure dans Chrome.
http://jsfiddle.net/UnsungHero97/MZXCj/688/
HTML
<div id="toolTip">
<p>i can haz css tooltip</p>
<div id="tailShadow"></div>
<div id="tail1"></div>
<div id="tail2"></div>
</div>
CSS
#toolTip {
background-color: #ffffff;
border: 1px solid #73a7f0;
width: 200px;
height: 100px;
margin-left: 32px;
position:relative;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
box-shadow: 0px 0px 8px -1px black;
-moz-box-shadow: 0px 0px 8px -1px black;
-webkit-box-shadow: 0px 0px 8px -1px black;
}
#toolTip p {
padding:10px;
}
#tailShadow {
background-color: transparent;
width: 4px;
height: 4px;
position: absolute;
top: 16px;
left: -8px;
z-index: -10;
box-shadow: 0px 0px 8px 1px black;
-moz-box-shadow: 0px 0px 8px 1px black;
-webkit-box-shadow: 0px 0px 8px 1px black;
}
#tail1 {
width: 0px;
height: 0px;
border: 10px solid;
border-color: transparent #73a7f0 transparent transparent;
position:absolute;
top: 8px;
left: -20px;
}
#tail2 {
width: 0px;
height: 0px;
border: 10px solid;
border-color: transparent #ffffff transparent transparent;
position:absolute;
left: -18px;
top: 8px;
}
la source
Réponses:
Voici un exemple avec une boîte-ombre, tous les navigateurs de la dernière version devraient le prendre
http://jsfiddle.net/MZXCj/1/
HTML:
CSS:
Afficher l'extrait de code
la source
Voici une explication pour répondre à votre première question (je laisserai le CSS réel aux autres car je suis paresseux - veuillez voter pour leurs réponses qui, selon vous, méritent les votes!):
Lors du rendu d'une bordure avec des couleurs de bord variables mais du même style (dans votre cas,
solid
), la couture séparant chaque paire de coins adjacents est une ligne diagonale. Il est tout à fait semblable à ce que le schéma ci représente lagroove
,ridge
,inset
etoutset
les styles de bordure.Notez que si tous les navigateurs se comportent de la même manière et l'ont fait aussi longtemps que je m'en souvienne, ce comportement n'est pas entièrement défini dans la spécification CSS2.1 ou dans le module Arrière-plans et bordures CSS. Ce dernier a une section décrivant les transitions de couleur et de style aux coins , et la description semble impliquer que pour les bordures avec un rayon de coin nul, la ligne qui est rendue est en fait une ligne qui joint le coin du bord de remplissage avec le coin du bord de la bordure (résultant en une ligne inclinée à 45 degrés pour les bordures de largeur égale), mais la spécification avertit toujours que cela peut ne pas toujours être le cas (d'autant plus que cela ne prend même pas en compte explicitement les bordures avec des rayons de coin zéro). 1
Par le modèle de boîte de contenu (W3C d'origine) , une zone de 40 x 40 est créée à partir des bordures de 20 pixels, les dimensions du contenu étant définies comme 0x0.
La division d'un carré avec des lignes diagonales joignant ses quatre coins donne quatre triangles rectangles dont les angles droits se rencontrent au milieu du carré (voir ci-dessous).
Les bordures supérieure, inférieure et gauche sont blanches pour correspondre à l'arrière-plan du
.tooltiptail
conteneur de l' élément, tandis que la bordure droite est d'une nuance de bleu pour correspondre à la couleur d'arrière-plan de l'info-bulle:Le résultat est le suivant, avec les bordures étiquetées et les limites de bordure ajoutées à l'aide de mon fidèle outil de ligne:
La réorientation de la queue de l'infobulle consiste simplement à changer la couleur de l'infobulle. Par exemple, cela donnerait une queue attachée au bas d'une pointe:
Aperçu de jsFiddle
1 Si vous tenez à respecter les normes, vous pouvez tout aussi bien considérer tout cela comme un hack.
la source
"I'm not worried about the shadow yet"
.Je fais cette info-bulle avec un seul
div
élément.HTML:
CSS:
Démo
Explication:
J'ai mon div normal avec une bordure comme les autres exemples. La queue est une simple combinaison de CSS:
la source
Info-bulle sans ombre
Afficher l'extrait de code
Démo Fiddle
Avec Shadow (ça a l'air un peu bizarre dans WebKit ... je dois l'optimiser je suppose):
Afficher l'extrait de code
Démo 1 , Démo 2
la source
Approche Crossbrowser:
Afficher l'extrait de code
Celui-ci fonctionne à partir d'IE7 + (fonctionne également dans IE6 en utilisant (
filter: chroma(color=white);
) mais n'affichera pas la bordure noire autour de la flèche).Correction d'IE6:
Cela donnera à la vilaine transparence noire rendue par IE6 la couleur que vous avez spécifiée dans le filtre de chrominance (j'ai fait du blanc pour qu'il disparaisse en arrière-plan).
Approche CSS 3:
Vous pouvez le faire avec la rotation CSS3, mais échouera dans les navigateurs non compatibles CSS3:
la source
Vous pouvez utiliser les pseudo-éléments: before et: after de CSS. Par exemple,: before peut être utilisé pour insérer un triangle et: after pour insérer un rectangle. La combinaison de ces deux crée une info-bulle
Par exemple :
Un outil en ligne est disponible à http://www.careerbless.com/services/css/csstooltipcreator.php
la source
title
,?aria-label
c'est un attribut personnalisé plus approprié pour une info-bulle. Avectitle
, vous obtenez également le rendu de l'infobulle par défaut du navigateur (pour les utilisateurs voyants de toute façon).span:before
etspan:after
de créer triangle et ajusté selon le besoin de webblogsforyou.com/... .