CSS3によるアニメーション

マウスオーバーで透過させる場合

.fade {
	transition: all .2s ease-out;
}
.fade:hover {
	opacity: .5;
}

2行目が透明化の記述、5行目が透明度の記述です。

  • .2s…0.2秒間かけてフェードします。
  • ease-out…変化の仕方を指定できます、プロパティは下記の通りです。
    • ease:開始時と終了時に緩やかに変化します。
    • linear:一定の速度で変化します。
    • ease-in:開始時は緩やかに変化、終了時は早く変化します。
    • ease-out:開始時は早く変化、終了時は緩やかに変化します。
    • ease-in-out:easeより緩急の差が大きくなります。
    • cubic-bezier:それぞれの変化を数値で指定できます。

:hover時の指定がCSSスプライトなど背景位置変更であれば:hover時の指定位置までスライドアニメーションします。
background-imageはアニメーションに対応していませんが、:hover用の画像をulの背景等に指定し、opacityを0にすることで完全透過させフェード切替えしているように表示させる事が可能です。

マウスオーバーで動かす場合

.pagetop img {
	cursor: pointer;
	transition: .2s ease-out;
	margin-top: 5px;
	margin-bottom: 5px;
}
.pagetop img:hover {
	margin-top: 0px;
	margin-bottom: 10px;
}

4行目と5行目のmarginを8行目と9行目の:hoverで上下5pxずつ調整。
.pagetop imgをマウスオーバーすると少し上に動き、カーソルを外すと戻ります。

マウスオーバーでborderのアニメーション

.box {
	position: relative;
}
.box:after {
	position: absolute;
	bottom: 0;
	left: 0;
	content: "";
	width: 0;
	transition: all .5s ease-out;
	border-bottom: 3px solid #eee;
}
.box:hover:after {
	width: 100%;
}

.boxの要素にマウスオーバーするとborder-bottomが伸び、マウスカーソルを外すと縮小します。
8行目で追加した空の要素を伸縮させて擬似的に.boxのborder-bottomを伸縮させているように表示しています。

マウスオーバーで回転のアニメーション

HTMLは対象となる要素<p>を囲う要素<div>が必要です。

<div class="box">
	<p>link</p>
</div>

CSSは囲いの要素の大きさの指定が必要です。

.box {
	width: 50px;
	height: 50px;
	line-height: 50px;
	text-align: center;
}
.box p {
	transition: all .5s ease-out;
	transform: rotateZ( 0deg );
}
.box:hover p {
	transform: rotateZ( 30deg );
}

対象を囲っている要素の大きさ(今回だと縦横50px)に合わせて回転の軸が決まります。
勿論テキスト部分は画像でも可能です。
9行目で元の位置(0度)の指定を、12行目でマウスオーバー時の位置(30度)の指定を記述します。

マウスオーバーで拡大のアニメーション

HTML側の記述です。

<a>
	<figure>
		<img>
	</figure>
</a>

CSS側の記述です。

img {
	transition-duration: .5s;
	vertical-align: top;
}
img:hover {
	transform: scale(1.1, 1.1);
	transition-duration: .5s;
}
figure {
	overflow: hidden;
}

3行目はリンクタグ内のイメージ要素の下に空白ができるのを防ぐためです。
6行目は幅と高さのマウスオーバー時のそれぞれの倍率です。
10行目で拡大した画像の範囲外の部分を非表示にします、この記述を書かなければ画像はそのまま大きくなります。

コメント

タイトルとURLをコピーしました