๋งˆํฌ์—…/Html & Css

[HTML & CSS][DOM] CSSStyleDeclaration ์•Œ์•„๋ณด๊ธฐ

Rainbow๐ŸŒˆCoder 2022. 12. 23. 14:27
728x90

https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ (ํ•™์Šต ๋‚ด์šฉ)

 

[2022.05.19] DOM - ๋…ธ๋“œ CSS ์Šคํƒ€์ผ(CSSStyleDeclaration), ํด๋ž˜์Šค ์ถ”๊ฐ€/์‚ญ์ œ ํ•˜๊ธฐ(className, classList)

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์กฐ์ž‘ํ•˜์—ฌ ๋…ธ๋“œ์˜ CSS style๊ณผ class๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ DOM์„ ์กฐ์ž‘ํ•˜์—ฌ ๋…ธ๋“œ์— style์„ ๋„ฃ์–ด๋ณผ ๊ฒƒ์ด๋‹ค.๋จผ์ €, ulํƒœ๊ทธ์— ์Šคํƒ€์ผ์„ ๋„ฃ์–ด๋ณด

velog.io

 

CSSStyleDeclaration ์‰ฝ๊ฒŒ ๋งํ•ด, ๋…ธ๋“œ css ์Šคํƒ€์ผ!

HTMLElement ๊ฐ์ฒด์˜ style ํ”„๋กœํผํ‹ฐ์— ์˜ํ•ด์„œ ์ฐธ์กฐ๋œ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ DOM์„ ์กฐ์ž‘ํ•˜์—ฌ ๋…ธ๋“œ์— style์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

const menu = document.querySelector('.menu-list');
menu.style.backgroundColor = 'skyblue';
menu.style.width = '200px';

์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

menu.style['backgroundColor'] = 'orange';
menu.style['width'] = '200px';
<div class="menu-container">
  <ul class="menu-list">
    <li>menu1</li>
    <li>menu2</li>
    <li>menu3</li>
  </ul>
</div>
<div class="contents-container">
  <p class="title">ํ…์ŠคํŠธ1</p>
  <p class="content">ํ…์ŠคํŠธ2</p>
</div>

๋จผ์ €, ulํƒœ๊ทธ์— ์Šคํƒ€์ผ์„ ๋„ฃ๊ธฐ.

.style์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด css์˜ ์Šคํƒ€์ผ ์†์„ฑ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ฐœ์ธ ์‹ค์Šต

 

<h1 class="title">PIXI STUDY</h1>
	<script src="./cssStyleDeclaration.js" defer></script>
const title = document.querySelector('.title');
title.style.backgroundColor = 'skyblue';
title.style.width = '200px'; //js์—์„œ ์ง์ ‘์ ์ธ style ์ œ์–ด ๋ฐฉ๋ฒ•(1) .์œผ๋กœ ์†์„ฑ ์ ‘๊ทผ
title.style['width'] = '200px';//js์—์„œ ์ง์ ‘์ ์ธ style ์ œ์–ด ๋ฐฉ๋ฒ•(2) ๋ฐฐ์—ด๋ช…์œผ๋กœ ์ ‘๊ทผ
title.style['font-size'] = '35px';

ํƒœ๊ทธ์— style ์ฐ์€ ๊ฒƒ์ด ๋ฐ”๋กœ

cssStyleDeclaration ์ด๋‹ค.

์ˆซ์ž ์ธ๋ฑ์Šค ํ‚ค์— ์ ํ˜€์žˆ๋Š” ๊ฐ’๋“ค์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ์šฉํ•œ ์†์„ฑ๋“ค

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •ํ•ด์ค€ ์†์„ฑ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์ •๋ณด์— ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค!

title.style.cssText

title.style.length

์ถœ๋ ฅ 3

title.style.getPropertyValue('width') 

์ถœ๋ ฅ '200px'

title.style.getPropertyPriority('width') === 'important'

์ถœ๋ ฅ false

title.style.item(0)
title.style.setProperty('background-color', 'pink') //๊ฐ’๋ณ€๊ฒฝ

