<div class="cp_cssslider01">
<div class="cp_slidewrapper01">
<div class="cp_slide01_item"><img src="img1.jpg"></div>
<div class="cp_slide01_item"><img src="img2.jpg"></div>
<div class="cp_slide01_item"><img src="img3.jpg"></div>
<div class="cp_slide01_item"><img src="img4.jpg"></div>
<div class="cp_slide01_item"><img src="img5.jpg"></div>
</div>
</div>
/* slideの枠 */
.cp_cssslider01 {
width: 300px;
height: 200px;
overflow: hidden;
margin: 1em auto;
border: 10px solid #ffffff;
box-shadow:0px 0px 5px 0px rgba(0,0,0,0.5);
}
/* 画像のグループ */
.cp_slidewrapper01 {
width: 500%;/* slideの枚数×100% */
position: relative;
display: flex;
animation: cp_slider01 20s infinite ease;
}
/* 画像単体の設定 */
.cp_slide01_item {
width: 300px;
height: 200px;
}
@keyframes cp_slider01 {
/* 100%を枚数で割った%に割り振る */
0% { transform: translateX(0); }
20% { transform: translateX(-300px); }
40% { transform: translateX(-600px); }
60% { transform: translateX(-900px); }
80% { transform: translateX(-1200px); }
100% { transform: translateX(0); }
}
<div class="cp_cssslider04">
<div class="mask">
<ul>
<li><a href="#"><img src="img1.jpg" /></a>
<div class="tooltip"><h1>sample1</h1></div></li>
<li><a href="#"><img src="img2.jpg" /></a>
<div class="tooltip"><h1>sample2</h1></div></li>
<li><a href="#"><img src="img3.jpg" /></a>
<div class="tooltip"><h1>sample3</h1></div></li>
<li><a href="#"><img src="img4.jpg" /></a>
<div class="tooltip"><h1>sample4</h1></div></li>
<li><a href="#"><img src="img5.jpg" /></a>
<div class="tooltip"><h1>sample5</h1></div></li>
</ul>
</div>
<div class="cp_progressbar"></div>
</div>
.cp_cssslider04 {
height:220px;/*枠分プラス(10px+10px)*/
width:300px;
margin:2em auto;
overflow:visible;
position:relative;
background:#cccccc;
border: 10px solid #ffffff;
box-shadow:1px 1px 5px rgba(0,0,0,0.7);
}
.cp_cssslider04 .mask {
overflow:hidden;
height:200px;
}
.cp_cssslider04 ul {
margin:0;
padding:0;
position:relative;
}
.cp_cssslider04 li {
position:absolute;
top:-200px;
width:300px;
height:200px;
list-style:none;
}
.cp_cssslider04 li:nth-child(1){
animation:cycle1 25s linear infinite;
}
.cp_cssslider04 li:nth-child(2){
animation:cycle2 25s linear infinite;
}
.cp_cssslider04 li:nth-child(3){
animation:cycle3 25s linear infinite;
}
.cp_cssslider04 li:nth-child(4){
animation:cycle4 25s linear infinite;
}
.cp_cssslider04 li:nth-child(5){
animation:cycle5 25s linear infinite;
}
/* tooltip */
.cp_cssslider04 .tooltip {
position:relative;
bottom:95px;
left:-300px;
width:200px;
height:auto;
background:rgba(0,0,0,0.7);
transition:all 0.3s ease-in-out;
}
.cp_cssslider04 .tooltip h1 {
color:#fff;
padding:0 0 0 20px;
}
.cp_cssslider04 li:hover .tooltip{
left:0px;
}
.cp_cssslider04:hover li,
.cp_cssslider04:hover .cp_progressbar {
animation-play-state:paused;
}
/* PROGRESS BAR */
.cp_progressbar {
position:relative;
top:-5px;
width:680px;
height:5px;
background:#000000;
animation:progressbar 25s ease-out infinite;
}
/* ANIMATION */
@keyframes cycle1 {
0% { top:0px; }
4% { top:0px; }
16% { top:0px; opacity:1; z-index:0; }
20% { top:200px; opacity:0; z-index:0; }
21% { top:-200px; opacity:0; z-index:-1; }
50% { top:-200px; opacity:0; z-index:-1; }
92% { top:-200px; opacity:0; z-index:0; }
96% { top:-200px; opacity:0; }
100%{ top:0px; opacity:1; }
}
@keyframes cycle2 {
0% { top:-200px; opacity:0; }
16% { top:-200px; opacity:0; }
20% { top:0px; opacity:1; }
24% { top:0px; opacity:1; }
36% { top:0px; opacity:1; z-index:0; }
40% { top:200px; opacity:0; z-index:0; }
41% { top:-200px; opacity:0; z-index:-1; }
100%{ top:-200px; opacity:0; z-index:-1; }
}
@keyframes cycle3 {
0% { top:-200px; opacity:0; }
36% { top:-200px; opacity:0; }
40% { top:0px; opacity:1; }
44% { top:0px; opacity:1; }
56% { top:0px; opacity:1; z-index:0; }
60% { top:200px; opacity:0; z-index:0; }
61% { top:-200px; opacity:0; z-index:-1; }
100%{ top:-200px; opacity:0; z-index:-1; }
}
@keyframes cycle4 {
0% { top:-200px; opacity:0; }
56% { top:-200px; opacity:0; }
60% { top:0px; opacity:1; }
64% { top:0px; opacity:1; }
76% { top:0px; opacity:1; z-index:0; }
80% { top:200px; opacity:0; z-index:0; }
81% { top:-200px; opacity:0; z-index:-1; }
100%{ top:-200px; opacity:0; z-index:-1; }
}
@keyframes cycle5 {
0% { top:-200px; opacity:0; }
76% { top:-200px; opacity:0; }
80% { top:0px; opacity:1; }
84% { top:0px; opacity:1; }
96% { top:0px; opacity:1; z-index:0; }
100%{ top:200px; opacity:0; z-index:0; }
}
/* ANIMATION BAR */
@keyframes progressbar {
0%, 20%, 40%, 60%, 80%, 100% { width:0%; opacity:0; z-index:2; }
4%, 24%, 44%, 64%, 84% { width:0%; opacity:0.3; z-index:2; }
16%, 36%, 56%, 76%, 96% { width:100%; opacity:0.3; z-index:2; }
18%, 38%, 58%, 78%, 98% { width:100%; opacity:0; z-index:2; }
}
<div class="cp_cssslider02">
<input type="radio" name="cp_switch" id="photo1" checked/>
<label for="photo1"><img src="img1.jpg" /></label>
<img src="img1.jpg" />
<input type="radio" name="cp_switch" id="photo2"/>
<label for="photo2"><img src="img2.jpg" /></label>
<img src="img2.jpg" />
<input type="radio" name="cp_switch" id="photo3"/>
<label for="photo3"><img src="img3.jpg" /></label>
<img src="img3.jpg" />
<input type="radio" name="cp_switch" id="photo4"/>
<label for="photo4"><img src="img4.jpg" /></label>
<img src="img4.jpg" />
<input type="radio" name="cp_switch" id="photo5"/>
<label for="photo5"><img src="img5.jpg" /></label>
<img src="img5.jpg" />
</div>
.cp_cssslider02 {
width: 300px;
padding-top: 200px; /* 画像の高さ */
position: relative;
margin: 2em auto;
text-align: center;
}
.cp_cssslider02 > img {
position: absolute;
left: 0;
top: 0;
transition: all 0.5s;
border-radius: 3px;
box-shadow:0px 0px 5px 0px rgba(0,0,0,0.3);
}
.cp_cssslider02 input[name='cp_switch'] {
display: none;
}
/* サムネイル */
.cp_cssslider02 label {
margin: 15px 5px 0 5px;
border: 2px solid #ffffff;
display: inline-block;
cursor: pointer;
transition: all 0.5s ease;
opacity: 0.6;
border-radius: 3px;
padding: 0;
}
.cp_cssslider02 label:hover {
opacity: 0.9;
}
.cp_cssslider02 label img {
display: block;
width: 40px;
border-radius: 2px;
}
.cp_cssslider02 input[name='cp_switch']:checked + label {
border: 2px solid #FF7043;
opacity: 1;
}
.cp_cssslider02 input[name='cp_switch'] ~ img {
opacity: 0;
}
.cp_cssslider02 input[name='cp_switch']:checked + label + img {
opacity: 1;
}
CSS3などで新たに追加された要素・装飾方法など、日々コードを書いていないと忘れてしまったり、ささっとプロトタイプを作る時などちょっとしたことに時間をかけている暇はない。そんな時に「あ〜、あれストックしときゃよかったなぁ」って困った自分用のストックブログです。カスタマイズなどがしやすいよう、昨今のweb制作に取り入れられる一般的なコードを中心に掲載しています。
@CopypetJp More Info