Acabei de descobrir um truque de CSS bacana. Confira o violino ...
.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>
Isso cria um pequeno efeito de seta / triângulo, uma "ponta de ferramenta". Isso me deixa louco! Estou realmente interessado em saber como isso funciona ?!
Além disso, há uma maneira de estender esse truque CSS para criar um efeito da seguinte maneira:
Este é um problema interessante. Isso pode ser feito usando apenas CSS, ignorando a sombra por enquanto?
ATUALIZAÇÃO 1
Eu descobri uma solução para minha pergunta inicial. Aqui está o violino ...
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;
}
Agora, como faço para imitar exatamente a pequena imagem acima usando CSS puro, incluindo a sombra e tornando-a compatível com vários navegadores?
ATUALIZAÇÃO 2
Aqui está minha solução após uma combinação das respostas abaixo. Não testei em vários navegadores, mas parece ótimo no 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;
}
fonte
Respostas:
Aqui está um exemplo com uma sombra de caixa, todos os navegadores de versão mais recente devem suportar isso
http://jsfiddle.net/MZXCj/1/
HTML:
CSS:
Exibir trecho de código
fonte
Aqui está uma explicação para responder à sua primeira pergunta (vou deixar o CSS real para os outros, pois sou preguiçoso - por favor, vote positivamente nas respostas que você acha que merecem os votos!):
Ao renderizar uma borda com cores de borda variadas, mas do mesmo estilo (no seu caso
solid
), a costura que divide cada par de cantos adjacentes é uma linha diagonal. É bastante semelhante ao que o diagrama aqui retrata dosgroove
,ridge
,inset
eoutset
estilos de borda.Observe que, embora todos os navegadores se comportem da mesma maneira desde que me lembro, esse comportamento não está totalmente definido nas especificações CSS2.1 ou no módulo CSS Backgrounds and Borders. Este último tem uma seção que descreve as transições de cor e estilo nos cantos , e a descrição parece implicar que, para bordas com raio de canto zero, a linha renderizada é na verdade uma linha que une o canto da borda de preenchimento com o canto do borda da borda (resultando em uma linha em ângulo de 45 graus para bordas de largura igual), mas a especificação ainda avisa que isso pode não ser sempre o caso (especialmente porque não leva em conta as bordas com raio de canto zero explicitamente). 1
Pelo modelo de caixa de conteúdo (W3C original) , uma área de 40x40 é criada a partir das bordas de 20 pixels, com as dimensões do conteúdo sendo definidas como 0x0.
Dividir um quadrado com linhas diagonais unindo seus quatro cantos resulta em quatro triângulos retângulos cujos ângulos retos se encontram no ponto médio do quadrado (veja abaixo).
As bordas superior, inferior e esquerda são brancas para combinar com o fundo
.tooltiptail
do contêiner do elemento, enquanto a borda direita é um tom de azul para combinar com a cor de fundo da dica:O resultado é o seguinte, com as bordas marcadas e os limites adicionados usando minha ferramenta de linha confiável:
Reorientar o final da dica de ferramenta é simplesmente uma questão de mudar a cor da dica de ferramenta. Por exemplo, isso resultaria em uma cauda que está presa na parte inferior de uma ponta:
visualização do jsFiddle
1 Se você é um defensor da conformidade com os padrões, também pode considerar tudo isso um hack.
fonte
"I'm not worried about the shadow yet"
.Eu faço esta dica com apenas um
div
elemento.HTML:
CSS:
Demo
Explicação:
Eu tenho meu div normal com borda como outro exemplo. A cauda é uma combinação simples de CSS:
fonte
Dica de ferramenta sem sombra
Exibir trecho de código
Fiddle Demo
Com Shadow (parece um pouco estranho no WebKit ... tenho que otimizá-lo, eu acho):
Exibir trecho de código
Demo 1 , Demo 2
fonte
Abordagem crossbrowser:
Exibir trecho de código
Este funciona no IE7 + (funciona no IE6 usando (
filter: chroma(color=white);
) também, mas não exibe a borda preta ao redor da seta).IE6 fix:
Isso tornará a transparência do preto feio que é processado pelo IE6 a cor que você especificou no filtro de croma (eu fiz branco para que ele desapareça no fundo).
Abordagem CSS 3:
Você poderia fazer isso com rotação CSS3, mas falhará em navegadores não compatíveis com CSS3:
fonte
Você pode usar os pseudo-elementos: before e: after do CSS. Por exemplo,: before pode ser usado para inserir um triângulo e: after para inserir um retângulo. A combinação desses dois cria uma dica de ferramenta de bolha
Por exemplo :
Uma ferramenta online está disponível em http://www.careerbless.com/services/css/csstooltipcreator.php
fonte
title
?aria-label
é um atributo personalizado mais apropriado para uma dica de ferramenta. Comtitle
, você também obtém a renderização de dicas de ferramenta padrão do navegador (para usuários com visão de qualquer maneira).span:before
espan:after
criar triângulo e ajustar conforme a necessidade de webblogsforyou.com/… .