Files
egbim_homepage/eng/skin/member/basic/main.skin.php
T
2026-07-23 16:15:57 +09:00

695 lines
29 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once __DIR__ . '/asset_urls.php';
?>
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5GX3FS9R');
</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7J3S6MHW3Y"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-7J3S6MHW3Y');
</script>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta name="keywords" content="EG-BIM, 이지빔, egbim, eg bim, CAD, 대안CAD, 도면, BIM, 삼안, 한맥, 바론컨설턴트" />
<!-- Open Graph: 카카오톡 미리보기용 -->
<meta property="og:title" content="EG-BIM" />
<meta property="og:description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta property="og:image" content="<?php echo eng_img_url('og-main-thumb.JPG'); ?>" />
<meta property="og:url" content="/eng/" />
<meta property="og:type" content="website" />
<title>EG-BIM</title>
<link rel="stylesheet" href="/eng/css/reset.css" />
<link rel="stylesheet" href="/eng/css/font.css" />
<link rel="stylesheet" href="/eng/css/style.css" />
<link rel="stylesheet" href="/eng/theme/basic/skin/qa/basic/style.css?ver=2303229">
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="/eng/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="/eng/js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="/eng/js/common.js"></script>
<script type="text/javascript" src="/eng/js/popup.js"></script>
<script>
window.EGBIM_IMG_BASE_URL = <?php echo json_encode(eng_img_url()); ?>;
</script>
<script type="text/javascript" src="/eng/js/index.js"></script>
<link rel="icon" href="/favicon.ico" type="image/x-icon">
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5GX3FS9R"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="wrapper">
<div class="main_mask">
<!-- Header -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<?php
// 오늘 날짜 (Y-m-d 형식)
$main_today = date('Y-m-d');
// 시작일과 종료일
$main_startDate = '2025-10-25';
$main_endDate = '2026-01-31';
// 기간 내에 있으면 배너 표시
if ($main_today >= $main_startDate && $main_today <= $main_endDate) {
// 쿠키 확인
$popup_hidden = isset($_COOKIE['hide_popup']) ? $_COOKIE['hide_popup'] : '';
if ($popup_hidden !== date('Y-m-d'))
include_once($member_skin_path.'/main_popup.skin.php');
}
?>
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<div class="main">
<ul class="pagination_main">
<li><div class="page_01 page_on">Value of EG-BIM</div><span>01</span></li>
<li><div class="page_02">Interface</div><span>02</span></li>
<li><div class="page_03">Key Features</div><span>03</span></li>
<li><div class="page_04">Drawing Management</div><span>04</span></li>
<li><div class="page_05">for BIM</div><span>05</span></li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on" onclick="location.href='<?php echo G5_BBS_URL ?>/value.php'"></a>
<a href="#02" class="main_link_02" onclick="location.href='<?php echo G5_BBS_URL ?>/interface.php'"></a>
<a href="#03" class="main_link_03" onclick="location.href='<?php echo G5_BBS_URL ?>/primary.php'"></a>
<a href="#04" class="main_link_04" onclick="location.href='<?php echo G5_BBS_URL ?>/floorplan.php'"></a>
<a href="#05" class="main_link_05" onclick="location.href='<?php echo G5_BBS_URL ?>/forbim.php'"></a>
</div>
<div class="bg_video">
<video id="video_play" muted playsinline>
<source src="<?php echo eng_img_url('main_1.mp4'); ?>" type="video/mp4" class="main_video_01">
</video>
</div>
<!-- <button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button> -->
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
</div>
<div class="intro_wrap">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span><b>Digital Transformation Era</b></span></div>
<div class="txt_mask"><span><font class="egbim k">EG-BIM_software</font></span></div>
<div class="txt_mask"><span><em>Drawings</em> & <em>3D Information Models</em> <br class="brk">in One Software</span></div>
</div>
</div>
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/eng;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/eng/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/eng/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/eng/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var adminList = [
'b24014@hanmaceng.co.kr',
'kjy0426@hanmaceng.co.kr',
'b23065@hanmaceng.co.kr',
'b23008@baroncs.co.kr',
'cjy627@hanmaceng.co.kr',
'b23072@hanmaceng.co.kr'
];
var loginId = sessionStorage.getItem('loginId') || '';
var normalizedLoginId = loginId.toLowerCase();
var isAdmin = adminList.includes(normalizedLoginId);
if ($('#hid_mb_id').length) {
$('#hid_mb_id').val(isLoggedIn ? loginId : '');
}
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='https://eg-bim.co.kr/eng/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>My Page</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/eng/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
window.dispatchEvent(new CustomEvent('descope-auth-changed', {
detail: { loginId: '' }
}));
// 3) 로그인 페이지로 이동
window.location.href = '/eng/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/eng/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
window.dispatchEvent(new CustomEvent('descope-auth-changed', {
detail: {
loginId: res.user?.loginIds?.[0] || '',
user: res.user || null
}
}));
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 회원가입 약관동의 (중복 바인딩 방지용 네임스페이스 사용)
// $('#fregister button[type=submit]').off('click.agree').on('click.agree', function (e) {
// e.preventDefault();
// // ① 체크 여부는 is(':checked') 로 판단
// var agree1 = $('#agree11').is(':checked');
// var agree2 = $('#agree21').is(':checked');
// if (!(agree1 && agree2)) {
// alert('약관에 모두 동의해주세요.');
// return false;
// }
// // ② 둘 다 체크되어 있으면 서버로 넘길 값 만들기
// // (PHP register_form.php에서 $_POST['agree'], $_POST['agree2']로 받게)
// $.ajax({
// url: '<?php echo G5_URL ?>/bbs/register_form.php',
// type: 'POST',
// dataType: 'html', // or 'json' (서버 응답 형식에 맞게)
// // contentType/processData 기본값 유지 ← JSON 전송 아니면 이게 맞습니다.
// data: {
// agree: 1,
// agree2: 1
// },
// success: function (data) {
// // 통과 시 다음 화면으로 전환
// $('#pop_agreement').hide();
// $('#pop_register_form').show(); // 실제 다음 팝업 ID에 맞춰 수정
// $('body').css('overflow', 'hidden');
// },
// error: function (xhr) {
// alert('처리 중 오류가 발생했습니다.\n다시 시도해주세요.');
// }
// });
// });
// $(document).ready(function() {
// // 기존에 바인딩된 거 있으면 제거 (중복 방지)
// $('#fregister button[type=submit], #btn_agree').off('click.agree');
// $('#fregister button[type=submit], #btn_agree').on('click.agree', function(e){
// e.preventDefault();
// e.stopPropagation();
// e.stopImmediatePropagation();
// // 체크 여부는 반드시 :checked 로 확인해야 함
// var a1 = $('#agree11').is(':checked');
// var a2 = $('#agree21').is(':checked');
// if (!(a1 && a2)) {
// alert('약관에 모두 동의해주세요.');
// return false; // 진행 막기
// }
// // === 여기부터는 통과 시 동작(필요 없으면 주석 처리 가능) ===
// // AJAX 그대로 유지하되, 실제 동작하려면 서버가 받는 파라미터명에 맞추세요.
// // 서버 기본 로직은 보통 'agree', 'agree2'를 받습니다.
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : 'POST',
// dataType : 'json',
// // contentType 은 JSON 전송할 때만 쓰세요. 지금은 기본 폼 인코딩으로 보냅니다.
// // contentType: 'application/json; charset=utf-8',
// data : {
// 'agree' : a1 ? 1 : 0, // 서버가 'agree' 로 받는 경우
// 'agree2' : a2 ? 1 : 0
// },
// success : function(data){
// // 필요 시 다음 단계 이동
// // $('#pop_agreement').hide();
// // $('#pop_register_form').show();
// // $('body').css('overflow','hidden');
// },
// error : function(err){
// alert('오류가 발생했습니다. 잠시 후 다시 시도해주세요.');
// console.error(err);
// }
// });
// });
// });
//이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
//251013 위치 이동
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
//251013 위치 이동 END
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
//로그인 팝업창 쿼리스트링
document.addEventListener("DOMContentLoaded", function(){
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get("popup") === "login") {
const $popup = $("#pop_login");
if ($popup.length) {
$popup.show();
// ✅ 배너가 없으면 붙이기
if (!$("#login_notice_banner").length) {
const bannerHtml = `
<div id="login_notice_banner" class="login-notice-banner" style="
background:#0f3a2f;color:#fff;border-radius:12px;padding:14px 44px 14px 14px;
position:relative;margin:0 0 12px 0;line-height:1.6;word-break:keep-all;">
<button type="button" class="lnb-close" aria-label="닫기" style="
position:absolute;right:10px;top:8px;background:transparent;border:0;
color:#fff;font-size:20px;cursor:pointer;">×</button>
<strong style="display:block;margin-bottom:6px;">[로그인 시스템 변경 안내]</strong>
<p class="left" style="margin:0 0 6px;">
더 나은 보안을 위해 2025년 8월 8일부터
로그인 시스템이 변경되었습니다.
기존 회원 또한 신규 시스템에 맞춰<br>
재가입을 진행해주시기 바랍니다.
</p>
<p style="margin:0;">※ 로그인 및 가입 관련 문의: <strong>02-2141-7434</strong></p>
</div>
`;
$("#pop_login .popup_contents_wrap").prepend(bannerHtml);
// 닫기 버튼 동작
$("#login_notice_banner .lnb-close").on("click", function(){
$("#login_notice_banner").fadeOut(120);
});
} else {
$("#login_notice_banner").show();
}
}
}
});
// //공지사항 팝업 스크립트
// (function(){
// const KEY = 'egbim_notice_2025-08-07'; // 키 바꾸면 전체 사용자에게 다시 노출
// const dim = document.getElementById('egbimNoticeDim');
// const box = document.getElementById('egbimNoticeBox');
// const btnX = document.getElementById('egbimNoticeClose');
// const btnOk = document.getElementById('egbimNoticeOk');
// const btnToday = document.getElementById('egbimNoticeToday');
// function todayStr(){
// const d = new Date(); return d.toISOString().slice(0,10);
// }
// function shouldShow(){
// const v = localStorage.getItem(KEY);
// // 항상 띄우고 싶으면 다음 줄을 `return true;` 로 바꾸세요.
// return v !== todayStr();
// }
// function openNotice(){
// dim.style.display = 'block';
// box.style.display = 'block';
// document.body.style.overflow = 'hidden';
// if (typeof lenis !== 'undefined') try{ lenis.stop(); }catch(_){}
// }
// function closeNotice(storeToday){
// if (storeToday) localStorage.setItem(KEY, todayStr());
// dim.style.display = 'none';
// box.style.display = 'none';
// document.body.style.overflow = '';
// if (typeof lenis !== 'undefined') try{ lenis.start(); }catch(_){}
// }
// btnOk.addEventListener('click', () => closeNotice(true)); // 확인 누르면 오늘은 다시 안봄
// btnToday.addEventListener('click', () => closeNotice(true)); // 오늘 하루 보지 않기
// btnX.addEventListener('click', () => closeNotice(true));
// dim.addEventListener('click', () => closeNotice(true));
// document.addEventListener('DOMContentLoaded', () => {
// if (shouldShow()) openNotice();
// });
// })();
/* 메인 마우스 클릭 문구 */
if (window.location.pathname === '/eng/index.php' || window.location.pathname === '/eng/' || window.location.pathname === '/eng') {
// 커서 따라다니는 텍스트 요소 생성
const cursorText = document.createElement('div');
cursorText.className = 'cursor-text';
cursorText.textContent = 'Click!';
cursorText.style.cssText = `
position: fixed;
pointer-events: none;
z-index: 9999;
font-size: 20px;
color: #fff;
font-weight: 500;
white-space: nowrap;
transform: translate(-0%, -50%);
transition: opacity 0.3s;
`;
document.body.appendChild(cursorText);
// 마우스 움직임 추적
document.addEventListener('mousemove', (e) => {
// 마우스 위치의 요소 확인
const elementUnderMouse = document.elementFromPoint(e.clientX, e.clientY);
// footer 또는 .popup_wrap 영역인지 확인
const isInFooter = elementUnderMouse?.closest('footer');
const isInPopup = elementUnderMouse?.closest('.popup_wrap');
const isInFloating = elementUnderMouse?.closest('.floating_menu');
const isInPagination = elementUnderMouse?.closest('.pagination_main');
const isInHeader = elementUnderMouse?.closest('.js__header');
const isInSitemap = elementUnderMouse?.closest('.popup_sitemap');
// footer나 popup 영역이면 숨김
if (isInFooter || isInPopup || isInFloating || isInPagination || isInHeader || isInSitemap) {
cursorText.style.opacity = '0';
} else {
cursorText.style.opacity = '1';
// 커서 오른쪽 아래에 위치
cursorText.style.left = (e.clientX + 15) + 'px';
cursorText.style.top = (e.clientY + 15) + 'px';
}
});
// 마우스가 페이지를 벗어나면 숨김
document.addEventListener('mouseleave', () => {
cursorText.style.opacity = '0';
});
document.addEventListener('mouseenter', () => {
cursorText.style.opacity = '1';
});
}
</script>