- x์ด ํ ()์์ ์ฝ๋ ์คํ.
- setTimeout(function(){
์คํํ ์ฝ๋}, ms)- ์ฝ๋ฐฑํจ์ ์๋ฆฌ์๋ ๋ง๋ค์ด๋ ํจ์๋ ๋ฃ์ ์ ์์.
- x์ด๋ง๋ค ์ฝ๋์คํ
- setInterval(function(){
์คํํ ์ฝ๋}, ms)
<div class="alert alert-danger"> 5์ด ์ด๋ด ๊ตฌ๋งค ์ ์ฌ์ํ ์ฆ์ !!! </div> <script> let count = 5; setInterval(function(){ --count if(count<=0){ document.querySelector('.alert-danger').style.display = 'none' } else{ document.querySelector('.alert-danger').innerText = `${count}์ด ์ด๋ด ๊ตฌ๋งค ์ฌ์ํ ์ฆ์ !` } }, 1000)
- ์ด๊ธฐ๊ฐ 5๋ฅผ count๋ผ๋ ๋ณ์์ ์ ์ฅํ๊ณ setInterval ํจ์๋ฅผ ํตํด 1์ด๋ง๋ค 1์ฉ ๊ฐ์ํ๊ณ
- ๋ง์ฝ ๋ณ์ count์ ๊ฐ์ด 0์ด ๋๋ฉด
alert-danger๋ผ๋ ํด๋์ค๋ช ์<div>์ display๋ฅผnone์ผ๋ก ๋ณ๊ฒฝ. ๊ทธ๋ ์ง ์์ผ๋ฉด${count}์ด ์ด๋ด ๊ตฌ๋งค ์ฌ์ํ ์ฆ์ !์ด๋ผ๋ ํ ์คํธ๋ฅผ ๋ฃ์ด์ค.
- ๋ณ์++
๋ณ์+=1
๋ณ์=๋ณ์+1
<script> var count = 0; document.querySelector('.badge').addEventListener('click', function(){ count += 1; if(count%2==0){ document.querySelector('.badge').innerHTML = "Light ๐" } else{ document.querySelector('.badge').innerHTML = "Dark ๐" } })
- ์ด๊ธฐ ๊ฐ 0์ ๋ณ์ count์ ํ ๋นํด์ฃผ๊ณ badge๋ผ๋ ํด๋์ค๋ช ์ ๊ฐ์ง button์ ํด๋ฆญ์ด๋ฒคํธ๋ฅผ ๋ถ์ฌํจ
- ๊ทธ ๋ฒํผ์ด ํด๋ฆญ๋๋ฉด count๊ฐ 1์ฉ ์ฆ๊ฐํ๋๋ฐ
- ๋ง์ฝ count๋ฅผ 2๋ก ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 0์ด๋ผ๋ฉด Light๋ผ๋ ํ ์คํธ๊ฐ ๋ณด์ด๊ณ
- ๋๋จธ์ง๊ฐ 0์ด ์๋ ๋๋ Dark๋ผ๋ ํ ์คํธ๊ฐ ๋ณด์ธ๋ค!
** ๋ชจ๋ ํ์๋ 2๋ก ๋๋ด์๋ ๋๋จธ์ง๊ฐ 1์ด๊ณ ์ง์๋ ๋๋จธ์ง๊ฐ 0.
- ์๋ฅผ๋ค์ด
'abc'.includes('a')์ ๊ฒฐ๊ณผ๋true์ด๊ณ
'abc'.includes('n')์ ๊ฒฐ๊ณผ๋false์.
- /a/.test('abcde') โ a๋ผ๋ ๋ฌธ์๊ฐ abcde์์ ์๋์ง ํ์ธํด์ค~
/a/ โ ์๋์ง ๊ฒ์ฌํ ๋ฌธ์
.test('abcde') โ ๊ฒ์ฌ๋นํ ๋ฌธ์
- ๋ฌธ์ ๋ฒ์ ์ง์ ๊ฐ๋ฅ
- ๋ง์ฝ /[a-z]/.test('abcde') ๋ผ๊ณ ์ฐ๋ฉด a~z ์ค ์๋ฌด๊ธ์ 1๊ฐ๊ฐ abcde์ ๋ค์ด์๋๋ผ๋ ๋ป.
- /[a-zA-Z]/.test('abcdeA')๋ ๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ์ํ๋ฒณ ์ค 1๊ฐ๊ฐ abcdeA์์ ๋ค์ด์๋์ง ํ์ธ.
- /[ใฑ-ใ ๊ฐ-ํฃ]/ ์ ๋ชจ๋ ํ๊ตญ์ด๋ฅผ ์๋ฏธ
- /[๋ฐฑ์ฌ๋ ์S]/๋ ์๋ฌด ๋ฌธ์ 1๊ธ์๋ฅผ ์๋ฏธ(ํน์๊ธฐํธ ํฌํจ)
- ์์๊ณผ ๋์ ์ ์ ์์
- /^a/ : a๋ก ์์ํ๋์ง
- /a$/ : a๋ก ๋๋๋์ง
- /a|b/ : a ๋๋ b๊ฐ ๋ค์ด์๋์ง
document.querySelector('form').addEventListener('submit', function(event){
const inputId = document.querySelector('#inputId').value;
const inputPw = document.querySelector('#inputPw').value;
if(inputId==""||inputPw==""){
alert('์
๋ ฅํ ๋ด์ฉ์ด ์์ต๋๋ค.')
event.preventDefault();
}else if(inputPw.length<6){
alert('๋น๋ฐ๋ฒํธ๋ 6์๋ฆฌ ์ด์์ผ๋ก ์
๋ ฅํด์ฃผ์ธ์')
event.preventDefault();
}
if(/\S+@\S+\.\S+/.test(inputId)){
}else{
alert('์ฌ๋ฐ๋ฅธ ํ์์ด ์๋๋๋ค!!')
event.preventDefault();
}
if(/[A-Z]/.test(inputPw)){
}else{
alert('๋๋ฌธ์ 1๊ฐ๋ฅผ ํฌํจํด์ฃผ์ธ์')
event.preventDefault();
}
})
- inputId์ inputPw์ ์ ๋ ฅํ ๋ด์ฉ์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ์ฐฝ ๋์ฐ๊ณ ๋ง์ฝ ๊ทธ๋ ์ง ์๋ค๋ฉด
- inputPw์ ๊ธธ์ด๊ฐ 6์๋ฆฌ ์ดํ๋ผ๋ฉด ๊ฒฝ๊ณ ์ฐฝ์ ๋์.
- ๋ค๋ฅธ ์กฐ๊ฑด๋ฌธ์ผ๋ก inputId์ ๊ฐ์ด ์ด๋ฉ์ผ ํ์์ธ์ง ํ์ธํ๊ณ ์๋๋ผ๋ฉด ๊ฒฝ๊ณ ์ฐฝ.
- ๋ค๋ฅธ ์กฐ๊ฑด๋ฌธ์ ํตํด inputPw์ ๋๋ฌธ์ 1๊ฐ๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธ.
- ์์์คํ์ผ ๊ตฌํ
- ์ต์ข ์คํ์ผ ๊ตฌํ(class๋ช ์ ํ์ฉํด์ css์ ๋ฏธ๋ฆฌ ๊ตฌํ)
- ์ํ ๋ ์ต์ข ์คํ์ผ๋ก ๋ณํ๋ผ๊ณ ์ฝ๋ ์์ฑ
- ์์์คํ์ผ์ transition ์ถ๊ฐ
<div class="card-background">
<div class="card-box">
<img src="์นด๋์ด๋ฏธ์ง1๊ฒฝ๋ก">
</div>
<div class="card-box">
<img src="์นด๋์ด๋ฏธ์ง2๊ฒฝ๋ก">
</div>
<div class="card-box">
<img src="์นด๋์ด๋ฏธ์ง3๊ฒฝ๋ก">
</div>
</div>
.card-background {
height: 3000px;
margin-top: 800px;
margin-bottom: 1600px;
}
.card-box img {
display: block;
margin: auto;
max-width: 80%;
}
.card-box {
position: sticky;
top: 400px;
margin-top: 200px;
}
- ๋์ด๊ฐ 3000px๋ ๋๋ ๊ธด ๋ฐฐ๊ฒฝ์ ์นด๋๋ฅผ ์ธ๋ก๋ก ๋ฐฐ์นํ๊ณ
position : sticky๋ฅผ ํตํด ์คํฌ๋กค ์ ํ๋ฉด์ ๊ณ ์ ๋๋๋ก ํด๋์์.- ์ด์ ์คํฌ๋กค ์
opacity๊ฐ ์ ์ ์ค์ด๋๋ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ ค๋ฉด ์ง๊ธ ์คํฌ๋กค ์์น์ ๋ฐ๋ผopacity๊ฐ 1~0๊น์ง ์ค์ด๋๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํจ.
$(window).scroll(function(){
var ๋์ด = $(window).scrollTop();
});
- ์คํฌ๋กค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํ์ฌ ์ฐฝ์ ์คํฌ๋กค๋ฐ ๋์ด๋ฅผ ์๋ ค์ฃผ๋
$(window).scrollTop()ํจ์ ์คํ.
์ฝ์์ฐฝ์ ์ฐ์ด๋ณด๋ฉด ์คํฌ๋กค๋ฐ ๋์ด๊ฐ ์ธก์ ๋๋ ๊ฒ์ ํ์ธ.
opacity๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํ๊ณ ์ถ๋ค!
- ์ด์ 650px์ฏค ์คํฌ๋กค ํ๋ฉด
opacity๋ฅผ 1๋ก, 900px์์๋opacity๋ฅผ 0.5๋ก 1150px์์๋opacity๋ฅผ 0์ผ๋ก ์ค์ ํ๋ฉด ๋๋ค๋ ๊ฒ์ ์ ์ ์์.
$(window).scroll(function(){
var ๋์ด = $(window).scrollTop();
$('.card-box').eq(0).css('opacity', ???);
});
- ์ฌ๊ธฐ์
???๋ ์คํฌ๋กค๋ฐ ๋์ด๊ฐ 650~1150์ด ๋ ๋, 1~0์ด ๋๋ ๊ฐ๋ณ์ ์ธ ๊ฐ์ด๋ฏ๋ก
๋ฏธ์ง์ ๋ณ์ y๋ผ๊ณ ํํ์ ํ๋ฉด
$(window).scroll(function(){
var ๋์ด = $(window).scrollTop();
var y = ๋ฏธ์ง์ ๋ณ์;
$('.card-box').eq(0).css('opacity', y);
});
- ๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ y๊ฐ์ ๊ตฌํด์ผ ํ๋๋ฐ ์ ์ ์คํ ์ํ์ ๋ ์ฌ๋ ค๋ณด๋ฉด
์คํฌ๋กค๋ฐ๋์ด๊ฐ 650~1150์ด ๋ ๋ 1~0์ด ๋๋ ๊ฐ๋ณ์ ์ธ ๊ฐ = y๋ ์คํ๊ต ๋ ๋ฐฐ์ด์ ์ด ์์.
- ์ด๊ฑธ ์์์ผ๋ก ํํํ๋ฉด y์ ๋ํ ์ผ์ฐจํจ์์. y = ax + b
์ฌ๊ธฐ์ a๋ ๊ธฐ์ธ๊ธฐ b๋ y์ ํธ์ด๋ผ๊ณ ํ๋๋ฐ ๋๋ฌด ์ด๋ ค์ฐ๋๊น ๋์ ๋ฒ์ ์ด์ฉํ๋ฉด
//์ํ์๊ฐ
1 = a * 650 + b
0 = a * 1150 + b
a = -1/500
b = 115/50
- ์ด๊ฑธ ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ๋์ ํ๋ฉด
var y = -1/500 * ๋์ด + 115/50
- ์ด์ y์ ๊ฐ์ ์๋๊น ์๊น ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์!
$(window).scroll(function(){
var ๋์ด = $(window).scrollTop();
var y = -1/500 * ๋์ด + 115/50;
$('.card-box').eq(0).css('opacity', y);
});
- ์ฌ์ด์ฆ๋ฅผ ์ค์ด๋๊ฑด
transform : scale(0.9)์์ฑ์ ์ด์ฉํ๋ฉด 0.9๋ฐฐ๋ก ์์์ง.- ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์๋ ๊ทธ๋๋ก 0.9 ๋ผ๋ ์์น๋ฅผ ๋ฃ๋๊ฒ ์๋๋ผ ๋ฏธ์ง์ ๋ณ์
z๊ฐ์๊ฑธ ๋ง๋ค์ด์
z = a * ๋์ด + b์ด๋ ๊ฒ ์์์ ์ธ์ฐ๊ณ ๋์ด๊ฐ 650px์ผ ๋z = 1, ๋์ด๊ฐ 1150px์ผ๋z = 0.9์ด๋ฐ ์์ผ๋ก ์ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์.- ์๊น์ ๋์ผํ๊ฒ ๋์ ๋ฒ์ผ๋ก a์ b์ ์์๋ฅผ ๊ตฌํ๋ฉด
z = (-1/5000) * ๋์ด + 565/500
- ์ด์ z๊ฐ์ ์์์ผ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด
var z = (-1/5000) * ๋์ด + 565/500;
$('.card-box').eq(0).css('transform', `scale( ${z} )`);
๋.