20강 - 멀티 숫자 카운터, 제이쿼리 each

parse(바꾸다)Int(정수) -> 정수로 바꾸겠다.
https://codepen.io/phyno118/pen/ZYpLxmw
[html]
<!-- 제이쿼리 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class="box-count box-1">
<span class="box-count__minus">-</span>
<span class="box-count__num">10</span>
<span class="box-count__plus">+</span>
</div>
<div class="box-count box-2">
<span class="box-count__minus">-</span>
<span class="box-count__num">10</span>
<span class="box-count__plus">+</span>
</div>
<div class="box-count box-3">
<span class="box-count__minus">-</span>
<span class="box-count__num">10</span>
<span class="box-count__plus">+</span>
</div>
<div class="box-count box-4">
<span class="box-count__minus">-</span>
<span class="box-count__num">10</span>
<span class="box-count__plus">+</span>
</div>
[css]
body {
margin: 0;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.box-count {
border: 10px solid black;
padding: 20px;
font-size: 2rem;
font-weight: bold;
user-select: none;
}
.box-count__minus,
.box-count__plus {
cursor: pointer;
}
[js]
console.clear();
// $('.box-count').each(function(index,node)
$(".box-count").each(function (_, node) {
//엘리먼트 들어갈 때 $표시가 들어가는 건 필수가 아니지만 관례이기에 넣는 것이다.
const $boxCount = $(node);
const $btnMinus = $boxCount.find(".box-count__minus");
const $btnPlus = $boxCount.find(".box-count__plus");
const $num = $boxCount.find(".box-count__num");
$btnMinus.click(function () {
const num = parseInt($num.text());
// 조건 ? T : F ;
const newNum = num - 1 >= 0 ? num - 1 : 0;
$num.text(newNum);
});
$btnPlus.click(function () {
const maxNum = 10;
const num = parseInt($num.text());
// 조건 ? T : F ;
const newNum = num + 1 <= maxNum ? num + 1 : maxNum;
$num.text(newNum);
});
});
// $(".box-1__minus").click(function () {
// const num = parseInt($(".box-1__num").text());
// // 조건 ? T : F ;
// const newNum = num - 1 >= 0 ? num - 1 : 0;
// $(".box-1__num").text(newNum);
// });
// $(".box-1__plus").click(function () {
// const maxNum = 10;
// const num = parseInt($(".box-1__num").text());
// // 조건 ? T : F ;
// const newNum = num + 1 <= maxNum ? num + 1 : maxNum;
// $(".box-1__num").text(newNum);
// });
동영상
2603, HTML, CSS, JS 활용, 멀티 숫자 카운터, 제이쿼리 each
21강 - tilt.js 사용법
https://cdnjs.cloudflare.com/ajax/libs/tilt.js/1.2.1/tilt.jquery.min.js
CODEPEN

[html]
<!-- 제이쿼리 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<!-- tilt js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tilt.js/1.2.1/tilt.jquery.min.js"></script>
<div class="js-tilt">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQb0DK9CHyu-Pl9HzqXctd9xuWj0mnEKQCBw&s.jpg" alt="">
</div>
[css]
[js]
$('.js-tilt').tilt({
scale: 1.2,//hover 시 확대 비율
maxTilt: 15,// 기울기 각도 설정
speed: 40,// 애니메이션 속도
grare: false, //반사광
reset: false // 마우스가 벗어났을 때 제자리로 돌아갈지 여부
})
동영상
2603, HTML, CSS, JS 활용, tilt.js 사용법
22강 - 무한하게 이어지는 marquee
marquee animation codepen
6개가 다 맞아떨어져야지 완성이 된다.
1. 글자 길이 + 글자 간격
2. 애니메이션 이동 거리
3. 텍스트 복사
4. 컨테이너 width값
5. 속도, 시간
6. letter-spacing / gap


[html]
<div class="marquee">
<div class="marquee-track">
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<!-- 끊김 방지용 복제 -->
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
<span>Lorem ipsum dolor sit amet consectetur adipisicing elit.</span>
</div>
</div>
[css]
.marquee {
width: 500px;
overflow: hidden;
white-space: nowrap;
}
.marquee-track {
display: flex;
width: max-content;
animation: marquee 30s linear infinite; /* ← 속도 조절 */
}
.marquee-track span {
padding-right: 24px; /* 문장 사이 간격 */
flex-shrink: 0;
}
@keyframes marquee {
from {
transform: translateX(0);
}
to {
transform: translateX(-50%);
}
}
동영상
2603, HTML, CSS, JS 활용, 무한하게 이어지는 marquee
23강 - 다크모드 만드는 방법


Arrow Function vs 일반 함수
// 일반 함수
$('.btn').click(function() {
console.log(this);
});
// this = 클릭된 요소
// arrow function
$('.btn').click(() => {
console.log(this);
});
// this = 바깥 scope
정리
- 간단한 콜백 → arrow function
- 이벤트 / this 필요 → function
[html]
<!-- 제이쿼리 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div><button class="btn-toggle-theme">테마토글</button></div>
<div>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Aut ipsam commodi reprehenderit incidunt in facere nisi explicabo necessitatibus, unde voluptatum inventore omnis excepturi minus harum beatae placeat labore eaque. Odio?</div>
<div class="color-primary">
안녕 반가워 :)
</div>
[css]
/* font */
@font-face {
font-family: 'OngleipParkDahyeon';
src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/2411-3@1.0/Ownglyph_ParkDaHyun.woff2') format('woff2');
font-weight: normal;
font-display: swap;
}
/* 폰트 적용 */
html > body,
html > body input,
html > body button,
html > body textarea {
font-family: "OngleipParkDahyeon";
}
/* 테마시작 */
/* 테마 light */
:root {
--background-color: #fff;
--text-color: #222;
--primary-color: #42c2f5;
}
/* 테마 dark */
:root.dark {
--background-color: #525252;
--text-color: #fcfcfc;
--primary-color: #42c2f5;
}
/* 테마 적용 */
:root {
color: var(--text-color);
background-color: var(--background-color);
transition: all .5s;
}
.color-primary {
color: var(--primary-color);
}
:root.dark .color-primary {
filter: brightness(150%);
}
[js]
// //버전 1
// $('.btn-toggle-theme').click(function() {
// let $root = $(':root');
// if($root.hasClass('dark')) {
// $root.removeClass('dark');
// } else {
// $root.addClass('dark');
// }
// });
// //버전 2
// $('btn-t0ggle-theme').click(function() {
// $(':root').toggleClass('dark');
// });
//버전 3
$('.btn-toggle-theme').click(() => $(':root').toggleClass('dark'));
동영상
'코딩 > 수업메모' 카테고리의 다른 글
| HTML, CSS, JS 활용 - 27 ~ 29강 (0) | 2026.03.17 |
|---|---|
| HTML, CSS, JS 활용 - 24 ~26 강 (0) | 2026.03.16 |
| HTML, CSS, JS 활용 - 15 ~ 19강 (0) | 2026.03.12 |
| HTML, CSS, JS 활용 - 11 ~ 14강 (0) | 2026.03.11 |
| HTML, CSS, JS 활용 - 7 ~ 10강 (0) | 2026.03.10 |