시각화/D3.js

▶d3.js 튜토리얼 :: ④ HTML의 속성과 DOM 이해하기

비주얼라이즈 2015. 3. 7. 23:45




▶d3.js 튜토리얼 :: ④ HTML의 속성과 DOM 이해하기



이번 글에서는 저번 글에서 말한대로, 속성(attribute)에 대한 내용을 정리해보고자 한다. 이번 내용은 《D3.js :: 쉽고 빠른 인터랙티브 데이터 시각화의 내용을 참고했다.





속성은. 프로퍼티명과 프로퍼티 값으로 되어있다.


복잡해보이는 문서요소도 자세히 살펴보면 아주 단순한 "기준"같은 것이존재한다. 이번에 살펴보고자하는 "속성"역시 마찬가지이다. 


<tagname property="value"></tagname>


프로퍼티 명 뒤에는 등호(=)가 오고 값은 큰 따옴표로 감싼다.

문서요소에는 각기 다른 속성이 적용된다. 


예를들어 a 태그에는 링크를 위해 URL을 지정하는 href속성을 쓸 수 있다.

*href는 'HTTP reference'의 약자이다.


<a href="http://d3js.org/">The D3 website</a>


물론  id와 class처럼 모든 문서요소에서 쓸 수 있는 공통 속성도 있다.










Class와 ID는 정말 유용한 속성이다.


콘텐츠에서 구체적으로 한 부분을 찾을 때 활용할 수 있다. 특히 CSS와 자바스크립트코드는 문서요소를 알아낼 때 class와 id에 많이 의지한다.


<p> Brilliant paragraph </p>

<p> Insightful paragraph </p>

<p class = "awesome">Awe-inspiring paragraph</p>


세 번째 단락은 awesome이라는 class가 붙은 문서요소중 하나가 되었다. 이를 바탕으로 다른 문서요소들과 함께 선택하여 수정이 가능해진다.








또한 문서요소는 단순히 공백으로 구분해서 여러 개의 class를 지정할 수 있다.


<p class = "uplifting"> Brilliant paragraph </p>

<p class = "uplifting"> Insightful paragraph </p>

<p class = "uplifting awesome">Awe-inspiring paragraph</p>


이렇게되면 세 단락 모두 uplifting class의 구성원이 되었으며, 세 번째 단락만 uplifting class와 awesome class가 함께 지정되었다.









class와 같은 듯 다른 id의 사용방법



id는 class와 사용방법이 비슷하지만, class와 달리 값을 하나만 지정할 수 있고, 그값도 문서에서 중복 없이 한번만 사용해야 한다.



<div id="content">

<div id="visualization"></div>

<div id="button"></div>

</div>


id는 idv같은 문서요소가 동작이 있는 버튼이나 내용을 담은 컨테이너처럼 특별한 역할을 할 때 유용하다. 보통은 문서에서 이런 문서요소가 하나뿐이므로 id를 사용하고,그렇지 않은 경우에는 class를 사용한다.



class와 id값은 숫자로 시작할 수 없고 반드시 알파벳으로 시작해야한다.


id="1"은 동작하지 않지만, id="item1"은 동작한다.

숫자로 시작하는 값을 사용하면 코드가 동작하지 않는데다가 브라우저에서 에러가 나지도 않는다. 

*이때문에 오동작의원인을 밝히기가 어려운 경우가 많다.









주석


<!-- HTML의 주석은 이렇게 작성한다. -->


이렇게 작성하면 주석안의 내용은 웹브라우저가 모두 무시하게 된다. 이같은 주석은 '메모'로 활용하면된다. 혼자작업을 하든, 협업을 하든 주석은 매우 유용하게 활용된다.




위 사진은 프로세싱 홈페이지의 html문서의 모습이다. 이 경우, 주석처리를 활용해 각 구성요소를 보기쉽게 구분하는데 사용했다. 이처럼 주석은 코드가 복잡해질수록 간절(?)해지는 기능이라고할 수 있겠다.







DOM



DOM(Document Object Model)이란 단어는 HTML의 계층적 구조를 나타내며, 한 쌍의 각 태그(어떤 경우는 단일 태그)들은 계층구조상의 구성 요소가 된다. 구조가 계층적이다 보니 DOM에서는 문서요소의 상대적인 관계를 인간 관계를 나타내는 단어인 부모, 자식, 형제, 조상, 자손을 사용해서 나타낸다.[각주:1]


이에 대한 예제코드는 다음과 같다


<html>

<body>

<h1> Breaking News </h1>

<p></p>

</body>

</html>

이러한 코드의 구조에 대해 살펴보기위해 이미지하나를 더 첨부했다. 






위 사진의 내용처럼 h1과 p는 형제 문서요소이며, 이 둘은 body의 자식문서요소이다. 마지막으로 이 문서의 모든 문서요소는html의 자손이라고 할 수 있다.



meta태그

meta 태그는 utf-8같이 브라우저가 d3의 함수와 데이터를 제대로 파싱할 수 있도록 보장하는 데 필요한 인코딩 타입을 확인한다.







참고자료


스캇 머레이 지음, 변치훈 옮김, "D3.js : 쉽고 빠른 인터랙티브 데이터 시각화", 인사이트, 2014.3, 32쪽













  1. 스캇 머레이 지음, 변치훈 옮김, "D3.js : 쉽고 빠른 인터랙티브 데이터 시각화", 인사이트, 2014.3, 32쪽 [본문으로]