画像をマウスオーバーすると画像の中央から飛び出すようにメニューが表示されます。スマホ表示では単純なリンクの画像にします。htmlとCSSのみで実装します。
htmlのコードは下記になります。
クラス名menu_imgを付与したdivタグ内に、リンクを設定した画像とメニューのulタグを配置します。
<div class="menu_img">
<a href="#"><img src="hover01.jpg" alt=""></a>
<ul>
<li><a href="#">メニュー01:テキストテキストテキスト</a></li>
<li><a href="#">メニュー02:テキストテキストテキスト</a></li>
<li><a href="#">メニュー03:テキストテキストテキスト</a></li>
<li><a href="#">メニュー04:テキストテキストテキスト</a></li>
<li><a href="#">メニュー05:テキストテキストテキスト</a></li>
</ul>
</div>
続いてCSSのコードです。
まずリンクを設定した画像とメニューのulタグを内包するdivタグには、overflow: hiddenを設定します。これがないとfilterでぼかす画像がはみ出して表示されてしまいます。メニューのulタグは画像の中央から飛び出すような動きを実現するため、position: absolute、top: 0、left: 0、right: 0、bottom: 0、width: 100%、height: 100%、transform: scale(0)、transition: .0s、opacity: 0を設定します。そして画像マウスオーバー時にtransform: scale(1)、transition: .7s、opacity: 1にオーバーライトします。なおマウスオーバー時には画像をfilter: blur(10px)でぼかします。
.menu_img {
position: relative;
overflow: hidden;
}
.menu_img img {
filter: blur(0);
transition: .0s;
}
.menu_img:hover img {
filter: blur(10px);
transition: .7s;
}
.menu_img ul {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
width: 100%;
height: 100%;
transform: scale(0);
transition: .0s;
opacity: 0;
background-color: rgba(255,255,255,0.8);
padding: 20px;
box-sizing: border-box;
}
.menu_img:hover ul {
transform: scale(1);
transition: .7s;
opacity: 1;
}
.menu_img ul li {
border-bottom: 1px solid #999;
}
.menu_img ul li:first-child {
border-top: 1px solid #999;
}
.menu_img ul li a {
display: block;
background: url(arrow.png) no-repeat 8px center;
background-size: 3px auto;
padding: 10px 0 10px 16px;
text-decoration: none;
transition: .3s;
color: #000;
}
.menu_img ul li:hover a {
background-color: rgba(255,255,255,0.9);
}
@media screen and (max-width: 640px) {
.menu_img:hover img {
filter: blur(0);
}
.menu_img a:hover img {
opacity: .5;
}
.menu_img ul {
display: none;
}
}