サンプル(DEMO)
本サンプル表示用HTML
<div id="stage"> <div id="box1"> <div id="thumb1"><a href="#p1"><img src="img/yari.jpg" width="200" height="112"></a></div> <div id="title1"><img src="img6/yari_t.jpg" width="200" height="112"></div> </div> <div id="box2"> <div id="thumb2"><a href="#p2"><img src="img/hodaka.jpg" width="200" height="112"></a></div> <div id="title2"><img src="img6/hodaka_t.jpg" width="200" height="112"></div> </div> <div id="box3"> <div id="thumb3"><a href="#p3"><img src="img/shirouma.jpg" width="200" height="112"></a></div> <div id="title3"><img src="img6/shirouma_t.jpg" width="200" height="112"></div> </div> <div id="box4"> <div id="thumb4"><a href="#p4"><img src="img/kasa.jpg" width="200" height="112"></a></div> <div id="title4"><img src="img6/kasa_t.jpg" width="200" height="112"></div> </div> <div id="box5"> <div id="thumb5"><a href="#p5"><img src="img/turugi.jpg" width="200" height="112"></a></div> <div id="title5"><img src="img6/turugi_t.jpg" width="200" height="112"></div> </div> <div id="box6"> <div id="thumb6"><a href="#p6"><img src="img/harinoki.jpg" width="200" height="112"></a></div> <div id="title6"><img src="img6/harinoki_t.jpg" width="200" height="112"></div> </div> <div id="p1" class="photo"><img src="img6/yari_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> <div id="p2" class="photo"><img src="img6/hodaka_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> <div id="p3" class="photo"><img src="img6/shirouma_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> <div id="p4" class="photo"><img src="img6/kasa_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> <div id="p5" class="photo"><img src="img6/turugi_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> <div id="p6" class="photo"><img src="img6/harinoki_l.jpg"><span class="cls"><a href="#p11">X 閉じる</span></a></div> </div>
HTMLのスポット説明
・<div id="thumb1"><a href="#p1><img src="img/yari.jpg" width="200" height="112"></a></div> と、<div id="p1" class="photo"><img src="img/yari_l.jpg"><span class="cls"><a href="#p11">☓ 閉じる</span></a></div> で、
記述内リンクを貼り、css の target 擬似クラスを使ってクリックに該当する写真の transition を作動させている。
本サンプル表示用CSS
/* 表示枠 */
#stage {
position:relative;
width:630Px;
height:390px;
background:#333;
}
/* タイトルボックスのサイズと配置 */
#box1,#box2,#box3,#box4,#box5,#box6 {
width:200px;
height:112px;
}
#box1 {
position:absolute;
left:5px; top:10px;
}
#box2 {
position:absolute;
left:215px; top:10px;
}
#box3 {
position:absolute;
left:425px; top:10px;
}
#box4 {
position:absolute;
left:5px; top:132px;
}
#box5 {
position:absolute;
left:215px; top:132px;
}
#box6 {
position:absolute;
left:425px; top:132px;
}
#box1 img,#box2 img,#box3 img,#box4 img,#box5 img,#box6 img {
position:absolute;
left:0;top:0;
}
/* タイトルボックスのhoverでanimation開始 */
/* 裏面配置サムネイルのanimation設定 */
#box1:hover #thumb1 img,#box2:hover #thumb2 img,#box3:hover #thumb3 img,#box4:hover #thumb4 img,#box5:hover #thumb5 img,#box6:hover #thumb6 img{
cursor:pointer;
-webkit-transform-origin:50% 50%;
-webkit-animation:rot1 0.5s linear;
-webkit-animation-fill-mode: forwards;
transform-origin:50% 50%;
animation:rot1 0.5s linear;
animation-fill-mode: forwards;
}
/* 裏面配置タイトルボックスのanimation設定 */
#box1:hover #title1 img,#box2:hover #title2 img,#box3:hover #title3 img,#box4:hover #title4 img,#box5:hover #title5 img,#box6:hover #title6 img {
cursor:pointer;
-webkit-transform-origin:50% 50%;
-webkit-animation:rot2 0.5s linear;
-webkit-animation-fill-mode: forwards;
transform-origin:50% 50%;
animation:rot2 0.5s linear;
animation-fill-mode: forwards;
}
@-webkit-keyframes rot1 {
0% {-webkit-transform:rotateY(-180deg) skewY(0deg); z-index:10;}
50% {-webkit-transform:rotateY(-90deg) skewY(20deg); z-index:10;}
100%{-webkit-transform:rotateY(0deg) skewY(0deg); z-index:11;}
}
@-webkit-keyframes rot2 {
0% {-webkit-transform:rotateY(0deg) skewY(0deg); z-index:11;}
50% {-webkit-transform:rotateY(90deg) skewY(-20deg); z-index:10;}
100%{-webkit-transform:rotateY(180deg) skewY(0deg); z-index:10;}
}
@keyframes rot1 {
0% {transform:rotateY(-180deg) skewY(0deg); z-index:10;}
50% {transform:rotateY(-90deg) skewY(20deg); z-index:11;}
100%{transform:rotateY(0deg) skewY(0deg); z-index:11;}
}
@keyframes rot2 {
0% {transform:rotateY(0deg) skewY(0deg); z-index:11;}
50% {transform:rotateY(90deg) skewY(-20deg); z-index:10;}
100%{transform:rotateY(180deg) skewY(0deg); z-index:10;}
}
/* 拡大写真の配置とtransitionをセット */
.photo {
position:absolute;
top:5px;left:5px;
z-index:-1;
opacity:0;
transition: opacity 1s ease;
}
/* クリックされたサムネイルに該当する拡大写真の不透明度を1に */
.photo:target {
z-index:100;
opacity:1;
}
.cls {
position:absolute;
top:360px;
left:550px;
}
.cls a {
text-decoration:none;
color:#fff;
font-weight:bold;
}
CSSのスポット説明
・#box1 - #box6 のサイズを指定して、このdivのhoverでanimationが作動するようにしている。imgにhoverを指定すると、回転するのでhover状態が不安定になる。・サムネイル収容div(thumb1など)とタイトルタイルdiv(title1など)は、重ねて配置しておき、rotateY回転角を180°ずらした animation を設定し、90°回転して両方が線状態になったところで、z-indexを切り替えて、裏に隠れていたサムネイルを表示させている。
・回転と同時に、Y軸方向にskewを使って傾斜をつけ、回転しているという実感を表現した。
・拡大写真は、全て画面中央いっぱいに重ねて配置し、opacityを0にして見えないようにしておき、クリックされたサムネイルをtargetで感知し、該当する拡大写真のopacityを1にすることで、transitionによってFadeInさせている。
・閉じるボタンは、定義のない#p11にリンクさせ、初期画面に戻るようにした。


















ピンバック: 回転するバナー作成 | ミリオンハイスクール | ネットビジネス | WordPress
ピンバック: 回転するバナー作成の依頼詳細 5,000円 ~ 50,000円 | デンコム(DENCOM)
お世話になります、サイト管理者様。
余談ですが、画像の「yari_l.jpg」l(エル)と1(いち)の見分けがつきまでんでした。
お世話になります、管理者様。
閉じるボタンの位置は、どの部分で制御されていますでしょうか
ご教示よろしくお願いいたします。
class="cls"、すなわち、.cls です。
ありがとうございました。調整できました。
どういたしまして。
ご活用ください。