CSSのみでふわっと浮かび上がる吹き出し風のツールチップを作る
CSS3を使用してふわっと出現するアニメーションの吹き出し風のツールチップをcssのみで作る方法です。
完成は下のデモのような動きになります。
See the Pen CSSのみでふわっと浮かび上がる吹き出し風のツールチップ by Saomocari (@Saomocari) on CodePen.
HTMLの部分
HTMLはulタグでマークアップします。ツールチップに表示させたい部分はliタグの中にdivを入れてその中に記入します。
<ul id="tooltip"> <li> <a href="#">tooltipsample1</a> <div>ツールチップの部分</div></li> <li> <a href="#">tooltipsample2</a> <div>ツールチップの部分</div></li> <li> <a href="#">tooltipsample3</a> <div>ツールチップの部分</div></li> </ul>
CSSの部分
まずliに入れたdivタグを角丸やシャドウをつけるなどして装飾します。
#tooltip li > div {
width: 150px;
min-height: 20px;
position: absolute;
top:-50px;
margin-left: -25px;
padding: 5px;
background: #ffffff;
font-size:1em;
/* ツールチップ角丸の装飾の指定 */
-moz-border-radius: 5px; /* Firefox */
-webkit-border-radius: 5px; /* Safari and Chrome */
border-radius: 5px; /* Browsers that Support it like Opera */
/* ツールチップボックスシャドウの装飾の指定 */
-moz-box-shadow: 0 0 8px gray; /* Firefox */
-webkit-box-shadow: 0 0 8px gray; /* Safari and Chrome */
filter: progid:DXImageTransform.Microsoft.Shadow(color='#272229', Direction=135, Strength=3); /* IE */
box-shadow: 0 0 8px gray; /* Browsers that Support it like Opera */
}
visibility:hidden と opacity: 0 の2つを指定を上の” #tooltip li > div {} “のスタイルにつけたして見えなくします。visibility:hidden の指定がないと表示がもたつく感じがしました。opacity: 0 を指定しないとふわっとしないので、2つとも指定が必要です。
visibility:hidden; opacity: 0;
吹き出しの三角の部分をツールチップの下に付け足します。:after擬似要素を使って▼を各ツールチップのすぐ後に表示させて、position で位置の指定と transform:rotate で▼を回転させています。(参照:CSS3でツールチップの吹き出しを表現する|skuare.net)
#tooltip li > div:after {
content:"\25B8";
display:block;
font-size:2em;
height:0;
line-height:0;
position:absolute;
color:#fff;
bottom:-3px;
left:1px;
text-align:center;
-moz-transform:rotate(90deg);
-webkit-transform:rotate(90deg);
width:100%;
text-shadow: 3px 0 2px #ccc;
}
次にマウスオーバー時に、visibility:visible と opacity: 1 を指定してツールチップを見えるようにし、transition プロパティでふわっとしたアニメーションをつけます。
#tooltip li:hover > div {
/* マウスオーバー時にどうなっているかを指定 */
visibility:visible;
opacity: 1;
top:-50px;
/* 上に書いた状態までになるまでの時間やアニメーションなど指定 */
-moz-transition: all 0.5s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari and Chrome */
-o-transition: all 0.5s ease-in-out; /* Opera */
transition: all 0.5s ease-in-out; /* Browsers that Support it */
}
上記の transition プロパティのアニメーションと同じものを最初の” #tooltip li > div {} “のスタイルにも付け足します。” #tooltip li > div {} “にもアニメーションを付けないと、マウスアウト時に何もアニメーションが付かないのでそっけなくなってしまいます。
以上でデモのような表現のツールチップが完成します。トータルのHTMLとCSSのコードは、最初のデモのHTMLとCSSのタブの所で見る事ができます。
頑なに画像を使わない意味も特にないですが、吹き出しの三角の部分の表現の仕方は斬新なアイディアで、こんな風にも使えるんだなぁと思いました。
2 Comments & Tracbacks