일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JS 함수
- git 협업셋팅
- JS 연산
- JS redirection
- JS localStorage
- JS preventDefault
- JS append
- JS form
- JS 타이머기능
- JS 숫자
- JS 형변환
- CSS속성정리
- JS 화살표함수
- JS value속성
- JS 기초
- JS clearInterval
- JS setInterval
- JS classList
- JS appendChild
- JS 스코프
- HTML기초
- js 변수
- JS 삼항연산
- JS typeof연산자
- JS form action
- JS prompt
- JS 데이터타입
- JS setTimeout
- JS null undefined
- CSS기초
공부기록용
230811_TIL 본문
부제: addEventListener 등록 함수에 조건문 추가하기
<과제 조건>
웹 페이지의 너비 변화마다 color변화 주기
페이지의 너비가 1152를 넘어가는 경우 yellow,
너비가 1152보다는 작지만 768을 넘어가는 경우 purple,
너비가 768보다 작으면 blue로 웹 페이지의 색이 변하도록 하고 싶다.
<참고>
classList : 요소에 적용된 클래스들의 이름을 리스트 형태로 반환해 줍니다.
remove : classList의 메서드입니다. classList를 통해 반환된 리스트 중에서 원하는 클래스를 제거할 수 있습니다.
add : classList의 메서드입니다. classList의 리스트에 원하는 클래스를 추가할 수 있습니다.
innerWidth : 브라우저의 가로 길이를 나타내는 Window 객체의 프로퍼티입니다.
📌문시해알
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Challenge</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="title">
<h1>😀Hello😀</h1>
</div>
<script src="app.js"></script>
</body>
</html>
// app.js
const title = document.querySelector(".title");
function sizeColorChange() {
if (window.innerWidth > 1152) {
title.style.color = "yellow";
} else if (1152 > window.innerWidth && window.innerWidth > 768) {
title.style.color = "purple";
} else if (window.innerWidth < 768) {
title.style.color = "blue";
}
}
window.addEventListener("resize", sizeColorChange);
//console.log(window.innerWidth);1536
으로 우선 참고에 있는 innerWidth를 통해 window.innerWidth를 해서 현 웹의 innerWidth가 1536인 것을 확인해서 조건절에 다음과 같은 색이 나올 수 있도록 색에 맞는 조건을 작성했다.
😣웹 페이지 전체의 색을 변화시켜야 했는데 title을 지정한 div태그 영역으로의 글자 색만 변했다.
title.style.color = "blue";
그래서 웹 페이지 전체의 배경색 변화에 대해 구글링하다가 https://dasima.xyz/html-body-background-color-%EB%B3%80%EA%B2%BD/를 읽어봤고 다른 방도는 명확하지 않아서 그냥 div태그를 지워버리고 body에 class를 지정해서 해보기로 했다.
HTML body background color 변경하는 방법
1. <body> 배경색 CSS 선택자 지정
body { background-color: orange; }
2.<body> 태그에 인라인 스타일 삽입
인라인 스타일로 직접 배경색을 지정하는 것은 나중에 편집이 불편하므로 추천하는 방법은 아니다. 대신 우선순위가 높아서 적용이 CSS보다 먼저 된다.
<body style="background-color: orange;"> <h1>제목</h1> <p>본문</p> </body>
2를 착안해서 그냥 class를 부여해버림!
→ body태그에 color이라는 class를 부여했고
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Challenge</title>
<link rel="stylesheet" href="style.css" />
</head>
<body class="title">
<h1>😀Hello😀</h1>
<script src="app.js"></script>
</body>
</html>
→ 너비의 조건마다 className이 부여될 수 있도록 했다. 직접적인 색의 변화가 아닌
// app.js
const title = document.querySelector(".title");
function sizeColorChange() {
if (window.innerWidth > 1152) {
title.className = "max";
} else if (1152 > window.innerWidth && window.innerWidth > 768) {
title.className = "middle";
} else if (window.innerWidth < 768) {
title.className = "mini";
}
}
window.addEventListener("resize", sizeColorChange);
→ 각 너비의 마다 class를 다르게 지정하도록 해서 그 class에 맞게 background-color을 지정해주었다.
/* style.css */
body {
font-family: sans-serif;
}
h1{
color: white;
}
.max{
background-color: rgba(243, 247, 54, 0.938);
}
.middle{
background-color: rgb(133, 9, 150);
}
.mini{
background-color: rgb(0, 119, 255);
}
➕Hello를 처음에는 변화 없이 했다가 페이지 사이즈가 바뀌면 배경색이 바뀜과 동시에 흰색으로 하고 싶었다! 그래서
→ h1에도 class를 지정해주고
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Challenge</title>
<link rel="stylesheet" href="style.css" />
</head>
<body class="color">
<h1 class="hello">😀Hello😀</h1>
<script src="app.js"></script>
</body>
</html>
→ querySelector로 h1에 class 지정해준걸로 불러와서 h1으로 지정해두고, 함수 h1ColorChange가 작동되면 글자 색이 변하도록 하고, 함수의 작동은 window.addEventListener("resize", h1ColorChange);로 window에 이벤트를 주어서 사이즈가 변하면 해당 함수를 실행하도록 했다.
// app.js
const color = document.querySelector(".color");
const h1 = document.querySelector(".hello");
function sizeColorChange() {
if (window.innerWidth > 1152) {
color.className = "max";
} else if (1152 > window.innerWidth && window.innerWidth > 768) {
color.className = "middle";
} else if (window.innerWidth < 768) {
color.className = "mini";
}
};
function h1ColorChange() {
h1.style.color = "white";
};
window.addEventListener("resize", sizeColorChange);
window.addEventListener("resize", h1ColorChange);
→ css파일에서 h1에 기본으로 부여했던거 삭제(삭제함으로써 기본인 검정이 되고 이벤트가 실행되야 흰색으로 바뀜)
/*style.css*/
body {
font-family: sans-serif;
}
.max{
background-color: rgba(243, 247, 54, 0.938);
}
.middle{
background-color: rgb(133, 9, 150);
}
.mini{
background-color: rgb(0, 119, 255);
}
😀 많이 어려운 과제는 아니지만 기억 안쪽에 있는,,, 걸 아주 많이 상기시켜줘서 다시 복기해보는 기회라 생각되어 너무 만족하는 챌린지이다!!! className와 querySelector, window객체에 대해 다시 찾아보는 시간이어서 유익했고 어제 과제를 응용도 해봐서 머리에 잘 남을 것 같다.
'📝TIL📝' 카테고리의 다른 글
230913_TIL (0) | 2023.09.15 |
---|---|
230911_TIL (0) | 2023.09.11 |
230906_TIL (3) | 2023.09.06 |
230904_TIL (2) | 2023.09.04 |
230810_TIL (0) | 2023.08.11 |