Tree View

2025. 9. 11. 10:25·Linux

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>트리 뷰</title>
</head>
<body>
    <h2>Tree View</h2>
  <div id="tree"></div>
</body>
<script src="script.js"></script>
</html>

 

body {
    font-family: Arial, sans-serif;
}
   
.folder {
    cursor: pointer;
    font-weight: bold;
}
   
.children {
    margin-left: 20px;
    display: none;
}
   
.open > .children {
    display: block;

 

// 1. JSON 데이터
const treeData = [
    {
        name: 'Root',
        children: [
            {
                name: 'src',
                children: [
                    {
                        name: 'components',
                        children: [
                            { name: 'Button.js' },
                            { name: 'Modal.js' }
                        ]
                    },
                    { name: 'App.js' },
                ]
            },
            {
                name: 'public',
                children: [
                    { name: 'index.html' }
                ]
            },
            { name: 'package.json' }
        ]
    }
];
// 2. 재귀적으로 DOM 생성
function createTreeNode(node) {
    const container = document.createElement('div');
   
    if (node.children && node.children.length > 0) {
    // 폴더
    const folder = document.createElement('div');
    folder.className = 'folder';
    folder.textContent = '📁 ' + node.name;
    folder.addEventListener('click', (e) => {
        e.stopPropagation(); // 이벤트 버블링 방지
        container.classList.toggle('open');
    });

    const childrenContainer = document.createElement('div');
    childrenContainer.className = 'children';

    node.children.forEach(child => {
        childrenContainer.appendChild(createTreeNode(child));
    });

    container.appendChild(folder);
    container.appendChild(childrenContainer);
    } else {
    // 파일
    const file = document.createElement('div');
    file.textContent = '📄 ' + node.name;
    container.appendChild(file);
    }

    return container;
}

// 3. 트리 렌더링
const treeRoot = document.getElementById('tree');
treeData.forEach(node => {
    treeRoot.appendChild(createTreeNode(node));
});

 

treedata를 토대로 트리구조를 생성하는 과제.

실행화면

 

'Linux' 카테고리의 다른 글

CLI EC2 인스턴스 정보 확인 명령어  (0) 2025.10.06
'Linux' 카테고리의 다른 글
  • CLI EC2 인스턴스 정보 확인 명령어
dev_user
dev_user
csjang94-dev 님의 블로그 입니다.
  • dev_user
    devJang
    dev_user
    • Category (127)
      • Linux (2)
      • FrontEnd (11)
        • HTML (1)
        • CSS (5)
        • JavaScript (4)
        • React (1)
      • BackEnd (4)
        • node.js (7)
        • Vue.js (1)
      • DB (13)
      • Python (3)
      • GitHub (1)
      • AWS (18)
      • ErrorCode (2)
      • AWS 광주 개발일지(25.08.19~25.01... (55)
        • 교육 25년 8월 일지 (7)
        • 교육 25년 9월 일지 (22)
        • 교육 25년 10월 일지 (2)
        • 교육 25년 11월 일지 (4)
        • 교육 25년 12월 일지 (19)
      • Projects (3)
        • 미니프로젝트(25.08.29) (0)
        • Git Page -> Portfolio제작 (2.. (1)
      • 개념 정리 (1)
      • 유용한 서비스 (3)
  • 인기 글

  • 링크

    • GitHub
    • Portfolio
    • YouTube
    • 개발자 로드맵 사이트
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.4
dev_user
Tree View
상단으로

티스토리툴바