본문 바로가기

HTML

[HTML] HTML / CSS 만을 이용하여 트리 뷰(tree view) 제작하기 #02

반응형




참고 : 자바스크립트 없이 tree 만들기





■ HTML / CSS 만을 이용하여 트리 뷰(tree view) 제작하기 #02





01. 이전 예제에서 2단 트리 뷰를 만들어 보았다. 이번에는 3단 트리뷰를 만들어 보자.

 tree.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>HTML / CSS를 이용한 트리</title>
<head>
<style type="text/css">
    input[type="checkbox"] {
        display:none;
    }

    input[type="checkbox"]:checked~ul {
        display:none;
    }
</style>
</head>
<body>
    <input type="checkbox" id="root"/>
    <label for="root">트리 카테고리</label>
    <ul>
        <li>one1</li>
        <li>one2</li>
        <li>
            <input type="checkbox" id="one3">
            <label for="one3">one3</label>
            <ul>
                <li>one3-1</li>
                <li>one3-2</li>
                <li>one3-3</li>
                <li>
                    <input type="checkbox" id="one3-4">
                    <label for="one3-4">one3-4</label>
                    <ul>
                        <li>one3-4-1</li>
                        <li>one3-4-2</li>
                        <li>one3-4-3</li>
                        <li>one3-4-4</li>
                        <li>one3-4-5</li>
                        <li>one3-4-6</li>
                        <li>one3-4-7</li>
                        <li>one3-4-8</li>
                        <li>one3-4-9</li>
                    </ul>
                </li>
                <li>one3-5</li>
                <li>one3-6</li>
                <li>one3-7</li>
                <li>one3-8</li>
            </ul>
        </li>
    </ul>
    <ul>
        <li>two1</li>
            <input type="checkbox" id="two2">
            <label for="two2">two2</label>
            <ul>
                <li>two2-1</li>
                <li>two2-2</li>
                <li>two2-3</li>
            </ul>
        <li>two3</li>
    </ul>
</body>
</html>



출력결과는 아래와 같다.





하지만 기본적인 ul, li 태그의 점, 블릿기호가 삽입된 모습니다.


이제 이 트리뷰를 폰텔로를 사용하여 좀더 트리 뷰 처럼 보이게 꾸며보자.





