Zoeeey 2023. 1. 12. 17:32

6. Carousel slider ๋งŒ๋“ค๊ธฐ

์กฐ๊ฑด

๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

$('.slide-1').on('click', function(){
    $('.slide-container').css('transform', 'translateX(0)');
})
$('.slide-2').on('click', function(){
    $('.slide-container').css('transform', 'translateX(-100vw)');
})
$('.slide-3').on('click', function(){
    $('.slide-container').css('transform', 'translateX(-200vw)');
})

7. Carousel slider ๋งŒ๋“ค๊ธฐ 2

์กฐ๊ฑด

์ด์ „/๋‹ค์Œ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ. ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€์—์„œ ์ด์ „ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰ ์ด๋ฏธ์ง€์—์„œ ๋‹ค์Œ ๋ˆŒ๋Ÿฌ๋„ ์˜ค๋ฅ˜ ์—†์ด ์ž‘๋™ํ•˜๊ธฐ

let nowPic = 1;
$('.slide-container').css('width', `${$('.slide-box').length}00vw`);
$('.prev').on('click', function(){
    if (nowPic == 1) {
        $('.slide-container').css('transform', `translateX(-${$('.slide-box').length - 1}00vw)`);
        nowPic = $('.slide-box').length;
    } else {
        $('.slide-container').css('transform', `translateX(-${nowPic - 2}00vw)`);
        nowPic--;
    }
})
$('.next').on('click', function(){
    if (nowPic == $('.slide-box').length) {
        $('.slide-container').css('transform', `translateX(0)`);
        nowPic = 1;
    } else {
        $('.slide-container').css('transform', `translateX(-${nowPic}00vw)`);
        nowPic++;
    }
})

๊นจ๋‹ฌ์€ ์  : ๋ฌธ์ž์—ด ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค! ES6์—์„œ ์ถ”๊ฐ€๋œ Template literals๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์„ ๋ฐฑํ‹ฑ๊ธฐํ˜ธ ``๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•ˆ์— ${} ํ˜•ํƒœ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ''๋กœ ๋œ ๋ฌธ์ž์—ด์—๋Š” ์“ธ ์ˆ˜ ์—†์—ˆ๋‹ค.


8. ์ˆ˜์ˆ˜๋ฃŒ ๊ณ„์‚ฐํ•˜๊ธฐ

์กฐ๊ฑด

์†Œ์ˆ˜์  ์˜ค์ฐจ ๊ฐœ์„ ํ•˜๊ณ , ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ return์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

console.log(vat(55555));

function vat(a) {
    let num = (a * 1.1).toFixed(1);
    return parseFloat(num);
}

๊นจ๋‹ฌ์€ ์  : ์ •๋ง ๊ฐ„๋‹จํ•˜๊ธด ํ•œ๋ฐ ์—ฌํƒœ๊นŒ์ง€๋Š” return์„ ๋นผ๋„ ์ฝ˜์†”์— ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ๋œฐ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ฐ™์€ a * 0.1์„ ๋‹ด๊ณ  ์žˆ๋”๋ผ๋„ ๋ฆฌํ„ด์ด ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ๊ฐ’์„ ํ‰ค ๋ฑ‰์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฆฌํ„ด์ด ์—†๋Š” ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋˜๋ฉด ์‹คํ–‰๋งŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (๊ทธ๋ž˜์„œ undefined๊ฐ€ ๋œจ๋”๋ผ)


9. ๋ถ„, ์ดˆ๋ฅผ ๋„ฃ์œผ๋ฉด ms๋กœ ๊ตฌํ•˜๊ธฐ

console.log(timeChanger(1,30));

function timeChanger (min, s){
    let minChange = min * 60;
    let result = minChange + s;
    return result * 1000;
}

10. ํ• ์ธ์— ์ตœ์ดˆ๊ตฌ๋งคํ• ์ธ ๋จน์—ฌ์„œ ์ตœ์ข…๊ตฌ๋งค๊ฐ€ ๊ตฌํ•˜๊ธฐ

์กฐ๊ฑด

1. ์†Œ์ˆ˜์  ์˜ค์ฐจ ๊ฐœ์„ ํ•˜๊ณ , ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ return์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
2. 10ํผ์„ผํŠธ ํ• ์ธ๊ฐ€ ๋จน์ด๊ณ , ์ฒซ๊ตฌ๋งค์ผ ์‹œ 1.5๋‹ฌ๋Ÿฌ ์ถ”๊ฐ€ ํ• ์ธํ•ด์„œ ์ตœ์ข…๊ตฌ๋งค๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

console.log(disCounter(10,true));

function disCounter (price, firsttime){
    let finalPrice = (price * 0.9).toFixed(1);
    if (firsttime == true) {
        return parseFloat(finalPrice) - 1.5;
    } else {
        return parseFloat(finalPrice);
    }
}

