"광주 문화예술 인문스토리 플랫폼2"의 두 판 사이의 차이

광주문화예술인문스토리플랫폼
이동: 둘러보기, 검색
 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
{{#tag:html|
 
{{#tag:html|
<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" />
 
  <link
 
    rel="stylesheet"
 
    href="https://cdn.jsdelivr.net/npm/keen-slider@6.8.5/keen-slider.min.css"
 
  />
 
  <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
 
  <body
 
    class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-광주_문화예술_인문스토리_플랫폼 rootpage-광주_문화예술_인문스토리_플랫폼 skin-etbskin action-view page-gwangju-munhwayesul-inmunseutori-peulraespom4 page-ontologyekc-gwangju"
 
    style="position: relative"
 
  >
 
    <!-- 이트라이브 수정 -->
 
    <script>
 
      document.addEventListener('DOMContentLoaded', function () {
 
        const navItems = document.querySelectorAll('.gnb-list .one-depth');
 
        const gnbArea = document.querySelector('.gnb-area');
 
        const twoDepthBoxes = document.querySelectorAll('.two-depth-bx');
 
 
        function activateGnbArea() {
 
          gnbArea.classList.add('active');
 
        }
 
 
        function deactivateGnbArea() {
 
          gnbArea.classList.remove('active');
 
        }
 
 
        navItems.forEach(item => {
 
          const link = item.querySelector('a');
 
 
          link.addEventListener('mouseenter', activateGnbArea);
 
          link.addEventListener('mouseleave', deactivateGnbArea);
 
 
          link.addEventListener('focus', activateGnbArea);
 
          link.addEventListener('blur', deactivateGnbArea);
 
        });
 
 
        twoDepthBoxes.forEach(box => {
 
          box.addEventListener('mouseenter', activateGnbArea);
 
          box.addEventListener('mouseleave', deactivateGnbArea);
 
 
          box.addEventListener('focusin', activateGnbArea);
 
          box.addEventListener('focusout', function (e) {
 
            if (!box.contains(e.relatedTarget)) {
 
              deactivateGnbArea();
 
            }
 
          });
 
        });
 
 
        // Handle when mouse leaves the entire gnb-area
 
        gnbArea.addEventListener('mouseleave', deactivateGnbArea);
 
      });
 
    </script>
 
   
 
    <!-- //이트라이브 수정 -->
 
    <!-- navbar -->
 
    <div class="navbar navbar-default navbar-fixed-top" id="mw-navigation" role="navigation">
 
      <h2>둘러보기 메뉴</h2>
 
      <!-- <div id="mw-head" class="navbar-inner">
 
<div class="container">
 
 
<div class="navbar-header">
 
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
 
<span class="sr-only">Toggle navigation</span>
 
<span class="icon-bar"></span>
 
<span class="icon-bar"></span>
 
<span class="icon-bar"></span>
 
</button>
 
 
<a href="/wiki/index.php/%EB%8C%80%EB%AC%B8" class="navbar-brand">광주문화예술인문스토리플랫폼</a>
 
</div>
 
 
<div id="navbar" class="navbar-collapse collapse">
 
<ul class="nav navbar-nav">
 
<li class="one-depth"><a href="/wiki/index.php/%EC%86%8C%EA%B0%9C" id="n-.EC.86.8C.EA.B0.9C">사업소개</a></li><li class="one-depth"><a href="#" id="n-.ED.9E.88.EC.8A.A4.ED.86.A0.EB.A6.AC" class="dropdown-toggle" data-toggle="dropdown">히스토리 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-Ontology:EKC_.EA.B4.91.EC.A3.BC" class="active"><a href="/wiki/index.php/Ontology:EKC_%EA%B4%91%EC%A3%BC" tabindex="-1">온톨로지</a></li><li id="n-.ED.8E.B8.EC.B0.AC.ED.95.AD.EB.AA.A9:Class:.EB.AA.A9.EB.A1.9D"><a href="/wiki/index.php/%ED%8E%B8%EC%B0%AC%ED%95%AD%EB%AA%A9:Class:%EB%AA%A9%EB%A1%9D" tabindex="-1">콘텐츠 편찬현황</a></li><li id="n-.EC.B0.B8.EA.B3.A0.EB.AC.B8.ED.97.8C"><a href="/wiki/index.php/%EC%B0%B8%EA%B3%A0%EB%AC%B8%ED%97%8C" tabindex="-1">참고문헌</a></li><li id="n-.EC.B0.B8.EA.B3.A0.EC.9E.90.EB.A3.8C"><a href="/wiki/index.php/%EC%B0%B8%EA%B3%A0%EC%9E%90%EB%A3%8C" tabindex="-1">참고자료</a></li></ul></li><li class="one-depth"><a href="#" id="n-.EC.9D.B8.EB.AC.B8.EC.8A.A4.ED.86.A0.EB.A6.AC-.EB.84.A4.ED.8A.B8.EC.9B.8C.ED.81.AC" class="dropdown-toggle" data-toggle="dropdown">인문스토리 네트워크 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-.EC.8B.9C.EB.A7.A8.ED.8B.B1_.EB.8D.B0.EC.9D.B4.ED.84.B0_.EB.84.A4.ED.8A.B8.EC.9B.8C.ED.81.AC"><a href="/wiki/index.php/%EC%8B%9C%EB%A7%A8%ED%8B%B1_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC" tabindex="-1">인문스토리 네트워크</a></li></ul></li><li class="one-depth"><a href="#" id="n-.EC.9D.B8.EB.AC.B8.EC.8A.A4.ED.86.A0.EB.A6.AC-.EC.BB.A8.ED.85.90.EC.B8.A0" class="dropdown-toggle" data-toggle="dropdown">인문스토리 컨텐츠 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-.EB.B6.84.EB.A5.98:Actor"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Actor" tabindex="-1">인물/단체(Actor)</a></li><li id="n-.EB.B6.84.EB.A5.98:Concept"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Concept" tabindex="-1">개념/용어(Concept)</a></li><li id="n-.EB.B6.84.EB.A5.98:event"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Event" tabindex="-1">사건(event)</a></li><li id="n-.EB.B6.84.EB.A5.98:food"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Food" tabindex="-1">음식(Food)</a></li><li id="n-.EB.B6.84.EB.A5.98:Object"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Object" tabindex="-1">사물(Object)</a></li><li id="n-.EB.B6.84.EB.A5.98:Place"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Place" tabindex="-1">장소(Place)</a></li><li id="n-.EB.B6.84.EB.A5.98:Architecture"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Architecture" tabindex="-1">건축물(Architecture)</a></li><li id="n-.EB.B6.84.EB.A5.98:Record"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:Record" tabindex="-1">기록물(Record)</a></li><li id="n-.EB.B6.84.EB.A5.98:.EB.AC.B8.EB.A7.A5.ED.95.AD.EB.AA.A9"><a href="/wiki/index.php/%EB%B6%84%EB%A5%98:%EB%AC%B8%EB%A7%A5%ED%95%AD%EB%AA%A9" tabindex="-1">문맥항목</a></li><li id="n-.EC.8A.A4.ED.86.A0.EB.A6.AC_.EB.AA.A9.EB.A1.9D"><a href="/wiki/index.php/%EC%8A%A4%ED%86%A0%EB%A6%AC_%EB%AA%A9%EB%A1%9D" tabindex="-1">스토리(Story)</a></li></ul></li><li class="one-depth"><a href="#" id="n-.EC.9D.B8.EB.AC.B8-.EB.A9.94.ED.83.80.EB.B2.84.EC.8A.A4" class="dropdown-toggle" data-toggle="dropdown">인문-메타버스 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-metaverse"><a href="/wiki/index.php/Metaverse" tabindex="-1">메타버스</a></li><li id="n-.EC.8A.A4.ED.86.A0.EB.A6.AC_.EB.AA.A9.EB.A1.9D"><a href="/wiki/index.php/%EC%8A%A4%ED%86%A0%EB%A6%AC_%EB%AA%A9%EB%A1%9D" tabindex="-1">스토리 컨텐츠</a></li></ul></li><li class="one-depth"><a href="#" id="n-.EC.9D.B8.EB.AC.B8-.EC.95.84.EC.B9.B4.EC.9D.B4.EB.B8.8C" class="dropdown-toggle" data-toggle="dropdown">인문-아카이브 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-3D_.EC.96.B4.EC.85.8B_.EB.AA.A9.EB.A1.9D"><a href="/wiki/index.php/3D_%EC%96%B4%EC%85%8B_%EB%AA%A9%EB%A1%9D" tabindex="-1">3D 어셋</a></li><li id="n-video"><a href="/wiki/index.php/Video" tabindex="-1">Video</a></li><li id="n-.EC.82.AC.EC.A7.84_.EC.9E.90.EB.A3.8C.EA.B4.80"><a href="/wiki/index.php/%EC%82%AC%EC%A7%84_%EC%9E%90%EB%A3%8C%EA%B4%80" tabindex="-1">사진자료관</a></li><li id="n-.EA.B9.80.ED.99.8D.EC.9D.B8_.EC.82.AC.EC.A7.84.EA.B4.80"><a href="/wiki/index.php/%EA%B9%80%ED%99%8D%EC%9D%B8_%EC%82%AC%EC%A7%84%EA%B4%80" tabindex="-1">김홍인 사진관</a></li><li id="n-.EA.B4.91.EC.A3.BC_.EC.9E.90.EB.A3.8C.EA.B4.80"><a href="/wiki/index.php/%EA%B4%91%EC%A3%BC_%EC%9E%90%EB%A3%8C%EA%B4%80" tabindex="-1">광주자료관</a></li><li id="n-https:.2F.2Fdaedong-mobile-web.vercel.app.2F"><a href="https://daedong-mobile-web.vercel.app/" rel="nofollow" target="_blank" tabindex="-1">AR 체험</a></li></ul></li><li class="one-depth"><a href="#" id="n-.EC.9D.B8.EB.AC.B8.EC.8A.A4.ED.86.A0.EB.A6.AC-.EA.B5.90.EC.9C.A1" class="dropdown-toggle" data-toggle="dropdown">인문스토리-교육 <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="n-2023_.EA.B5.90.EC.9C.A1.EC.9E.90.EB.A3.8C.28.EC.8B.9C.EB.AF.BC.EA.B5.90.EC.9C.A1.29"><a href="/wiki/index.php/2023_%EA%B5%90%EC%9C%A1%EC%9E%90%EB%A3%8C(%EC%8B%9C%EB%AF%BC%EA%B5%90%EC%9C%A1)" tabindex="-1">2023시민교육</a></li><li id="n-2023_.EA.B5.90.EC.9C.A1.EC.9E.90.EB.A3.8C.28.EB.94.94.EC.A7.80.ED.84.B8.EC.9E.91.EA.B0.80.29"><a href="/wiki/index.php/2023_%EA%B5%90%EC%9C%A1%EC%9E%90%EB%A3%8C(%EB%94%94%EC%A7%80%ED%84%B8%EC%9E%91%EA%B0%80)" tabindex="-1">작가교육</a></li></ul></li>                            </ul>
 
 
<ul class="nav navbar-nav navbar-right">
 
<li class="one-depth"><a href="#" id="t-tools" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-cog'></span> <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="t-cite"><a href="/wiki/index.php?title=%ED%8A%B9%EC%88%98:%EC%9D%B4%EB%AC%B8%EC%84%9C%EC%9D%B8%EC%9A%A9&amp;page=Ontology%3AEKC_%EA%B4%91%EC%A3%BC&amp;id=22594" tabindex="-1" title="이 문서를 인용하는 방법에 대한 정보">이 문서 인용하기</a></li><li id="t-info"><a href="/wiki/index.php?title=Ontology:EKC_%EA%B4%91%EC%A3%BC&amp;action=info" tabindex="-1" title="이 문서에 대한 자세한 정보">문서 정보</a></li><li id="t-permalink"><a href="/wiki/index.php?title=Ontology:EKC_%EA%B4%91%EC%A3%BC&amp;oldid=22594" tabindex="-1" title="문서의 이 판에 대한 고유링크">고유 링크</a></li><li id="t-print"><a href="/wiki/index.php?title=Ontology:EKC_%EA%B4%91%EC%A3%BC&amp;printable=yes" rel="alternate" tabindex="-1" title="이 문서의 인쇄용 판 [p]" accesskey="p">인쇄용 판</a></li><li class="divider" /><li id="t-specialpages"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%ED%8A%B9%EC%88%98%EB%AC%B8%EC%84%9C" tabindex="-1" title="모든 특수 문서의 목록 [q]" accesskey="q">특수 문서 목록</a></li><li id="t-upload"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%EC%98%AC%EB%A6%AC%EA%B8%B0" tabindex="-1" title="파일 올리기 [u]" accesskey="u">파일 올리기</a></li><li id="t-recentchangeslinked"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%EB%A7%81%ED%81%AC%EC%B5%9C%EA%B7%BC%EB%B0%94%EB%80%9C/Ontology:EKC_%EA%B4%91%EC%A3%BC" rel="nofollow" tabindex="-1" title="이 문서에서 링크한 문서의 최근 바뀜 [k]" accesskey="k">가리키는 글의 최근 바뀜</a></li><li class="divider" /><li id="t-whatlinkshere"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%EA%B0%80%EB%A6%AC%ED%82%A4%EB%8A%94%EB%AC%B8%EC%84%9C/Ontology:EKC_%EA%B4%91%EC%A3%BC" tabindex="-1" title="여기를 가리키는 모든 위키 문서의 목록 [j]" accesskey="j">여기를 가리키는 문서</a></li></ul></li><li class="one-depth"><a href="#" id="pt-personaltools" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> <span class="tweeki-username">Admin</span> <b class="caret"></b></a><ul class="dropdown-menu " role="menu"><li id="pt-userpage"><a href="/wiki/index.php/%EC%82%AC%EC%9A%A9%EC%9E%90:Admin" class="new" dir="auto" title="내 사용자 문서 [.]" accesskey=".">Admin</a></li><li id="pt-mytalk"><a href="/wiki/index.php/%EC%82%AC%EC%9A%A9%EC%9E%90%ED%86%A0%EB%A1%A0:Admin" class="new" title="내 토론 문서 [n]" accesskey="n">토론</a></li><li class="divider" /><li id="pt-preferences"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95" title="사용자 환경 설정">환경 설정</a></li><li id="pt-watchlist"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%EC%A3%BC%EC%8B%9C%EB%AC%B8%EC%84%9C%EB%AA%A9%EB%A1%9D" title="주시문서에 대한 바뀜 목록 [l]" accesskey="l">주시문서 목록</a></li><li id="pt-mycontris"><a href="/wiki/index.php/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/Admin" title="내 기여 목록 [y]" accesskey="y">기여</a></li><li class="divider" /><li id="pt-logout"><a href="/wiki/index.php?title=%ED%8A%B9%EC%88%98:%EB%A1%9C%EA%B7%B8%EC%95%84%EC%9B%83&amp;returnto=Ontology%3AEKC+%EA%B4%91%EC%A3%BC&amp;logoutToken=c91277c1623040ff7e9c816d895b25e568537da1%2B%5C" title="로그아웃">로그아웃</a></li></ul></li></ul>
 
<form class="navbar-form navbar-right" action="/wiki/index.php" id="searchform">
 
<div class="form-group">
 
<label for="wpSearch" class="hidden-xs">
 
검색
 
</label><input type="search" name="search" placeholder="검색" title="광주문화예술인문스토리플랫폼 검색 [f]" accesskey="f" id="wpSearch" class="search-query form-control"/><input type="submit" name="go" value="보기" title="이 이름의 문서가 존재하면 그 문서로 바로 가기" id="mw-searchButton" class="searchButton btn"/>
 
</div>
 
</form>                        </ul>
 
</div>
 
 
</div>
 
</div> -->
 
    </div>
 
    <!-- /navbar -->
 
    <div id="mw-page-base"></div>
 
    <div id="mw-head-base"></div>
 
    <a id="top"> </a>
 
 
    <!-- content -->
 
    <div class="user-loggedin editable container with-navbar with-navbar-fixed" id="contentwrapper">
 
 
       <!-- 에디터 컨텐츠 등록 영역 -->
 
       <!-- 에디터 컨텐츠 등록 영역 -->
 
       <div class="gwangju-main-wrap">
 
       <div class="gwangju-main-wrap">
554번째 줄: 459번째 줄:
 
             <div class="main-header">
 
             <div class="main-header">
 
               <p class="main-subtit">3D ASSET</p>
 
               <p class="main-subtit">3D ASSET</p>
               <h2 class="main-tit">3D로 보는 광주 인문 아카이브</h2>
+
               <h2 class="main-tit">3D로 보는<br />광주 인문 아카이브</h2>
 
             </div>
 
             </div>
 
             <div class="asset-swiper">
 
             <div class="asset-swiper">
709번째 줄: 614번째 줄:
 
         <!-- //AR Heritage 영역 -->
 
         <!-- //AR Heritage 영역 -->
 
       </div>
 
       </div>
       <!-- // 에디터 컨텐츠 등록 영역 -->
+
       <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" />
    </div>
+
      <link
    <!-- /content -->
+
        rel="stylesheet"
 +
        href="https://cdn.jsdelivr.net/npm/keen-slider@6.8.5/keen-slider.min.css"
 +
      />
 +
      <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
 +
      <script src="https://cdn.jsdelivr.net/npm/keen-slider@6.8.5/keen-slider.min.js"></script>
 +
      <script>
 +
        let swiperInstance = null;
  
    <!-- sidebar-right -->
+
         const initSwiper = () => {
    <div class="sidebar-wrapper sidebar-right-wrapper">
+
           // 모바일에서만 Swiper 초기화
      <div class="sidebar-container container">
+
           if (window.innerWidth < 768) {
         <div class="row">
+
             swiperInstance = new Swiper('.main-visual-swiper', {
          <div class="col-md-3 col-md-offset-9" id="sidebar-right">
+
               direction: 'horizontal',
            <div class="btn-group btn-block">
+
               slidesPerView: 1,
              <a
+
               spaceBetween: 0,
                class="btn btn-primary btn-block"
+
               pagination: {
                href="/wiki/index.php?title=Ontology:EKC_%EA%B4%91%EC%A3%BC&amp;action=edit&amp;etbeditor=1"
+
                 el: '.swiper-fraction',
                id="ca-etbeditor"
+
                 type: 'bullets',
                name="ca-etbeditor-ext"
+
                 clickable: true, // Bullet 클릭 가능
              >
+
               },
                <span class="glyphicon glyphicon-etb-editor"> </span>
+
             });
                입력기
+
           }
              </a>
+
         };
            </div>
 
            <div class="btn-group btn-block">
 
              <a
 
                accesskey="e"
 
                class="btn btn-primary btn-block"
 
                href="/wiki/index.php?title=Ontology:EKC_%EA%B4%91%EC%A3%BC&amp;action=edit"
 
                id="ca-edit"
 
                title="이 문서 편집하기 [alt-shift-e]"
 
              >
 
                <span class="glyphicon glyphicon-pencil"> </span>
 
                Edit
 
              </a>
 
            </div>
 
          </div>
 
        </div>
 
      </div>
 
    </div>
 
    <div id="tweekiTOC">
 
      <div class="toctitle" dir="ltr" lang="ko">
 
        <h2>
 
          목차
 
          <a href="javascript:scrollTo(0,0);"> to top </a>
 
        </h2>
 
        <span class="toctoggle">
 
          &nbsp;[
 
          <a class="togglelink" role="button" tabindex="0"> 숨기기 </a>
 
          ]&nbsp;
 
        </span>
 
        <button class="mw-btn-toc-unfold" type="button">
 
           <span> 접어두기 </span>
 
        </button>
 
      </div>
 
      <div class="toc" id="toc" style="display: table">
 
        <ul class="nav">
 
           <li class="toclevel-1 tocsection-1">
 
             <a href="#EKC_.EB.8D.B0.EC.9D.B4.ED.84.B0_.EB.AA.A8.EB.8D.B8">
 
              <span class="tocnumber"> 1 </span>
 
              <span class="toctext"> EKC 데이터 모델 </span>
 
            </a>
 
          </li>
 
          <li class="toclevel-1 tocsection-2">
 
            <a
 
               href="#EKC_.EC.98.A8.ED.86.A8.EB.A1.9C.EC.A7.80.28EKC_Data_Model.29_.EC.9A.B4.EC.9A.A9_.EB.B0.8F_.ED.99.95.EC.9E.A5_.ED.94.84.EB.A1.9C.EC.84.B8.EC.8A.A4"
 
            >
 
               <span class="tocnumber"> 2 </span>
 
              <span class="toctext"> EKC 온톨로지(EKC Data Model) 운용 및 확장 프로세스 </span>
 
            </a>
 
          </li>
 
          <li class="toclevel-1 tocsection-3">
 
            <a href="#EKC_.EA.B4.91.EC.A3.BC">
 
               <span class="tocnumber"> 3 </span>
 
               <span class="toctext"> EKC 광주 </span>
 
            </a>
 
            <ul class="nav">
 
              <li class="toclevel-2 tocsection-4">
 
                 <a href="#EKC_.EA.B4.91.EC.A3.BC_Class_.EB.AA.85.EC.84.B8">
 
                  <span class="tocnumber"> 3.1 </span>
 
                  <span class="toctext"> EKC 광주 Class 명세 </span>
 
                </a>
 
              </li>
 
              <li class="toclevel-2 tocsection-5">
 
                 <a href="#EKC_.EA.B4.91.EC.A3.BC_Relation_.28Object_Property.29_.EB.AA.85.EC.84.B8">
 
                  <span class="tocnumber"> 3.2 </span>
 
                  <span class="toctext"> EKC 광주 Relation (Object Property) 명세 </span>
 
                 </a>
 
              </li>
 
               <li class="toclevel-2 tocsection-6">
 
                <a href="#EKC_.EA.B4.91.EC.A3.BC_Relation_.EC.82.AC.EC.9A.A9_.EC.9A.A9.EB.A1.80">
 
                  <span class="tocnumber"> 3.3 </span>
 
                  <span class="toctext"> EKC 광주 Relation 사용 용례 </span>
 
                </a>
 
              </li>
 
             </ul>
 
           </li>
 
         </ul>
 
      </div>
 
    </div>
 
    <!-- /sidebar-right -->
 
 
 
  
    <!-- add-etrbie -->
+
        const destroySwiper = () => {
    <script>
+
          if (swiperInstance) {
      // TOC를 sidebar-wrapper 다음으로 이동시키는 스크립트
+
            swiperInstance.destroy(true, true);
      (function () {
+
            swiperInstance = null;
        // TOC가 완전히 생성된 후 이동하기 위해 MutationObserver 사용
+
           }
        function checkAndMoveTOC() {
+
        };
          var tocElement = document.getElementById('tweekiTOC');
 
           if (!tocElement) return;
 
  
          // TOC가 완전히 생성되었는지 확인 (.toctitle 요소가 있는지)
+
        // 초기화
          if (tocElement.querySelector('.toctitle')) {
+
        initSwiper();
            // 이미 이동되었는지 확인
 
            var sidebarWrappers = document.querySelectorAll('.sidebar-wrapper');
 
            if (sidebarWrappers.length === 0) return;
 
  
            var lastSidebarWrapper = sidebarWrappers[sidebarWrappers.length - 1];
+
        // 윈도우 리사이즈 시 Swiper 재설정
            var parentElement = tocElement.parentNode;
+
        window.addEventListener('resize', () => {
 
+
          if (window.innerWidth < 768) {
            // sidebar-right 내부에 있는지 확인
+
            if (!swiperInstance) {
            if (parentElement && parentElement.id === 'sidebar-right') {
+
              initSwiper();
              // tweekiTOC를 sidebar-wrapper 다음에 삽입
+
            }
              if (lastSidebarWrapper.nextSibling) {
+
          } else if (window.innerWidth >= 768) {
                lastSidebarWrapper.parentNode.insertBefore(
+
            if (swiperInstance) {
                  tocElement,
+
               destroySwiper();
                  lastSidebarWrapper.nextSibling
 
                );
 
              } else {
 
                lastSidebarWrapper.parentNode.appendChild(tocElement);
 
              }
 
               console.log('TOC moved outside sidebar');
 
 
             }
 
             }
 
           }
 
           }
         }
+
         });
 +
        document.addEventListener('DOMContentLoaded', function () {
 +
          const storyLinks = document.querySelectorAll('.story-link-item');
 +
          const imageContainer = document.querySelector('.image-scroll-container');
 +
          const breakpoint = window.matchMedia('(max-width: 991px)');
 +
          let swiperInstance;
  
        // 초기 실행
+
          const initDesktop = () => {
        setTimeout(function () {
+
            if (swiperInstance) {
          checkAndMoveTOC();
+
              swiperInstance.destroy(true, true);
 +
              swiperInstance = null;
 +
            }
  
          // MutationObserver를 사용하여 DOM 변화 감지
+
            storyLinks.forEach(link => {
          var observer = new MutationObserver(function (mutations) {
+
              link.addEventListener('click', function (e) {
            checkAndMoveTOC();
+
                e.preventDefault();
          });
+
                storyLinks.forEach(l => l.classList.remove('active'));
 +
                document
 +
                  .querySelectorAll('.swiper-slide')
 +
                  .forEach(i => i.classList.remove('active'));
  
          // body 전체를 감시
+
                this.classList.add('active');
          observer.observe(document.body, {
+
                const targetId = this.getAttribute('data-target');
            childList: true,
+
                const targetImage = document.getElementById(targetId);
            subtree: true,
+
                if (targetImage) {
          });
+
                  targetImage.classList.add('active');
  
          // 10초 후 추가 확인 (모든 스크립트가 실행된 후)
+
                  const containerRect = imageContainer.getBoundingClientRect();
          setTimeout(checkAndMoveTOC, 10000);
+
                  const imageRect = targetImage.getBoundingClientRect();
        }, 500);
+
                  const scrollTop =
      })();
+
                    imageContainer.scrollTop +
    </script>
+
                    (imageRect.top - containerRect.top) -
    <!-- // add-etrbie -->
+
                    containerRect.height / 2 +
    <script>
+
                    imageRect.height / 2;
      let swiperInstance = null;
 
  
      const initSwiper = () => {
+
                  imageContainer.scrollTo({
        // 모바일에서만 Swiper 초기화
+
                    top: scrollTop + 0,
        if (window.innerWidth < 768) {
+
                    behavior: 'smooth',
          swiperInstance = new Swiper('.main-visual-swiper', {
+
                  });
            direction: 'horizontal',
+
                }
            slidesPerView: 1,
+
              });
            spaceBetween: 0,
+
            });
            pagination: {
+
          };
              el: '.swiper-fraction',
 
              type: 'bullets',
 
              clickable: true, // Bullet 클릭 가능
 
            },
 
          });
 
        }
 
      };
 
  
      const destroySwiper = () => {
+
          const initMobile = () => {
        if (swiperInstance) {
+
            swiperInstance = new Swiper('.image-scroll-container.swiper', {
          swiperInstance.destroy(true, true);
+
              direction: 'horizontal',
          swiperInstance = null;
+
              slidesPerView: 1,
        }
+
              spaceBetween: 12,
      };
+
              pagination: {
 +
                el: '.swiper-fraction',
 +
                type: 'fraction',
 +
                formatFractionCurrent: number => number,
 +
                formatFractionTotal: number => number,
 +
              },
 +
              on: {
 +
                init: () => {
 +
                  updateProgress();
 +
                },
 +
                slideChange: () => {
 +
                  updateProgress();
 +
                },
 +
              },
 +
            });
 +
          };
  
      // 초기화
+
          const updateProgress = () => {
      initSwiper();
+
            if (!swiperInstance) return;
 +
            const current = swiperInstance.realIndex + 1;
 +
            const total = swiperInstance.slides.length;
 +
            const percent = (current / total) * 100;
 +
            const progressBar = document.querySelector('.swiper-progressbar .progress-fill');
 +
            if (progressBar) {
 +
              progressBar.style.width = `${percent}%`;
 +
            }
 +
          };
  
      // 윈도우 리사이즈 시 Swiper 재설정
+
          const handleResize = () => {
      window.addEventListener('resize', () => {
+
            if (breakpoint.matches) {
        if (window.innerWidth < 768 && !swiperInstance) {
+
              initMobile();
          initSwiper();
+
            } else {
        } else if (window.innerWidth >= 768 && swiperInstance) {
+
              initDesktop();
          destroySwiper();
+
            }
        }
+
          };
      });
 
    </script>
 
    <script>
 
      document.addEventListener('DOMContentLoaded', function () {
 
        const storyLinks = document.querySelectorAll('.story-link-item');
 
        const imageContainer = document.querySelector('.image-scroll-container');
 
        const breakpoint = window.matchMedia('(max-width: 991px)');
 
        let swiperInstance;
 
  
        const initDesktop = () => {
+
          breakpoint.addEventListener('change', handleResize);
           if (swiperInstance) {
+
           handleResize();
            swiperInstance.destroy(true, true);
+
        });
            swiperInstance = null;
+
        document.addEventListener('DOMContentLoaded', function () {
          }
+
          // 공통 브레이크포인트 기준
 +
          const breakpoint = window.matchMedia('(max-width: 991px)');
  
           storyLinks.forEach(link => {
+
           // Story Swiper (모바일 전용 터치)
            link.addEventListener('click', function (e) {
+
          let storySwiper;
              e.preventDefault();
 
              storyLinks.forEach(l => l.classList.remove('active'));
 
              document.querySelectorAll('.swiper-slide').forEach(i => i.classList.remove('active'));
 
  
              this.classList.add('active');
+
          const initStorySwiper = () => {
              const targetId = this.getAttribute('data-target');
+
            const isMobile = breakpoint.matches;
              const targetImage = document.getElementById(targetId);
 
              if (targetImage) {
 
                targetImage.classList.add('active');
 
  
                const containerRect = imageContainer.getBoundingClientRect();
+
            if (storySwiper) storySwiper.destroy(true, true);
                const imageRect = targetImage.getBoundingClientRect();
 
                const scrollTop =
 
                  imageContainer.scrollTop +
 
                  (imageRect.top - containerRect.top) -
 
                  containerRect.height / 2 +
 
                  imageRect.height / 2;
 
  
                 imageContainer.scrollTo({
+
            storySwiper = new Swiper('.story-swiper .swiper', {
                  top: scrollTop + 0,
+
              slidesPerView: 1,
                  behavior: 'smooth',
+
              spaceBetween: 24,
                 });
+
              grabCursor: isMobile,
               }
+
              simulateTouch: isMobile,
 +
              allowTouchMove: isMobile,
 +
              pagination: {
 +
                 el: '.swiper-pagination',
 +
                clickable: true,
 +
              },
 +
              navigation: {
 +
                nextEl: '.swiper-button-next',
 +
                prevEl: '.swiper-button-prev',
 +
              },
 +
              mousewheel: isMobile
 +
                 ? {
 +
                    forceToAxis: true,
 +
                    invert: false,
 +
                  }
 +
                : false,
 +
              on: {
 +
                progress: function (swiper, progress) {
 +
                  const indicatorBar = swiper.el.querySelector('.indicator-bar');
 +
                  if (indicatorBar) {
 +
                    indicatorBar.style.width = progress * 100 + '%';
 +
                  }
 +
                },
 +
               },
 
             });
 
             });
 +
          };
 +
 +
          breakpoint.addEventListener('change', initStorySwiper);
 +
          initStorySwiper();
 +
 +
          // Asset Swiper type01
 +
          const swiper01 = new Swiper('.asset-swiper .type01', {
 +
            loop: true,
 +
            slidesPerView: 'auto',
 +
            spaceBetween: 8,
 +
            autoplay: {
 +
              delay: 0,
 +
              disableOnInteraction: false,
 +
            },
 +
            speed: 5000,
 +
            freeMode: true,
 +
            breakpoints: {
 +
              991: {
 +
                spaceBetween: 28,
 +
              },
 +
            },
 
           });
 
           });
        };
 
  
        const initMobile = () => {
+
          // Asset Swiper type02
           swiperInstance = new Swiper('.image-scroll-container.swiper', {
+
           const swiper02 = new Swiper('.asset-swiper .type02', {
             direction: 'horizontal',
+
             loop: true,
             slidesPerView: 1.1,
+
             slidesPerView: 'auto',
             spaceBetween: 16,
+
             spaceBetween: 8,
             pagination: {
+
             autoplay: {
               el: '.swiper-fraction',
+
               delay: 0,
              type: 'fraction',
+
               disableOnInteraction: false,
               formatFractionCurrent: number => number,
+
               reverseDirection: true,
               formatFractionTotal: number => number,
 
 
             },
 
             },
             on: {
+
             speed: 5000,
              init: () => {
+
            freeMode: true,
                updateProgress();
+
            breakpoints: {
              },
+
               991: {
               slideChange: () => {
+
                 spaceBetween: 28,
                 updateProgress();
 
 
               },
 
               },
 
             },
 
             },
 
           });
 
           });
         };
+
         });
 
 
        const updateProgress = () => {
 
          if (!swiperInstance) return;
 
          const current = swiperInstance.realIndex + 1;
 
          const total = swiperInstance.slides.length;
 
          const percent = (current / total) * 100;
 
          const progressBar = document.querySelector('.swiper-progressbar .progress-fill');
 
          if (progressBar) {
 
            progressBar.style.width = `${percent}%`;
 
          }
 
        };
 
 
 
        const handleResize = () => {
 
          if (breakpoint.matches) {
 
            initMobile();
 
          } else {
 
            initDesktop();
 
          }
 
        };
 
 
 
        breakpoint.addEventListener('change', handleResize);
 
        handleResize();
 
      });
 
    </script>
 
    <script>
 
      document.addEventListener('DOMContentLoaded', function () {
 
        // 공통 브레이크포인트 기준
 
        const breakpoint = window.matchMedia('(max-width: 991px)');
 
 
 
        // Story Swiper (모바일 전용 터치)
 
        let storySwiper;
 
 
 
        const initStorySwiper = () => {
 
          const isMobile = breakpoint.matches;
 
 
 
          if (storySwiper) storySwiper.destroy(true, true);
 
  
           storySwiper = new Swiper('.story-swiper .swiper', {
+
        document.addEventListener('DOMContentLoaded', function () {
             slidesPerView: 1,
+
           const progressBar = document.querySelector('.gwangju-main-section04 .progress-bar');
             spaceBetween: 24,
+
          const metaverseSlider = new Swiper('.gwangju-metaverse-slider', {
             grabCursor: isMobile,
+
             loop: true,
            simulateTouch: isMobile,
+
             slidesPerView: 1.2,
            allowTouchMove: isMobile,
+
             spaceBetween: 15,
 
             pagination: {
 
             pagination: {
 
               el: '.swiper-pagination',
 
               el: '.swiper-pagination',
               clickable: true,
+
               type: 'fraction',
            },
 
            navigation: {
 
              nextEl: '.swiper-button-next',
 
              prevEl: '.swiper-button-prev',
 
 
             },
 
             },
            mousewheel: isMobile
 
              ? {
 
                  forceToAxis: true,
 
                  invert: false,
 
                }
 
              : false,
 
 
             on: {
 
             on: {
               progress: function (swiper, progress) {
+
               slideChange: function () {
                 const indicatorBar = swiper.el.querySelector('.indicator-bar');
+
                 const totalSlides = this.slides.length - this.loopedSlides * 2;
                 if (indicatorBar) {
+
                const progress = (this.realIndex + 1) / totalSlides;
                   indicatorBar.style.width = progress * 100 + '%';
+
                 if (progressBar) {
 +
                   progressBar.style.width = progress * 100 + '%';
 
                 }
 
                 }
 +
              },
 +
            },
 +
            breakpoints: {
 +
              769: {
 +
                slidesPerView: 3,
 +
                spaceBetween: 30,
 +
              },
 +
              1024: {
 +
                slidesPerView: 4,
 +
                spaceBetween: 30,
 
               },
 
               },
 
             },
 
             },
 
           });
 
           });
 +
        });
 +
        var animation = {
 +
          duration: (document.querySelectorAll('.keen-slider__slide').length / 2) * 1500,
 +
          easing: t => t,
 
         };
 
         };
  
         breakpoint.addEventListener('change', initStorySwiper);
+
         // 변수 초기화
         initStorySwiper();
+
        let slider = null;
 
+
        let slider2 = null;
         // Asset Swiper type01
+
        let autoplayActive = true;
         const swiper01 = new Swiper('.asset-swiper .type01', {
+
        let autoplayTimeoutId = null;
 +
        let isSyncingSlider1 = false;
 +
         let isSyncingSlider2 = false;
 +
        let isMouseOverContainer = false; // 컨테이너 마우스 상태 추적 변수
 +
         // 슬라이더 2 먼저 초기화
 +
         slider2 = new KeenSlider('#my-keen-slider2', {
 
           loop: true,
 
           loop: true,
           slidesPerView: 'auto',
+
           renderMode: 'performance',
           spaceBetween: 8,
+
          mode: 'free',
           autoplay: {
+
           rtl: true,
             delay: 0,
+
           slides: {
             disableOnInteraction: false,
+
             perView: 'auto',
 +
             spacing: 8,
 
           },
 
           },
          speed: 5000,
 
          freeMode: true,
 
 
           breakpoints: {
 
           breakpoints: {
             991: {
+
             '(min-width: 500px)': {
               spaceBetween: 28,
+
               slides: {
 +
                perView: 'auto',
 +
                spacing: 28,
 +
              },
 
             },
 
             },
 +
          },
 +
          created(s) {
 +
            if (!isMouseOverContainer) {
 +
              s.moveToIdx(5, true, animation);
 +
            }
 +
          },
 +
          animationEnded(s) {
 +
            // if (!isMouseOverContainer) {
 +
            slider2.endTimer = setTimeout(() => {
 +
              slider?.moveToIdx(slider.track.details.abs + 4, true, animation);
 +
              s.moveToIdx(s.track.details.abs + 5, true, animation);
 +
            }, 1000);
 +
            // }
 +
          },
 +
          detailsChanged(s) {
 +
            // 마우스가 컨테이너 위에 있을 때만 동기화 작동
 +
            if (slider2?.endTimer) clearTimeout(slider2?.endTimer);
 +
            if (!isSyncingSlider1) {
 +
              if (slider) {
 +
                if (slider.track) {
 +
                  slider.animator.stop();
 +
                  isSyncingSlider2 = true;
 +
                  // 위치 동기화
 +
                  const position = s.track.details.position;
 +
                  slider.track.to(position);
 +
                  setTimeout(() => {
 +
                    isSyncingSlider2 = false;
 +
                  }, 30);
 +
                }
 +
              }
 +
            }
 
           },
 
           },
 
         });
 
         });
  
         // Asset Swiper type02
+
         // slider1 초기화
         const swiper02 = new Swiper('.asset-swiper .type02', {
+
         slider = new KeenSlider('#my-keen-slider', {
 
           loop: true,
 
           loop: true,
           slidesPerView: 'auto',
+
           renderMode: 'performance',
           spaceBetween: 8,
+
           mode: 'free',
          autoplay: {
 
            delay: 0,
 
            disableOnInteraction: false,
 
            reverseDirection: true,
 
          },
 
          speed: 5000,
 
          freeMode: true,
 
 
           breakpoints: {
 
           breakpoints: {
             991: {
+
             '(min-width: 500px)': {
               spaceBetween: 28,
+
               slides: {
 +
                perView: 'auto',
 +
                spacing: 28,
 +
              },
 
             },
 
             },
 
           },
 
           },
        });
+
          slides: {
      });
+
            perView: 'auto',
    </script>
+
            spacing: 8,
    <script>
+
          },
      document.addEventListener('DOMContentLoaded', function () {
+
          created(s) {
        const progressBar = document.querySelector('.gwangju-main-section04 .progress-bar');
+
            if (!isMouseOverContainer) {
        const metaverseSlider = new Swiper('.gwangju-metaverse-slider', {
+
              s.moveToIdx(5, true, animation);
          loop: true,
+
            }
          slidesPerView: 1.2,
+
          },
          spaceBetween: 15,
+
          animationEnded(s) {
          pagination: {
+
            // if (!isMouseOverContainer) {
             el: '.swiper-pagination',
+
            slider.endTimer = setTimeout(() => {
             type: 'fraction',
+
              slider2?.moveToIdx(slider2.track.details.abs + 4, true, animation);
 +
              s.moveToIdx(s.track.details.abs + 5, true, animation);
 +
             }, 1000);
 +
             // }
 
           },
 
           },
           on: {
+
           detailsChanged(s) {
             slideChange: function () {
+
             if (slider?.endTimer) clearTimeout(slider?.endTimer);
               const totalSlides = this.slides.length - this.loopedSlides * 2;
+
            // 마우스가 컨테이너 위에 있을 때만 동기화 작동
              const progress = (this.realIndex + 1) / totalSlides;
+
            if (!isSyncingSlider2) {
              if (progressBar) {
+
               if (slider2) {
                progressBar.style.width = progress * 100 + '%';
+
                if (slider2.track) {
 +
                  slider2.animator.stop();
 +
                  isSyncingSlider1 = true;
 +
                  slider2.track.to(s.track.details.position);
 +
                  setTimeout(() => {
 +
                    isSyncingSlider1 = false;
 +
                  }, 30);
 +
                }
 
               }
 
               }
             },
+
             }
          },
 
          breakpoints: {
 
            769: {
 
              slidesPerView: 3,
 
              spaceBetween: 30,
 
            },
 
            1024: {
 
              slidesPerView: 4,
 
              spaceBetween: 30,
 
            },
 
 
           },
 
           },
 
         });
 
         });
      });
 
    </script>
 
    <script src="https://cdn.jsdelivr.net/npm/keen-slider@6.8.5/keen-slider.min.js"></script>
 
    <script>
 
      var animation = {
 
        duration: (document.querySelectorAll('.keen-slider__slide').length / 2) * 1500,
 
        easing: t => t,
 
      };
 
  
      // 변수 초기화
+
        // 컨테이너 하나에만 마우스 이벤트 적용
      let slider = null;
+
        document.querySelector('.asset-swiper').addEventListener('pointerdown', () => {
      let slider2 = null;
+
           // 타임아웃 삭제
      let autoplayActive = true;
+
           if (autoplayTimeoutId) clearTimeout(autoplayTimeoutId);
      let autoplayTimeoutId = null;
 
      let isSyncingSlider1 = false;
 
      let isSyncingSlider2 = false;
 
      let isMouseOverContainer = false; // 컨테이너 마우스 상태 추적 변수
 
      // 슬라이더 2 먼저 초기화
 
      slider2 = new KeenSlider('#my-keen-slider2', {
 
        loop: true,
 
        renderMode: 'performance',
 
        mode: 'free',
 
        rtl: true,
 
        slides: {
 
          perView: 'auto',
 
          spacing: 8,
 
        },
 
        breakpoints: {
 
          '(min-width: 500px)': {
 
            slides: {
 
              perView: 'auto',
 
              spacing: 28,
 
            },
 
          },
 
        },
 
        created(s) {
 
          if (!isMouseOverContainer) {
 
            s.moveToIdx(5, true, animation);
 
          }
 
        },
 
        animationEnded(s) {
 
           // if (!isMouseOverContainer) {
 
          slider?.moveToIdx(slider.track.details.abs + 4, true, animation);
 
          s.moveToIdx(s.track.details.abs + 5, true, animation);
 
          // }
 
        },
 
        detailsChanged(s) {
 
          // 마우스가 컨테이너 위에 있을 때만 동기화 작동
 
           if (isMouseOverContainer && !isSyncingSlider1 && slider && slider.track) {
 
            slider.animator.stop();
 
            isSyncingSlider2 = true;
 
            // 위치 동기화
 
            const position = s.track.details.position;
 
            slider.track.to(position);
 
            setTimeout(() => {
 
              isSyncingSlider2 = false;
 
            }, 30);
 
          }
 
        },
 
      });
 
  
      // slider1 초기화
+
          // 현재 진행 중인 애니메이션 중단
      slider = new KeenSlider('#my-keen-slider', {
+
          if (slider) {
        loop: true,
+
             if (slider.animator) {
        renderMode: 'performance',
+
              slider.animator.stop();
        mode: 'free',
+
            }
        breakpoints: {
 
          '(min-width: 500px)': {
 
             slides: {
 
              perView: 'auto',
 
              spacing: 28,
 
            },
 
          },
 
        },
 
        slides: {
 
          perView: 'auto',
 
          spacing: 8,
 
        },
 
        created(s) {
 
          if (!isMouseOverContainer) {
 
            s.moveToIdx(5, true, animation);
 
 
           }
 
           }
        },
+
           if (slider2) {
        animationEnded(s) {
+
            if (slider2.animator) {
           // if (!isMouseOverContainer) {
+
              slider2.animator.stop();
          slider2?.moveToIdx(slider2.track.details.abs + 4, true, animation);
+
             }
          s.moveToIdx(s.track.details.abs + 5, true, animation);
 
          // }
 
        },
 
        detailsChanged(s) {
 
          // 마우스가 컨테이너 위에 있을 때만 동기화 작동
 
          if (isMouseOverContainer && !isSyncingSlider2 && slider2 && slider2.track) {
 
            slider2.animator.stop();
 
            isSyncingSlider1 = true;
 
            slider2.track.to(s.track.details.position);
 
            setTimeout(() => {
 
              isSyncingSlider1 = false;
 
             }, 30);
 
 
           }
 
           }
         },
+
         });
      });
+
       </script>
 
+
       <!-- // 에디터 컨텐츠 등록 영역 -->}}
       // 컨테이너 하나에만 마우스 이벤트 적용
 
       document.querySelector('.asset-swiper').addEventListener('pointerdown', () => {
 
        autoplayActive = false;
 
        isMouseOverContainer = true;
 
        // 타임아웃 삭제
 
        if (autoplayTimeoutId) clearTimeout(autoplayTimeoutId);
 
 
 
        // 현재 진행 중인 애니메이션 중단
 
        if (slider && slider.animator) slider.animator.stop();
 
        if (slider2 && slider2.animator) slider2.animator.stop();
 
      });
 
 
 
      document.querySelector('.asset-swiper').addEventListener('pointerup', () => {
 
        //  autoplayActive = true;
 
        //  isMouseOverContainer = false;
 
        //  slider.moveToIdx(slider.track.details.abs + 4, true, animation);
 
        //  slider2.moveToIdx(slider2.track.details.abs + 4, true, animation);
 
      });
 
    </script>
 
  </body>
 
}}
 

2025년 7월 18일 (금) 17:57 기준 최신판

MEMORIAL SITE

장소로 알아보는
열흘 간의 항쟁 기록

그날의 기억이 머문 장소들을 따라가며, 시간 속에 남은 이야기를 천천히 만나보세요.
번호를 따라가며 클릭하면, 장소마다 담긴 역사적 의미와 당시의 이야기를 자세히 살펴볼 수 있습니다. 광주의 골목골목에 스며든 기억과 그날의 진실과 마주해보세요.

3D ASSET

3D로 보는
광주 인문 아카이브

AR Heritage

광주의 근현대 역사와 문화를 엿볼 수 있는 유산들을 증강현실

광주의 역사적 명소와 문화예술 거점을 AR 콘텐츠로 체험할 수 있는 투어입니다.
실시간 위치 정보와 장소의 맥락을 제공하여 시민들이 지역 인문자원을 향유하도록 기획되었습니다.
AR을 통해 광주 시민들이 공유하는 기억과 감성을 생생하게 느낄 수 있습니다.