[HTML, CSS] 이벤트리스너

2022. 6. 9. 09:02·개발/html, css, js
728x90
반응형
//이벤트 리스너

//이벤트 리스너 제거
let el = document.createElement("div");
//el에 test클래스 추가
//클래스 여러개 추가
el.className = "test test2 test3";
//el에 id 추가
el.id = "test";
//익명함수를 변수에 담아 놓았다
let onevent = function(){
    console.log("난 이벤트")
    el.removeEventListener("click",onevent);
}
//el에 이벤트를 추가하는데 이벤트 타입은 click이고 두번째 매개변수 함수는
//onevent 변수에 담긴 익명함수다.
el.addEventListener("click",onevent);
//removeEventListener 이벤트를 제거하는데 타입은 click이고 두번째 매개변수는 제거할 함수

document.querySelector(".content").appendChild(el);

//클래스의 이름 읽기
//className 문자의 형태로 읽고
console.log(el.className)
//classList 배열의 형태
console.log(el.classList);

//클래스의 이름을 순서대로 읽기
for (let i = 0; i <el.classList.length;i++){
    //classList에서 item 함수를 이용해 해당 인덱스의 값을 확인 할수 있다.
    //item(여기에 index)
    console.log(el.classList.item(i))
}

//class list 클래스 추가
//add함수를 사용해서 클래스 추가
//콤마로 여러개의 클래스 추가 가능
el.classList.add("test4","test5","test6");
console.log(el.classList);

//class list 클래스 제거
//remove함수를 사용해서 클래스 제거
//이 함수도 콤마로 여러개의 클래스 제거 가능
el.classList.remove("test4","test5","test6");
console.log(el.classList);​
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .content{
        height: 100vh;
    }
    .box{
        position: relative;
        width: 100%;
        height: 500px;
        overflow: hidden;
    }
    .con{
    /* 부모 기준으로 움직임 => absolute */
        position: absolute;
        left: 100%;
        width: 100%;
        height: 100%;
        opacity: 0;
        background-color: black;
        transition: 1s;
    }
    .active {
        left: 0;
        opacity: 1;
    }
    .test{
        width: 200px;
        height: 200px;
        background-color: black;
    }
</style>
<body>
    <div class="content"></div>
    <div class="box">
        <div class="con"></div>
    </div>
    <div class="box">
        <div class="con"></div>
    </div>
    <div class="box">
        <div class="con"></div>
    </div>
    <div class="box">
        <div class="con"></div>
    </div>
</body>
<script src="01.js">
    let cons = document.querySelectorAll(".box .con");

    console.log(cons[0].getBoundingClientRect().top)
    console.log(cons[1].getBoundingClientRect().top)
    console.log(cons[2].getBoundingClientRect().top)
    console.log(cons[3].getBoundingClientRect().top)

    window.onscroll = function (){
        //window.scrollY 윈도우의 스크롤 Y꼭대기 값
        console.log(window.scrollY);
        //window.lnnnierHeight 브라우저의 전체 높이
        let scroll = window.scrollY + window.innerHeight;
        for(let i = 0; i <cons.length;i++){
            if(scroll>cons[i].getBoundingClientRect().top){
                //con[i].classList.contains("active")  엑티브 클래스가 있는지 확인
                //classListname
                if(!cons[i].classList.contains("active"))
                //액티브 클라스 추가
                cons[i].className += " active";
            }
            else{
                //액티브 클래스 삭제
                cons[i].classList.remove("active");
            }
        }
    }
</script>
</html>
728x90
반응형

'개발 > html, css, js' 카테고리의 다른 글

[HTML, JavaScript] 정규표현식  (0) 2022.06.21
[JS, HTML, CSS] 이벤트  (0) 2022.06.17
[HTML, JavaScript] 가위바위보, 일정 캘린더 만들기  (0) 2022.06.07
[JavaScript] 각종 이벤트  (0) 2022.06.07
[JavaScript, CSS] 콜백, 콜백지옥  (0) 2022.06.03
'개발/html, css, js' 카테고리의 다른 글
  • [HTML, JavaScript] 정규표현식
  • [JS, HTML, CSS] 이벤트
  • [HTML, JavaScript] 가위바위보, 일정 캘린더 만들기
  • [JavaScript] 각종 이벤트
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    React
    도커
    30일챌린지
    ERC721
    nodejs
    30일 챌린지
    node
    erc20
    node.js
    mysql
    프로그래머스
    하이퍼레저
    블록체인
    html
    js
    컨테이너
    go언어
    명령어
    CSS
    go
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[HTML, CSS] 이벤트리스너
상단으로

티스토리툴바