Result
マウスホバーで画像がスライド移動する際、枠が残るように見えるエフェクトを実装するCSSです
css
.image-border {/*一番下の部分の画像*/
width: 300px;
height: 300px;
background-color: #eee;
background-image: url("https://unsplash.it/300?image=885");
position: relative;
z-index: 1;
}
.image-border:after {/*画像の下に背景が白い要素を残す事で切り抜かれたように見える*/
content: '';
position: absolute;
width: 290px;
height: 290px;
left: 5px;
top: 5px;
background-color: #fff;
}
.image-border .main-image {/*移動用のレイヤーを重ねて背景に同じ画像を設定*/
position: absolute;
width: 290px;
height: 290px;
left: 5px;
top: 5px;
background-image: url("https://unsplash.it/300?image=885");
background-size: 300px 300px;
background-position: center center;
z-index: 2;
transition: .2s ease-in-out;
}
.image-border:hover > .main-image {/*ホバーで移動させる*/
transform: translate(-50px, -50px);
transition: .2s ease-in-out;
}
/*以下、テキスト部分の設定*/
.image-border:hover > p.title:after {
transform: scale3d(1, 1, 1);
transition: .2s ease-in-out;
}
.image-border p.title {
height: 60px;
padding: 0;
position: absolute;
bottom: -80px;
font-weight: 400;
line-height: 60px;
color: #2c3e50;
font-size: 1em;
margin-left: 150px;
transform: translateX(-50%);
}
.image-border p.title:after {
content: '';
position: absolute;
width: 100%;
height: 1px;
background-color: #e74c3c;
bottom: 10px;
left: 0;
transform: scale3d(0, 1, 1);
transition: .2s ease-in-out;
}
.text{
position:absolute;
bottom:0;
right:10%;
z-index:2;
}
html
<div class="image-border"><p class="text">(・▽・)イイ!</p> <div class="main-image"></div> <p class="title">foo bar</p> </div>