๊ธ€์Ž„... ์œ„์˜ ์ฝ”๋“œ๋Š” ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋‹ˆ๊นŒ ํฌ๋กฌ์—์„œ๋Š” ์ž˜ ๋จน์ง€ ์•Š์•˜๋‹ค. 

title.style['fontSize'] = '20px' <- ์ด๊ฑฐ๋Š” ์ž˜ ๋จน์—ˆ๋Š”๋ฐ,

์—ฌ๊ธฐ์„œ ์†์„ฑ๊ฐ’ ์ฐพ์•„์„œ ๋ฐฐ์—ด์— ๋ฐ•๋Š” ํ˜•์‹์ด ์ง๊ด€์ ์ธ ๋“ฏ

menu.style.removeProperty('width') //์†์„ฑ ์ œ๊ฑฐ

์Šคํƒ€์ผ ๊ด€๋ จ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ์ด๋‚˜ ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ํ™•์ธ
1. CSSStyleDeclaration.cssText : ์ ์šฉํ•œ css๋ฅผ ํ…์ŠคํŠธ๋กœ ํ™•์ธ
2. CSSStyleDeclaration.length : ์ ์šฉํ•œ css์˜ ๊ฐœ์ˆ˜(๊ธธ์ด)๊ฐ€ ๋ฐ˜ํ™˜
3. CSSStyleDeclaration.getPropertyPriority('priority') : ()์•ˆ์— ๋„ฃ์€ ์Šคํƒ€์ผ์˜ ์ค‘์š”๋„๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ Boolean ํƒ€์ž…
4. CSSStyleDeclaration.getPropertyValue(key) : ์Šคํƒ€์ผ ํ‚ค ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ํ•ด๋‹นํ•˜๋Š” value๊ฐ’
5. CSSStyleDeclaration.item(index) : ์ ์šฉ๋œ ์Šคํƒ€์ผ์˜ index๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹นํ•˜๋Š” key๊ฐ’์ด ๋ฐ˜ํ™˜
6. CSSStyleDeclaration.removeProperty('style name') : ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์Šคํƒ€์ผ์˜ ์ด๋ฆ„(key)๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ์Šคํƒ€์ผ์ด ์ œ๊ฑฐ
7. CSSStyleDeclaration.setProperty('์ ์šฉํ•  ์Šคํƒ€์ผ ์ด๋ฆ„', '์ ์šฉํ•  ๊ฐ’', '์˜ต์…˜( important/undefined/"" ') : ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉ. ํ˜„์žฌ ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•˜๋ฉด ์ถ”๊ฐ€. ์˜ต์…˜ ๊ฐ’์œผ๋กœ ์ค‘์š”๋„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ƒ๋žต ๊ฐ€๋Šฅ

 

ํด๋ž˜์Šค ์ถ”๊ฐ€/์ œ๊ฑฐ/ํ† ๊ธ€ํ•˜๊ธฐ

ํƒœ๊ทธ ๋ณ€์ˆ˜์— ์ง์ ‘์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค

title.classList

title.className

title.classList.contains

classList ๋ฉ”์„œ๋“œ

Element.classList.add : ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
Element.classList.remove : ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
Element.classList.toggle(String [, force]) : ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ญ์ œํ•˜๊ณ  ์—†๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‘๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋„ฃ๋Š” ๊ฒฝ์šฐ ๋‘๋ฒˆ์งธ ์ธ์ž๊ฐ€ true์ผ ๋•Œ๋งŒ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ  false๋ฉด ์ œ๊ฑฐํ•œ๋‹ค.
Element.classList.item(Number) : DOMTokenList์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Element.classList.contains(String) : ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  true๋˜๋Š” false๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Element.classList.replace(old class, new class) : ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝ(์žฌ์„ค์ •)ํ•œ๋‹ค.

 

๊ฐ€๋ น css ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์Šคํƒ€์ผ์ด ์žˆ๋‹ค๊ณ  ์น˜์ž.

.title {
	font-weight: bold;
}
.pink-border {
	border: 2px solid rgb(255, 0, 200);
  }
.small-title {
	margin: 15px;
}

 

title.classList.remove('pink-border')

 

 

 

728x90