-
저번 시간까지 자바스크립트로
스타일 지정하는 방법을 알려드렸습니다
-
만약 자바스크립트로 여러 스타일을 지정하고 싶다면
-
CSS 속성값을 설정하기 위해
코딩만 100줄을 해야 할지도 모릅니다
-
그렇게 된다면 자바스크립트가
정말 엉망진창이 될지도 모르죠
-
이 경우 또 다른 방식으로 접근할 수 있습니다
-
CSS 클래스를 생성하고
-
그 클래스에 원하는 스타일을 입히기 위해
CSS 규칙을 추가하는 겁니다
-
그 이후 자바스크립트에 클래스 명을 넣으면 되는데요
-
여기에 '' 태그를 넣고 시작해보도록 합시다
-
'.catclass' 클래스를 만들고
여기에 CSS 규칙을 추가해볼게요
-
그 다음 'color:orange',와 '
background-color: black'을 설정해보죠
-
이를 'heading'요소로 넣자면
이렇게로도 볼 수 있죠
-
'headingEl.className = "catcolors"; 로요
-
이러면 자바스크립의 색배정과 배경색을
삭제할 수 있습니다
-
-
짜잔!
-
됐죠?
-
근데, 조금 이상한 게 보이시나요?
-
클래스 명을 위한 HTML 속성은 그냥 'class'이네요
-
이것을 HTML로 하려고 했다면
'class="catcolors"에 그쳤겠죠
-
자바스크립트로 하려고 하니 '.className',
으로 써야 했어요
-
이는 흔히 인숙한 방법은 아니죠
-
그것은 'class' 자체가 자바스크립트어의
키워드로 기능하기 때문입니다
-
이미 그 자체로 의미가 있는 거죠
-
그렇기 때문에 브라우저는 'className'을
HTML 클래스 속성을 지시하기 위해
-
'className'을 사용합니다
그래야 헷갈리지 않으니까요
-
그러니까 기억해두셔야 합니다
어떤 요소의 클래스 속성을 설정하고 싶다면
-
.className = 를 적으면 됩니다
-
이제 각 동물 이름에 배정하기 위해서
-
이를 루프 안에 넣을 수 있습니다.
바로 이렇게요
-
'nameEls[i].className = "catColors";'
-
이렇게 하면 클래스 명을 추가하는 게 되지만
-
실은 이전에 있었던 모든 클래스를 삭제하는 게 됩니다
= 를 썼기 때문이죠
-
따라서 이전에 다른 클래스가 있었다면,
클래스들은 다 삭제되고 없습니다
-
이제 클래스는 동물과 같죠
-
그리하여 catColors가 되었네요
-
따라서 진짜 원했던 건 이 클래스 속성에
새 클래스 명을 추가하는 것이었죠
-
이는 += catColors.로
적는 것과 같습니다
-
그렇습니다
-
이렇게 하는 것이 안전합니다
-
이전 클래스가 무엇이었든지 간에
띄어쓴 다음 새로운 클래스를 추가할 수 있기 때문입니다
-
새로운 브라우저를 활용한 또 다른 방법이 있는데요
-
'classList' 속성을 활용하는 겁니다
-
'nameEls[i].classList.add("catcolors")'
을 쓰면 되는 거죠
-
이건 훨씬 낫지만
모든 경우에 활용할 수는 없습니다
-
이를 활용하고 싶다면
caniuse.com에 접속한 뒤
-
작업하고 있는 사이트가
모든 브라우저에 호환되는지
-
확인해야 합니다
-
훨씬 나아보이기는 하지만,
홈페이지가 깨진다면 그닥 좋진 않겠지요
-
브라우저가 이를 인식하지 못하는 기능을
활용하는 것처럼 나타날 수도 있거든요
-
혹시나 해서 드리는 말씀입니다
-
왜냐하면 저라면 되도록이면 많은 브라우저에서
제대로 나오길 바랄테니까요
-
여전히 각각의 스타일을 바꾸기 위해서는
클래스 명을 지시하는 것보다
-
우리가 해야 하는 것들이 많습니다
-
다시 한번 드리는 말씀이지만,
이런 도구가 있다는 걸 알려드리고 싶네요
-
상황에 따라 적절하게 활용하셨으면 좋겠습니다