11. ๋„ค๋น„๋ฐ” ํ…์ŠคํŠธ ์Šคํฌ๋กค ๋‚ด๋ฆฌ๋ฉด ํฐํŠธ์‚ฌ์ด์ฆˆ ์ค„์ด๊ธฐ

์กฐ๊ฑด

์Šคํฌ๋กค ๋‹ค์‹œ ์˜ฌ๋ฆฌ๋ฉด ํฐํŠธ์‚ฌ์ด์ฆˆ ๋‹ค์‹œ ํ‚ค์šฐ๊ธฐ

window.addEventListener('scroll', function(){
    if (window.scrollY > 100) {
        document.querySelector('.navbar-brand').style.fontSize = '16px';
    } else {
        document.querySelector('.navbar-brand').style.fontSize = '30px';
    }
})

12. ์•ฝ๊ด€๋ฐ•์Šค ์Šคํฌ๋กค ๋๊นŒ์ง€ ๋‚ด๋ฆฌ๋ฉด ์–ผ๋Ÿฟ๋„์šฐ๊ธฐ

์กฐ๊ฑด

์™„์ „ํžˆ ๋๊นŒ์ง€ ๋‚ด๋ฆฌ์ง€ ์•Š์•„๋„ ์ ๋‹นํžˆ ๋‹ค ์ฝ์œผ๋ฉด ์–ผ๋Ÿฟ๋„์šฐ๊ธฐ

let lorem = document.querySelector('.lorem');
lorem.addEventListener('scroll', function(){
    if ((lorem.scrollTop + lorem.getBoundingClientRect().height) > (lorem.scrollHeight - 10)) {
        alert('๋๊นŒ์ง€ ์ฝ์—ˆ์Œ.');
    }
})

๊นจ๋‹ฌ์€ ์ 

scrollHeight/clientHeight/offsetHeight/getBoundingClientRect()์— ๋Œ€ํ•ด์„œ ์„œ์น˜ํ•˜๋ฉฐ ์•Œ๊ฒŒ ๋œ ๊ฑด ๋”ฐ๋กœ ๊ธ€๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.
addEventListener('scroll') ์•ž์— window.๋กœ ๋ถ™์˜€๋”๋‹ˆ ์ž‘๋™ ์•ˆํ–ˆ๋‹ค. (์•ฝ๊ด€์„ ์Šคํฌ๋กคํ•˜๋Š”๊ฒƒ์ด๋‹ˆ ๋‹น์—ฐํ•จ) ์ฃผ์˜ํ•˜์ž.

๊ฐœ์„ ํ•  ์ 

์š”์†Œ์˜ ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋†’์ด๊ฐ’์„ element.getBoundingClientRect().height๋กœ ํž˜๊ฒน๊ฒŒ ๊ตฌํ–ˆ๋Š”๋ฐ, element.clientHeight๋กœ๋„ ๋™์ผํ•œ ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค๊ณ  ํ•œ๋‹ค?

์ด์— ๊ด€ํ•ด ์“ด ๊ธ€ : [์ฝ”๋”ฉ์• ํ”Œ] ์š”์†Œ์˜ ๋†’์ด์™€ ์œ„์น˜๊ฐ’ ๊ตฌํ•˜๊ธฐ (clientHeight, offsetHeight, scrollHeight, getBoundingClientRect()) — PERFECTLY YELLOW (tistory.com)  


13. ํ™”๋ฉด์„ ๋‚ด๋ฆฌ๋ฉด ์ง„ํ–‰๋„๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐ” ๋งŒ๋“ค๊ธฐ

const progress = document.querySelector('.progress');
const progressBar = document.querySelector('.progress .bar');
window.addEventListener('scroll', function(){
    let nowProgress = Math.max(window.scrollY / (document.body.scrollHeight - window.innerHeight)).toFixed(2) * 100;
    progressBar.style.width = nowProgress + `%`;
})

๊นจ๋‹ฌ์€ ์ 

window.scrollY(ํ˜„์žฌ์Šคํฌ๋กค์œ„์น˜)  document.body.scrollHeight(๋ฌธ์„œ ์ „์ฒด์˜ ๋†’์ด) window.innerHeight(๋ชจ๋‹ˆํ„ฐ์•ˆ ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์˜ ๋†’์ด)๋กœ ๊ตฌํ–ˆ๋‹ค.
๋ฌธ์„œ ์ „์ฒด์˜ ๋†’์ด๋Š” ์ •ํ™•ํžˆ๋Š” ์ด๋ ‡๊ฒŒ ๊ตฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

let scrollHeight = Math.max(
  document.body.scrollHeight, document.documentElement.scrollHeight,
  document.body.offsetHeight, document.documentElement.offsetHeight,
  document.body.clientHeight, document.documentElement.clientHeight
);

์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://ko.javascript.info/size-and-scroll-window


์ถœ์ฒ˜ : ์ฝ”๋”ฉ์• ํ”Œ https://codingapple.com/