基本的なHTML

基本的なHTMLは下記になります。figureでマークアップしてみました。

HTML

<section class="sample1">
	<figure>
		<img src="thum01.jpg" width="400" height="266">
		<figcaption class="title">Hover Effect 01</figcaption>
	</figure>
</section>

figureのCSSは「overflow: hidden」ではみ出ないようにしています。

CSS

section figure {
    width: 400px;
    height: 266px;
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    background: #000;
}

1.画像を縮小しつつ下からにょきっと出るキャプション

最初はすごく簡単なやつです。
通常の状態はtranslateYで画像外に飛ばしておいて、hover時に0で表示させてアニメーションしています。
transitionの4つ目のパラメータでディレイ(時間差)を調節できます。

CSS

.sample1 img {
    transition: all 0.4s ease-out 0.1s;
}
.sample1 figure:hover img {
    opacity: .6;
    transform: scale(1.3);
}
.sample1 figcaption {
    color: #fff;
    background: #333;
    background: rgba(0,0,0,.7);
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 60px;
    padding: 20px;
    line-height: 1;

    /* 1行で納める */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;

    transition: all 0.2s ease-in 0.3s;
    transform: translateY(60px);
}
.sample1 figure:hover figcaption {
    transform: translateY(0);
}

2.キャプションが横にスライドして画像が押し出される

やってることは先ほどとあまり変わりませんが画像・キャプションともtranslateXを動かして押し出されるような感じにしております。

CSS

.sample2 figcaption {
    position: absolute;
    height: 100%;
    width: 240px;
    background: #366a6d;
    top: 0;
    display: block;
    text-align: left;
    padding: 20px;
    color: #fff;
    transform: translateX(-240px);
    transition: all .5s ease-out;
}
.sample2 figure:hover figcaption {
    transform: translateX(0);
}
.sample2 figure img {
    left: 0;
    position: absolute;
    transition: all .5s ease-out;
}
.sample2 figure:hover img {
    transform: translateX(100px);
}

3.外から枠がぐいってなる

外から枠がぐいって出てきます。
枠はafterに設定してます。あとはscaleで縮小です。比率とかが結構適当です。。。

CSS

.sample3 {
    color: #fff;
}
.sample3 figure:after {
    position: absolute;
    border: solid 1px #fff;
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    opacity: 0;
    transform: scale(1.0, 1.0);
    transition: all .3s ease-out;
}
.sample3 figure:hover:after {
    opacity: 1;
    transform: scale(0.92, 0.88);
}
.sample3 figcaption {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1em;
    font-size: 20px;
    letter-spacing: 5px;
    opacity: 0;
    transition: all .3s ease-out .2s;
}
.sample3 figure:hover figcaption {
    letter-spacing: 1px;
    opacity: 1;
}
.sample3 figure img {
    transition: all .8s ease-out;
}
.sample3 figure:hover img {
    opacity: .4;
    transform: scale(1.3);
}

4.中心線が真ん中からスーっと出る

中心線はafterに設定してます。今度はscaleで拡大です。

CSS

.sample4 {
    color: #fff;
}
.sample4 figure:after {
    position: absolute;
    background: #fff;
    content: "";
    display: block;
    width: 90%;
    height: 1px;
    left: 5%;
    top: 50%;
    transform: scale(0);
    transition: all .9s ease-out;
}
.sample4 figure:hover:after {
    transform: scale(1);
}
.sample4 figcaption p,
.sample4 figcaption h3 {
    position: absolute;
    text-align: center;
    width: 100%;
    opacity: 0;
    transition: all .4s ease-out .4s;
}
.sample4 figcaption h3 {
    bottom: 51%;
    transform: translateY(-30px);
}
.sample4 figcaption p {
    top: 52%;
    transform: translateY(30px);
}
.sample4 figure:hover figcaption p,
.sample4 figure:hover figcaption h3 {
    opacity: 1;
    transform: translateY(0);
}

.sample4 figure img {
    transition: all 1.2s ease-out;
}
.sample4 figure:hover img {
    opacity: .4;
    transform: scale(1.3);
}
}

5.ソーシャルボタンがぴょんぴょんぴょん

ディレイを駆使してソーシャルボタンを時間差でアニメーションさせて表示してみませましょう。
アイコンの位置とか適当です。。。

HTML

<section class="sample5">
	<figure>
		<img src="thum01.jpg" width="400" height="266" class="thumb">
		<figcaption>
			<h3 class="title">Hover Effect 05</h3>
			<p>Hover Effect Description</p>
			<a href="#" class="more-btn">Read more</a>

			<ul class="sns-btns">
				<li class="twitter"><a href="#"><img src="twitter.svg"></a></li>
				<li class="facebook"><a href="#"><img src="facebook.svg"></a></li>
				<li class="google"><a href="#"><img src="gplus.svg"></a></li>
			</ul>
		</figcaption>
	</figure>
</section>

CSS

.sample5 a {
    color: #333;
}
.sample5 figcaption {
    position: absolute;
    height: 80px;
    width: 100%;
    background: #fff;
    bottom: 0;
    display: block;
    text-align: left;
    padding: 20px;
    color: #333;
    transition: all .3s ease-out .2s;
}
.sample5 figure:hover figcaption {
    height: 110px;
    transition-delay: 0s;
}
.sample5 figcaption h3 {
    margin-bottom: 0;
    line-height: 1.2;
}
.sample5 figure img.thumb {
    top: 0;
    left: 0;
    position: absolute;
    transition: all .3s ease-out .2s;
}
.sample5 figure:hover img.thumb {
    top: -20px;
    transition-delay: 0s;
}
.sample5 figcaption a.more-btn {
    font-size: 11px;
    color: #fff;
    background: #1d76a6;
    padding: 7px 12px;
    position: absolute;
    right: 0;
    bottom: 0;
    transform: translateX(90px);
    transition: all .2s ease-out;
}
.sample5 figcaption a.more-btn:hover {
    background: #2a9cc0;
}
.sample5 figure:hover figcaption a.more-btn {
    transform: translateX(0);
    transition-delay: .4s;
}
.sample5 figcaption ul.sns-btns {
    list-style: none;
    position: relative;
    padding-top: 4px;
}
.sample5 figcaption ul.sns-btns li {
    padding: 7px;
    line-height: 1;
    height: 28px;
    width: 28px;
    float: left;
    background: #3b5998;
    border-radius: 50%;
    position: absolute;
    transform: translateY(50px);
    transition: all .15s ease-out;
}
.sample5 figure:hover figcaption ul.sns-btns li {
    transform: translateY(0);
}
.sample5 figcaption ul.sns-btns li.twitter {
    background: #55acee;
    padding: 8px;
    transition-delay: .4s;
}
.sample5 figcaption ul.sns-btns li.facebook {
    background: #3b5998;
    left: 35px;
    transition-delay: .2s;
}
.sample5 figcaption ul.sns-btns li.google {
    background: #df4a32;
    left: 70px;
    transition-delay: 0s;
}
.sample5 figure:hover figcaption ul.sns-btns li.twitter {
    transition-delay: 0s;
}
.sample5 figure:hover figcaption ul.sns-btns li.facebook {
    transition-delay: .2s;
}
.sample5 figure:hover figcaption ul.sns-btns li.google {
    transition-delay: .4s;
}
.sample5 figcaption ul.sns-btns li img {
    height: 100%;
    vertical-align: top;
}