$(document).ready(function () { let path = window.location.pathname; let page = path.split("/").pop(); if (page == "index.html") { $("#header").css("border-bottom", "solid 1px #ddd"); } if (getPageName() == "all_news.html") { load("#js-load", "10"); } else { load("#js-load", "4"); } floatingMarginImg(); const menu = document.querySelector(".menu_list"); const searchMenu = document.querySelector(".search_bar_inner"); if (menu) { document.querySelector(".menu_btn").addEventListener("click", function (e) { e.stopPropagation(); toggleSubMenu(); }); menu.addEventListener("click", (e) => { e.stopPropagation(); }); // 문서 전체 클릭 시 (바깥 영역 클릭) document.addEventListener("click", () => { if (menu.classList.contains("active")) { toggleSubMenu(); } }); } if (searchMenu) { document.querySelector(".search_popup_btn").addEventListener("click", function (e) { e.stopPropagation(); toggleSearchMenu(); }); document.querySelector(".m_search_btn").addEventListener("click", function (e) { e.stopPropagation(); toggleSearchMenu(); }); searchMenu.addEventListener("click", (e) => { e.stopPropagation(); }); // 문서 전체 클릭 시 (바깥 영역 클릭) document.addEventListener("click", () => { if (searchMenu.classList.contains("active")) { searchMenuClose(); } }); } updateMenuPosition(); let resizeTimer = null; window.addEventListener("resize", function () { // 창 크기가 변할 때마다 기존에 예약된 타이머를 취소합니다. clearTimeout(resizeTimer); // 0.2초(200ms) 뒤에 실행하도록 타이머를 새로 맞춥니다. // 즉, 사용자가 창 크기 조절을 멈추고 0.2초가 지나야 비로소 함수가 실행됩니다. resizeTimer = setTimeout(function () { console.log("리사이즈 감지: 메뉴 위치 재조정"); updateMenuPosition(); }, 400); }); }); function updateMenuPosition() { const menuList = document.querySelector(".menu_list"); // menu_list가 없으면 계산할 필요가 없으므로 종료 if (!menuList) return; // 케이스 1: 일반 로고 (.logo) const logo = document.querySelector("header .logo"); if (logo) { // console.log("일반 로고 있음"); const logoOffsetTop = logo.offsetTop; const logoHeight = logo.offsetHeight; menuList.style.top = `${logoOffsetTop + logoHeight + 20}px`; return; // 로고를 찾아서 적용했으면 함수 종료 (중복 적용 방지) } // 케이스 2: 아티클 로고 (.article_logo) const articleLogo = document.querySelector("header .article_logo"); if (articleLogo) { // console.log("아티클 로고 있음"); const logoOffsetTop = articleLogo.offsetTop; const logoHeight = articleLogo.offsetHeight; menuList.style.top = `${logoOffsetTop + logoHeight + 50}px`; } // 기사 상세 페이지 검색 메뉴 const searchBar = document.querySelector(".view_news_search_bar"); if (searchBar) { const logoOffsetTop = articleLogo.offsetTop; const logoHeight = articleLogo.offsetHeight; searchBar.style.top = `${logoOffsetTop + logoHeight + 50}px`; } } function getPageName() { var pageName = ""; var tempPageName = window.location.href; var strPageName = tempPageName.split("/"); pageName = strPageName[strPageName.length - 1].split("?")[0]; return pageName; } function common_popup(tit, txt, subTxt, cancelTxt) { Swal.fire({ confirmButtonText: subTxt, cancelButtonText: cancelTxt, showCancelButton: true, allowEnterKey: true, title: tit, customClass: { popup: "common_popup", }, html: `

${txt}

`, didOpen: () => { if (cancelTxt == undefined) { $(".swal2-cancel").hide(); $(".common_popup .swal2-actions").css("justify-content", "center"); } }, preConfirm: () => {}, }); } function complete_popup(tit, txt, subTxt, cancelTxt) { Swal.fire({ confirmButtonText: subTxt, cancelButtonText: "", showCancelButton: true, allowEnterKey: true, title: tit, customClass: { popup: "common_popup", }, html: `

${txt}

`, didOpen: () => { if (cancelTxt == undefined) { $(".swal2-cancel").hide(); $(".common_popup .swal2-actions").css("justify-content", "center"); } }, preConfirm: () => {}, }).then((result) => { if (result.isConfirmed) { location.reload(); } }); } function file_change(e) { $("#" + $(e).attr("id") + "_text").val($(e).val().split("\\")[2]); } function load(id, cnt, btn) { let article_list = id + " .js-load:not(.active)"; console.log($(article_list)); let article_length = $(article_list).length; let article_total_cnt; if (cnt < article_length) { article_total_cnt = cnt; } else { article_total_cnt = article_length; $(".more_btn").hide(); } $(article_list + ":lt(" + article_total_cnt + ")").addClass("active"); } function alarm_popup(tit, txt) { Swal.fire({ confirmButtonText: "확인", cancelButtonText: "확인", showCancelButton: true, showConfirmButton: false, allowEnterKey: true, title: tit, customClass: { popup: "alarm_popup", }, html: `

${txt}

`, didOpen: () => {}, preConfirm: () => {}, }); } function floatingMarginImg() { let imgs = document.querySelectorAll(".article_main_content img"); if (imgs.length === 0) { return false; } // const filtered = Object.values(imgs).filter((item) => { // return item.style.float === "left"; // }); imgs.forEach((item) => { let parent = item.parentNode; if (item.style.float === "left") { item.style.marginRight = "10px"; if (parent.tagName.toLowerCase() === "figure") { parent.style.float = "left"; parent.style.margin = 0; } } else if (item.style.float === "right") { item.style.marginLeft = "10px"; if (parent.tagName.toLowerCase() === "figure") { parent.style.float = "right"; parent.style.margin = 0; } } }); } let subToggleFlag = false; function toggleSubMenu() { const subMenu = document.querySelector(".menu_list"); if (!subToggleFlag) { document.querySelector(".search_bar_inner").style.zIndex = 5; subMenu.classList.add("active"); subMenu.style.zIndex = 6; } else { subMenu.classList.remove("active"); subMenu.style.zIndex = 5; } subToggleFlag = !subToggleFlag; document.querySelector(".search_bar_inner").classList.remove("active"); searchToggleFlag = false; } let searchToggleFlag = false; function toggleSearchMenu() { const searchMenu = document.querySelector(".search_bar_inner"); if (!searchToggleFlag) { document.querySelector(".menu_list").style.zIndex = 5; searchMenu.classList.add("active"); searchMenu.style.zIndex = 6; } else { searchMenu.classList.remove("active"); searchMenu.style.zIndex = 5; } searchToggleFlag = !searchToggleFlag; document.querySelector("#m_nav").classList.remove("active"); document.querySelector(".m_header_top").classList.remove("active"); document.querySelector("body").classList.remove("on"); document.querySelector(".menu_list").classList.remove("active"); subToggleFlag = false; } function searchMenuClose() { const searchMenu = document.querySelector(".search_bar_inner"); searchMenu.style.zIndex = 5; searchMenu.classList.remove("active"); searchToggleFlag = false; }