header.html 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <header>
  2. <div class="header-menu">
  3. <div class="logo" th:onclick="movePath('/')">
  4. <div>
  5. <img src="/images/logo/logo.png" alt="포항시 로고">
  6. </div>
  7. <p>포항시교통정보센터</p>
  8. </div>
  9. <div class="top-menu">
  10. <div class="top-menu-cont traffic">
  11. <a>교통정보</a>
  12. </div>
  13. <div class="top-menu-cont statistics">
  14. <a>교통통계</a>
  15. </div>
  16. <div class="top-menu-cont parking">
  17. <a>주차정보</a>
  18. </div>
  19. <div class="top-menu-cont bus">
  20. <a>버스정보</a>
  21. </div>
  22. <div class="top-menu-cont notice">
  23. <a>공지사항</a>
  24. </div>
  25. <div class="top-menu-cont center">
  26. <a>교통정보센터</a>
  27. </div>
  28. <div class="down-menu">
  29. <div>
  30. <div>
  31. <div>
  32. <div class="traffic-child" th:onclick="movePath('/trafficMap/cctvMap')">교통CCTV</div>
  33. <div class="traffic-child" th:onclick="movePath('/trafficMap/intersections')">스마트교차로</div>
  34. <div class="traffic-child" th:onclick="movePath('/trafficMap/vms')">도로전광판</div>
  35. <div class="traffic-child" th:onclick="movePath('/trafficMap/incidents')">돌발정보</div>
  36. <div class="traffic-child" th:onclick="movePath('/trafficMap/realtimetraffic')">소통정보</div>
  37. </div>
  38. <div>
  39. <div class="statistics-child" th:onclick="movePath('/statistics/traffic01')">교통량통계</div>
  40. <div class="statistics-child" th:onclick="movePath('/statistics/traffic02')">소통통계</div>
  41. <div class="statistics-child" th:onclick="movePath('/statistics/congestion')">정체통계</div>
  42. </div>
  43. <div>
  44. <div class="parking-child" th:onclick="movePath('/trafficMap/parking')">주차정보</div>
  45. </div>
  46. <div>
  47. <div class="bus-child" th:onclick="openBusSite(0)">노선</div>
  48. <div class="bus-child" th:onclick="openBusSite(1)">정류소</div>
  49. <div class="bus-child" th:onclick="openBusSite(2)">요금</div>
  50. </div>
  51. <div>
  52. <div class="notice-child" th:onclick="movePath('/notice/list')">공지사항</div>
  53. </div>
  54. <div>
  55. <div class="center-child" th:onclick="movePath('/center/center')">센터소개</div>
  56. <div class="center-child" th:onclick="movePath('/center/way')">오시는길</div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="three-line-menu">
  62. <span tabindex="0" id="menu" onclick="menuOpen()">
  63. <img src="/images/icon/menu.png" alt="menu">
  64. </span>
  65. <div id="menu-modal">
  66. <div class="modal-close-box">
  67. <div class="modal-close" onclick="closeModal('header #menu-modal')"></div>
  68. </div>
  69. <div class="modal-container">
  70. <div>
  71. <img class="modal-icon" src="/images/icon/menu_icon1.png" alt="교통정보 아이콘">
  72. <div class="modal-icon-title">
  73. <h4>교통정보</h4>
  74. </div>
  75. <div class="sub-number">
  76. <h1>01</h1>
  77. </div>
  78. <p onclick="movePath('/trafficMap/cctvMap')">교통CCTV</p>
  79. <p onclick="movePath('/trafficMap/intersections')">스마트교차로</p>
  80. <p onclick="movePath('/trafficMap/vms')">도로전광판</p>
  81. <p onclick="movePath('/trafficMap/incidents')">돌발정보</p>
  82. <p onclick="movePath('/trafficMap/realtimetraffic')">소통정보</p>
  83. </div>
  84. <div>
  85. <img class="modal-icon" src="/images/icon/menu_icon2.png" alt="교통통계 아이콘">
  86. <div class="modal-icon-title">
  87. <h4>교통통계</h4>
  88. </div>
  89. <div class="sub-number">
  90. <h1>02</h1>
  91. </div>
  92. <p onclick="movePath('/statistics/traffic01')">교통량통계</p>
  93. <p onclick="movePath('/statistics/traffic02')">소통통계</p>
  94. <p onclick="movePath('/statistics/congestion')">정체통계</p>
  95. </div>
  96. <div>
  97. <img class="modal-icon" src="/images/icon/parking.png" alt="주차정보 아이콘">
  98. <div class="modal-icon-title">
  99. <h4>주차정보</h4>
  100. </div>
  101. <div class="sub-number">
  102. <h1>03</h1>
  103. </div>
  104. <p onclick="movePath('/trafficMap/parking')">
  105. 주차정보
  106. </p>
  107. </div>
  108. <div>
  109. <img class="modal-icon" src="/images/icon/menu_icon3.png" alt="버스정보 아이콘">
  110. <div class="modal-icon-title">
  111. <h4>버스정보</h4>
  112. </div>
  113. <div class="sub-number">
  114. <h1>04</h1>
  115. </div>
  116. <p onclick="openBusSite(0)">
  117. 노선
  118. <img class="modal-direction" src="/images/icon/direction.png" alt="외부사이트 이미지">
  119. </p>
  120. <p onclick="openBusSite(1)">
  121. 정류소
  122. <img class="modal-direction" src="/images/icon/direction.png" alt="외부사이트 이미지">
  123. </p>
  124. <p onclick="openBusSite(2)">
  125. 요금
  126. <img class="modal-direction" src="/images/icon/direction.png" alt="외부사이트 이미지">
  127. </p>
  128. </div>
  129. <div>
  130. <img class="modal-icon" src="/images/icon/menu_icon4.png" alt="공지사항 아이콘">
  131. <div class="modal-icon-title">
  132. <h4>공지사항</h4>
  133. </div>
  134. <div class="sub-number">
  135. <h1>05</h1>
  136. </div>
  137. <p onclick="movePath('/notice/list')">
  138. 공지사항
  139. </p>
  140. </div>
  141. <div>
  142. <img class="modal-icon" src="/images/icon/menu_icon5.png" alt="교통정보센터 아이콘">
  143. <div class="modal-icon-title">
  144. <h4>교통정보센터</h4>
  145. </div>
  146. <div class="sub-number">
  147. <h1>06</h1>
  148. </div>
  149. <p onclick="movePath('/center/center')">
  150. 센터소개
  151. </p>
  152. <p onclick="movePath('/center/way')">
  153. 오시는길
  154. </p>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. </header>
  162. <script th:inline="javascript">
  163. const menus = $('.top-menu');
  164. const downMenu = $('.down-menu');
  165. const downMenuChildren = $('.down-menu > div > div > div > div');
  166. const selected = [[${selected}]];
  167. const mobileMenu = $('.three-line-menu');
  168. menus.on('mouseleave', function(){
  169. if (mobileMenu.css('display') === 'none') {
  170. downMenu.css('display', 'none');
  171. }
  172. })
  173. menus.on('mouseover', function() {
  174. if (mobileMenu.css('display') === 'none') {
  175. downMenu.css('display', 'flex');
  176. }
  177. });
  178. downMenuChildren.on('mouseleave', function() {
  179. let className = $(this).attr('class');
  180. if (!className.includes(selected)) {
  181. className = className.replace('-child', '');
  182. $('.' + className).removeClass('on');
  183. }
  184. });
  185. downMenuChildren.on('mouseover', function() {
  186. let className = $(this).attr('class');
  187. if (!className.includes(selected)) {
  188. className = className.replace('-child', '');
  189. $('.' + className).addClass('on');
  190. }
  191. });
  192. if (selected){
  193. $('.' + selected).addClass('on');
  194. }
  195. </script>