과거 프로그래밍 자료들/Html&CSS
[유튜브 강의]스크립트 없이 만드는 자동 슬라이드 효과 /* transform:translateX */ [HTML+CSS{코남}] 공부
평부
2021. 6. 5. 00:01
※ 학습 이유 : 메인화면에 넣은 움직이는 사진(+자동으로 넘기는 것도 포함) 화면 필요
※ 코드는 전적으로 코남님에게 있으며, 문제가 될 경우 내릴 예정
※ https://www.youtube.com/watch?v=idjslG3qpjs&t=651s (출처)
※ 스프링을 공부하고 있어 화면 표시 부분은 jsp로 진행
※ 총 진행 파일(html: ex.jsp / css: ex.css)
[구현 화면]
[html : ex.jsp]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<!-- custom css file link -->
<link rel="stylesheet" href="ex.css">
<meta charset="UTF-8">
<title>자동 슬라이드</title>
</head>
<body>
<div class="slidebox">
<input type="radio" name="slide" id="slide01" checked>
<input type="radio" name="slide" id="slide02">
<input type="radio" name="slide" id="slide03">
<input type="radio" name="slide" id="slide04">
<ul class="slidelist">
<li class="slideitem">
<div>
<label for="slide04" class="left"></label>
<label for="slide02" class="right"></label>
<a><img src="images/slideimg01.jpg"></a>
</div>
</li>
<li class="slideitem">
<div>
<label for="slide01" class="left"></label>
<label for="slide03" class="right"></label>
<a><img src="images/slideimg02.jpg"></a>
</div>
</li>
<li class="slideitem">
<div>
<label for="slide02" class="left"></label>
<label for="slide04" class="right"></label>
<a><img src="images/slideimg03.jpg"></a>
</div>
</li>
<li class="slideitem">
<div>
<label for="slide03" class="left"></label>
<label for="slide01" class="right"></label>
<a><img src="images/slideimg04.jpg"></a>
</div>
</li>
</ul>
</div>
</body>
</html>
|
cs |
[css: ex.css]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
* {
margin:0; /*브라우저 내 기본 설정값 초기화*/
padding: 0;/*브라우저 내 기본 설정값 초기화*/
box-sizing: border-box;
}
ul, li { /*ul, li의 리스트 스타일 제거*/
list-style: none;
}
/*슬라이드에 직접 적용되는 스타일*/
[name="slide"] { display: none; } /*클래스 slidebox 내 name="slide"부분 */
.slidebox {
max-width: 1000px;
width: 100%;
margin: 0 auto;
}
.slidebox img { /*자신의 넓이 이상으로 커지지 않도록 함, 반응형 사용 가능*/
max-width: 100%;
}
.slidebox .slidelist {
white-space: nowrap;
font-size:0; /*빈공간을 없애기 위함*/
overflow: hidden; /*초과해서 이미지가 나올 경우 나오지 않게 함*/
}
.slidebox .slideitem {
position: relative;
display: inline-block; /*세로 정렬을 가운데 맞추기 위함*/
vertical-align: middle;
width: 100%;
transition: all .35s; /*자연스러운 전환 속성을 위함*/
}
.slidebox .slideitem label {
position: absolute; /*자율 배치하는 값*/
z-index: 1; /*기본값 1*/
top: 50%;
transform: translateY(-50%); /*가운데 지정*/
padding: 20px;
border-radius: 50%; /*둥근 버튼 모양*/
cursor: pointer; /*마우스가 올라가면 커서가 포인터로 바뀌도록 함*/
}
label.left {
left: 20px;
background-color: white;
background-image:url('images/left-arrow.png');
background-position: center center;
background-size: 50%;
background-repeat: no-repeat;
}
label.right {
right: 20px;
background-color: white;/*강의에서는 #5f5f5f;*/
background-image:url('images/right-arrow.png');
background-position: center center;
background-size: 50%;
background-repeat: no-repeat;
}
[id="slide01"]:checked ~ .slidelist .slideitem {transform:translateX(0); animation:slide01 10s infinite}
[id="slide02"]:checked ~ .slidelist .slideitem {transform:translateX(-100%); animation:slide02 10s infinite}
[id="slide03"]:checked ~ .slidelist .slideitem {transform:translateX(-200%); animation:slide03 10s infinite}
[id="slide04"]:checked ~ .slidelist .slideitem {transform:translateX(-300%); animation:slide04 10s infinite}
@keyframes slide01 {
0% {left: 0%;} /*첫 번째 스크린*/
25% {left: 0%;} /*두 번째로 위치 이동*/
48% {left: -100%;} /*두 번째로 위치 이동, 두 번쨰 스크린*/
50% {left: -100%;}/*세 번째로 위치 이동*/
73% {left: -200%;}/*세 번째로 위치 이동, 세 번쨰 스크린*/
75% {left: -200%;}/*네 번째로 위치 이동, 네 번째 스크린*/
98% {left: -300%;} /*네 번째 스크린*/
100% {left:0%} /*첫 번째 스크린 이동*/
}
@keyframes slide02 {
0% {left: 0%;} /*첫 번째 스크린*/
23% {left: 0%;}
25% {left: -100%;}
48% {left: -100%;}
50% {left: -200%;}
73% {left: -200%;}
75% {left: 100%;}/*첫 스크린 이동*/
98% {left: 100%;} /*첫 스크린 이동*/
100% {left:0%}
}
@keyframes slide03 {
0% {left: 0%;} /*첫 번째 스크린*/
23% {left: 0%;}
25% {left: -100%;}
48% {left: -100%;}
50% {left: 200%;}
73% {left: 200%;}
75% {left: 100%;}/*첫 스크린 이동*/
98% {left: 100%;} /*첫 스크린 이동*/
100% {left:0%}
}
@keyframes slide04 {
0% {left: 0%;} /*첫 번째 스크린*/
23% {left: 0%;}
25% {left: 300%;}
48% {left: 300%;}
50% {left: 200%;}
73% {left: 200%;}
75% {left: 100%;}/*첫 스크린 이동*/
98% {left: 100%;} /*첫 스크린 이동*/
100% {left:0%}
}
|
cs |
[배운 점]
1. 코남님이 움직이는 기능은 보통 js를 많이 쓰는데 반해, css로만 구현한 것이 있어 이 부분을 배울 수 있었음
2. 특히 자동으로 사진을 넘기는 부분을 꼭 알고 싶었는데 유투브로 배울 수 있어서 즐거웠음