Me encontré con un buen truco de CSS. Mira el violín ...
.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>
Esto crea un pequeño efecto de flecha / triángulo, una "cola de información sobre herramientas". ¡Esto me sorprende! ¡¿Estoy realmente interesado en saber cómo funciona esto ?!
Además, ¿hay alguna manera de extender este truco CSS para crear un efecto de la siguiente manera?
Este es un problema interesante. ¿Se puede hacer esto usando solo CSS, ignorando la sombra por ahora?
ACTUALIZACIÓN 1
Descubrí una solución a mi pregunta inicial. Aquí está el violín ...
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;
}
Ahora, ¿cómo puedo imitar exactamente la pequeña imagen de arriba usando CSS puro, incluida la sombra y haciéndolo compatible con todos los navegadores?
ACTUALIZACIÓN 2
Aquí está mi solución después de una combinación de las siguientes respuestas. No lo he probado en varios navegadores, pero se ve muy bien en 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;
}
fuente
Respuestas:
Aquí hay un ejemplo con una sombra de cuadro, todos los navegadores de la última versión deberían admitir esto
http://jsfiddle.net/MZXCj/1/
HTML:
CSS:
Mostrar fragmento de código
fuente
Aquí hay una explicación para responder a su primera pregunta (dejaré el CSS real a otros ya que soy vago; ¡vote sus respuestas que crea que merecen los votos!):
Al renderizar un borde con diferentes colores de borde pero con el mismo estilo (en su caso,
solid
), la costura que divide cada par de esquinas adyacentes es una línea diagonal. Es muy similar a lo que el diagrama aquí representa losgroove
,ridge
,inset
youtset
estilos de borde.Tenga en cuenta que si bien todos los navegadores se comportan de la misma manera y lo han hecho desde que tengo uso de razón, este comportamiento no está completamente definido ni en la especificación CSS2.1 ni en el módulo Fondos y bordes CSS. Este último tiene una sección que describe las transiciones de color y estilo en las esquinas , y la descripción parece implicar que para los bordes con radios de esquina cero, la línea que se representa es de hecho una línea que une la esquina del borde de relleno con la esquina de la borde del borde (que da como resultado una línea en ángulo de 45 grados para bordes de igual ancho), pero la especificación aún advierte que este no siempre es el caso (especialmente porque ni siquiera tiene en cuenta los bordes con radios de esquina cero explícitamente). 1
Según el modelo de caja de contenido (W3C original) , se crea un área de 40x40 a partir de los bordes de 20 píxeles, con las dimensiones del contenido definidas como 0x0.
Dividir un cuadrado con líneas diagonales que unen sus cuatro esquinas da como resultado cuatro triángulos rectángulos cuyos ángulos rectos se encuentran en el punto medio del cuadrado (ver más abajo).
Los bordes superior, inferior e izquierdo son blancos para que coincidan con el fondo del
.tooltiptail
contenedor del elemento, mientras que el borde derecho es de un tono azul para que coincida con el color de fondo de la información sobre herramientas:El resultado es este, con los bordes etiquetados y los límites de los bordes agregados usando mi confiable Herramienta de línea:
Reorientar la cola de la información sobre herramientas es simplemente una cuestión de cambiar el color de la información sobre herramientas. Por ejemplo, esto produciría una cola que se adjunta a la parte inferior de una punta:
Vista previa de jsFiddle
1 Si eres estricto con el cumplimiento de los estándares, también puedes considerar todo esto como un truco.
fuente
"I'm not worried about the shadow yet"
.Hago esta información sobre herramientas con un solo
div
elemento.HTML:
CSS:
Manifestación
Explicación:
Tengo mi div normal con borde como otro ejemplo. La cola es una combinación simple de CSS:
fuente
Información sobre herramientas sin sombra
Mostrar fragmento de código
Demostración de violín
Con Shadow (se ve un poco extraño en WebKit ... tengo que optimizarlo, supongo):
Mostrar fragmento de código
Demo 1 , Demo 2
fuente
Enfoque de navegador cruzado:
Mostrar fragmento de código
Este funciona desde IE7 + (también funciona en IE6 usando (
filter: chroma(color=white);
) pero no mostrará el borde negro alrededor de la flecha).Corrección de IE6:
Esto hará que la fea transparencia negra que muestra IE6 sea el color que especificó en el filtro de crominancia (hice el blanco para que desaparezca en el fondo).
Enfoque CSS 3:
Puede hacerlo con la rotación CSS3, pero fallará en los navegadores no compatibles con CSS3:
fuente
Puede hacer uso de los pseudoelementos: before y: after de CSS. Por ejemplo,: before se puede usar para insertar un triángulo y: after para insertar un rectángulo. La combinación de estos dos crea una sugerencia de burbuja
P.ej :
Hay una herramienta en línea disponible en http://www.careerbless.com/services/css/csstooltipcreator.php
fuente
title
,?aria-label
es un atributo personalizado más apropiado para una información sobre herramientas. Contitle
, también obtiene la representación de información sobre herramientas predeterminada del navegador (para usuarios videntes de todos modos).span:before
yspan:after
crear un triángulo y ajustarlo según las necesidades de webblogsforyou.com/… .