02. 폰텔로(http://fontello.com/) 사이트에 접속하여 예제에 필요한 아이콘을 다운받자.

 ① 사용할 아이콘을 3개 선택한다 선택된 아이콘은 붉은색 기호로 테두리가 감싸진다.

 ② 아이콘을 선택하면 화면 상단에 Download Webfont 를클릭한다.

 ③ 사용도리 fontello 코드를 다운받는다.





03. 다운받은 fontello.zip 파일을 위 tree.html 과 같은 폴더에 위치시키고 압축을 해제한다.

 ① 다운받은 fontello.zip 파일의 압축을 해제한다.

 ② 압축을 해제하고 생성된 폴더의 이름을 tree_fontelo로 변경하였다.







04. tree_fontelo 폴더내부의 demo.html 파일이 존재한다. 해당 파일을 실행 시킨다.






05. demo.html을 윕브라우저를 통해 실행한다.

 ① 상단 우측에 보면 show codes라는 체크박스가 존재한다. 체크해준다.

 ② 그럼 다운받은 아이콘들의 CODE값이 나타난다. 이제 이 코드를 적용시켜 보자.





06. 위에서 작업한 tree.html 파일을 이제 다시 실행하여 수정하여 보자.






07. tree.html 파일을 아래와 같이 수정해 보자.

 tree.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>HTML / CSS를 이용한 트리</title>
<head>
<!-- 다운받은 fontello.css의 경로를 지정하여 준다. -->
<link rel="stylesheet" href="./tree_fontello/css/fontello.css"/>
<style type="text/css">
   
    /* ul, li태그의 앞의 점, 블릿기호를 제거한다. */
    ul { list-style:none; }
   
    /* fontello 아이콘과 tree의 간격 조절 */
    .tree *:before {
        width:17px;
        height:20px;
        display:inline-block;
    }

    /* 해당 영역을 닫을경우, 혹은 닫혀있는경우 사용할 이미지를 지정한다. */
    .tree input[type="checkbox"]:checked+label:before {
        content:"\e800";
        font-family:fontello;
    }

    /* 해당 영역을 오픈 하였을때 변경할 이미지를 지정한다. */
    .tree label:before {
        content:"\e801";
        font-family:fontello;
    }

    /* a태그로 지정한 더이상 오픈할 것이 없고 해당 페이지를 불러올때 사용될 이미지를 지정한다. */
    .tree a:before {
        content:"\f0f6";
        font-family:fontello;
    }

    input[type="checkbox"] {
        display:none;
    }

    input[type="checkbox"]:checked~ul {
        display:none;
    }
</style>
</head>
<body>
    <input type="checkbox" id="root"/>
    <label for="root">트리 카테고리</label>
    <ul class="tree">
        <li><input type="checkbox" id="one1" checked="checked"><label for="one1">one1</label></li>
        <li><input type="checkbox" id="one2" checked="checked"><label for="one2">one2</label></li>
        <li>
            <input type="checkbox" id="one3" checked="checked">
            <label for="one3">one3</label>
            <ul class="tree">
                <li><input type="checkbox" id="one3-1" checked="checked"><label for="one3-1">one3-1</label></li>
                <li><input type="checkbox" id="one3-2" checked="checked"><label for="one3-2">one3-2</label></li>
                <li><input type="checkbox" id="one3-3" checked="checked"><label for="one3-3">one3-3</label></li>
                <li>
                    <input type="checkbox" id="one3-4" checked="checked">
                    <label for="one3-4">one3-4</label>
                    <ul class="tree">
                        <li><a href="">one3-4-1</a></li>
                        <li><a href="">one3-4-2</a></li>
                        <li><a href="">one3-4-3</a></li>
                        <li><a href="">one3-4-4</a></li>
                        <li><a href="">one3-4-5</a></li>
                        <li><a href="">one3-4-6</a></li>
                        <li><a href="">one3-4-7</a></li>
                        <li><a href="">one3-4-8</a></li>
                        <li><a href="">one3-4-9</a></li>
                    </ul>
                </li>
                <li><input type="checkbox" id="one3-5" checked="checked"><label for="one3-5">one3-5</label></li>
                <li><input type="checkbox" id="one3-6" checked="checked"><label for="one3-6">one3-6</label></li>
                <li><input type="checkbox" id="one3-7" checked="checked"><label for="one3-7">one3-7</label></li>
                <li><input type="checkbox" id="one3-8" checked="checked"><label for="one3-8">one3-8</label></li>
            </ul>
        </li>
    </ul>
    <ul class="tree">
        <li><input type="checkbox" id="two1" checked="checked"><label for="two1">two1</label></li>
            <input type="checkbox" id="two2" checked="checked">
            <label for="two2">two2</label>
            <ul class="tree">
                <li><a href="">two2-1</a></li>
                <li><a href="">two2-2</a></li>
                <li>
                    <input type="checkbox" id="two2-3" checked="checked">
                    <label for="two2-3">two2-3</label>
                    <ul class="tree">
                        <li><a href="">two2-3-1</a></li>
                        <li><a href="">two2-3-2</a></li>
                        <li><a href="">two2-3-3</a></li>
                    </ul>
                </li>
                <li><a href="">two2-4</a></li>
                <li><a href="">two2-5</a></li>
            </ul>
        <li><input type="checkbox" id="two3" checked="checked"><label for="two3">two3</label></li>
    </ul>
</body>
</html>



폰텔로 아이콘을 적용한 tree.html파일의 출력결과는 아래와 같다.


해당 트리를 선택하면 폴더 아이콘이 끝에가서는 페이지 아이콘이 나오는 모습을 확인 할 수 있다.











반응형