자바스크립트 문법 vs 브라우저 사용법
- 자바스크립트 문법: if var function
- 브라우저 사용법 (=web API)
- documet.querySelector()
- setTimeout()
- alert()
setTimeout(function(){}, 1000)
setTimeout(function(){실행할코드},기다릴시간)
콜백함수 자리엔 만들어둔 함수 넣을 수 있음
- 1초마다 코드 실행하고 싶은 경우 set Timeout을 여러개 넣으면 된다.
X초마다 코드 실행하려면
setInterval(function(){실행할코드},ms)
1초마다 5라는 문자를 1씩 감소
0이 되면 div 안보이게
'검사할 글'includes('있는지 확인할 글자')
/있는지 검사할 문자/.test('검사당할 문자')
/a/.test('abcde')
정규식의 장점
a-zA-z
는 아무 알파벳 1개ㄱ-ㅎ가-힣
아무 한글문자 1개 = 모음 검사는 안해줌/\S/
아무문자 1개 라는 뜻 = 특수기호도 포함된다./^a/
시작/a$/
끝|
.
은 특별한 정규식 문법이기때문에 백슬래쉬 써야한다.\S
는 모든 문자 한 글자를 뜻한다.+
는 왼쪽문자 반복검색/\S+@\s+\.\S/.test
//폼 전송시 유저가 입력한 비번에 영어대문자 있는지 검사
if(/[A-Z]/.test(inputPw) == false ){
alert('영어대문자가 없습니다. 추가하세요.');
event.preventDefault();
};
transform: translateX(-100vw);
와margin-left: -100vw;
는 같다. 그러나 margin-left보다 transform이 부드럽다.
// 버튼 1누르면 최종화면으로 변하게 하기
$('.slide-1').on('click', function(){
$('.slide-container').css('transform','translateX(0vw');
})
// 버튼 2누르면 최종화면으로 변하게 하기
$('.slide-2').on('click', function(){
$('.slide-container').css('transform','translateX(-100vw');
})
// 버튼 3누르면 최종화면으로 변하게 하기
$('.slide-3').on('click', function(){
$('.slide-container').css('transform','translateX(-200vw');
})
함수쓰고 그 자리에 반환하는 문법 return
return 옆에는 아무거나 가능하다.
return은 함수 종료 기능을 가지고 있기 때문에 그 밑 줄은 실행되지 않는다.
자료를 넣으면 다른 자료가 나올 수 있게 만드는 변환기용도로 많이 사용한다. ex. 가격* 0.1% = 부가세
숫자.toFixed(몇자리)
+
연산자는 문자+123 = 문자123/ 문자+문자 = 문자문자를 해준다.숫자 연산시 주의점
함수로 자료변환기 제작가능하다.
window.addEventListener('scroll',function(){
});
windwo.scrollY
window.scrollTo(x,y)
```js
:root {
scroll-behavior:auto; ```
window.scrollBy(x,y)
스크롤바 100Px 이상 내리면 로고 폰트사이즈 줄이기
2. 박스의 ㅡ스크롤바 끝까지 내리면 alert( 다읽었군요. )띄우기
div의 스크롤바 내린 양 + 눈에보이는 div의 높이) == div의 실제 높이
window.scrollY(전체페이지 스크롤양)
박스가 화면에 보이는 부분 = clientHeight;
div.스클
스크롤바가움직일때마다 실행해야 한다. = scroll eventListener
페이지 로드시 딱 1번만 실행된다.
div 실제높이는 셀렉터.scrollHieght
document.querySelector('.lorem').addEventListener('scroll', function(){
var 스크롤양 = document.querySelector('.lorem').scrollTop;
var 실제높이 = document.querySelector('.lorem').scrollHeight;
var 높이 = document.querySelector('.lorem').clientHeight;
console.log(스크롤양, 실제높이);
})
Q. 현재 페이지 끝까지 스크롤 체크?는 html 태그의 스크롤 체크를 찾으면 된다. 현재페이지 실제높이가 나온다.
document.querySelector('html').scrollHieght
document.querySelector('html').scrollHieght
client Hight = 페에지 보이는 높이
페이지 로드 된 후에 body끝나기 전에 넣는 것이 좋다.
documentElement는 html 태그 찾는 것과 똑같다.
jQuery vs javaScript
$('.tab-button').eq(0)
= queryselectorAll[0]
버튼 0 누르면
var button = $('.tab-button');
var content = $('.tab-content');
for(let i = 0; i < content.length; i++ ){
button.eq(i).on('click', function(){
button.removeClass('orange');
button.eq(i).addClass('orange');
content.removeClass('show');
content.eq(i).addClass('show');
});
}
자주쓰는 셀렉터 변수에 넣어쓰는 습관~
검은배경 누르면 모달창 닫는 기능 만들기
//검은배경 누르면 모달창 닫는 기능 만들기
document.querySelector('.black-bg').addEventListener('click', function(e){
if (e.target == document.querySelector('.black-bg'))//내가 실제로 누른거 == 까만배경일 겨우
{
document.querySelector('.black-bg').classList.remove('show-modal');
e.stopPropagation(); // 이벤트 버블링 막아주기.
}
})
})
jQuery 에서는 `$(e.target).is$('.black-bg')`로 표현하는 게 좋다.
- 모달창을 display 조작으로 띄웠으면 display 조작으로 닫아야한다.
- 모든 브라우저는 항상 이벤트 버블링이 일어난다.
- 이벤트 버블링: 이벤트가 상위 html로 퍼지는 현상
#### 유용한 이벤트 관련 함수들
``` js
function(e){
e.target; //유저가 실제로 누른 것: 이벤트 발생한 곳
e.currentTarget; //이벤트 리스너 달린 곳 = `this`
e.preventDefault(); //이벤트 기본동작 막아줌 submit에 사용
e.stopPropagation(); //내 상위요소로 이벤트 버블링 막아줌
}
$('.list').click(function(e){
//탭열기(지금누른버튼에 숨겨져있는 data-id)
openTab(e.target.dataset.id);
})
//축약할 코드에 변수가 있으면 변수를 파라미터로 바꿔야 잘된다.
function openTab(num){
button.removeClass('orange');
button.eq(num).addClass('orange');
content.removeClass('show');
content.eq(num).addClass('show');
};
data-자료이름='값'
셀렉터.dataset.자료이름
으료 출력 가능하다. 1.함수로 축약할 때 변수있으면 파라미터로 바꿔보기
2. data-id로 몰래 숨기기 가능하다.
3. 이벤트 리스너 1개만 써도 개발가능하다.