スクリーンショット 2013-09-13 20.43.02

cssのcontentプロパティで、html要素の属性値を取得できることを知って、もしやツールチップ表示とかJS噛まないで実現できるか?と思って実際やってみたら実現できました。

モダンブラウザ,IEはおそらく9+まで動作すると思います。

デモ

仕組みとしては、tooltipクラスにCSSアニメーションを仕込んでおき、data‐*のAttributeをCSSから取得して表示するという形になっています。

ソースはこちら

HTML

<div><a href="#" class="tooltip"  data-tooltip="{{username}}"	><img src="#" width="30" height="30"></a></div>
<span class="tooltip"  data-tooltip="{{出したい文字}}"><a href="#" >TOOLTIP</a></span>

LESS

.tooltip, [data-tooltip]{
	position: relative;
  display: inline-block;
	&:before,&:after{
		position: absolute;
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    -webkit-transition: 0.3s ease;
    -moz-transition: 0.3s ease;
    transition: 0.3s ease; 
		background-color: #b34e4d;
 		 text-shadow: 0 -1px 0px #592726; 
	}
	&:hover:before,&:hover:after,&:focus:before,&:focus:after{
		visibility: visible;
    opacity: 1;
	}
	&:before{
			content: '';
			position: absolute;
			background: transparent;
			border: 6px solid transparent;
	}
	&:hover{
		z-index:100000;
	}
	&:after{
		content: attr(data-tooltip);
    background: #383838;
    color: white;
    text-shadow: 0 -1px 0px black;
    padding: 10px 15px;
    font-size: 11px;
    line-height: 12px;
    white-space: nowrap;
		left:90%;
		top:90%;
		box-shadow: 1px 1px 0px rgba(0, 0, 0, 0.2);
	}
	
	&:hover:after, &:hover:before, &:focus:after, &:focus:before {
		-webkit-transform: translateY(-10px);
		-moz-transform: translateY(-10px);
		transform: translateY(-10px);
	}
}

ツールチップもそうですが、ナビゲーションなどCSSのみで実現できそうなインタラクションって結構増やせそうですね。