268 lines
7.9 KiB
PHP
268 lines
7.9 KiB
PHP
<?php include_once __DIR__ . '/asset_urls.php'; ?>
|
|
<!--popup_wrap-->
|
|
<div id="pop_noti" class="popup_wrap popup-notice" style="display:none">
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.7/swiper-bundle.min.css"
|
|
/>
|
|
<!--popup_in-->
|
|
<div class="popup_in">
|
|
<span class="border-effect"></span>
|
|
<div class="popup_container notice">
|
|
<style>
|
|
|
|
.popup-notice a.link {
|
|
cursor: pointer;
|
|
}
|
|
.popup-notice .swiper-wrapper {
|
|
height: auto !important;
|
|
}
|
|
|
|
.popup-notice .swiper-pagination {
|
|
width: auto;
|
|
right: 8px;
|
|
left: auto;
|
|
padding: 4px 12px;
|
|
border-radius: 25px;
|
|
background: rgba(255,255,255,0.6);
|
|
font-size:14px
|
|
}
|
|
|
|
/* PC */
|
|
@media (min-width: 1280px) {
|
|
.popup-notice .popupSwiper {
|
|
max-width:900px;
|
|
}
|
|
.popup-notice .swiper-slide:nth-child(2n) {
|
|
position: relative;
|
|
|
|
}
|
|
.popup-notice .swiper-slide:nth-child(2n):before {
|
|
content:" ";
|
|
position: absolute;
|
|
left: 0;
|
|
top:0;
|
|
width: 1px;height: 100%;
|
|
background:#9E958F;
|
|
}
|
|
.popup-notice .swiper-slide {
|
|
min-width: 450px;
|
|
/* height: 598px;*/
|
|
border-radius: 4px;
|
|
}
|
|
.popup_container.notice img {
|
|
/* max-width: 450px; */
|
|
}
|
|
.popup-notice .swiper-pagination {
|
|
display:none;
|
|
}
|
|
}
|
|
@media (max-width: 721px) {
|
|
.popup_container.notice img,
|
|
.popup_container.notice img {
|
|
max-width: 640px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
<div class="pop-content" >
|
|
<div class="swiper popupSwiper">
|
|
<div class="swiper-wrapper">
|
|
|
|
<?php
|
|
// 오늘 날짜 (Y-m-d 형식)
|
|
$main_today = date('Y-m-d');
|
|
|
|
// 시작일과 종료일
|
|
$mainpop_startDate = '2025-12-01';
|
|
$mainpop_endDate = '2025-12-31';
|
|
// 기간 내에 있으면 배너 표시
|
|
if ($main_today >= $mainpop_startDate && $main_today <= $mainpop_endDate) {
|
|
?>
|
|
<!-- 슬라이드 1 -->
|
|
<div class="swiper-slide">
|
|
<a class="link" href="http://www.ggherald.com/default/index_view_page.php?part_idx=119&idx=74819" target="_blank" alt="‘경기헤럴드’ 기사 전문 바로가기">
|
|
<picture>
|
|
<source
|
|
media="(max-width: 721px)"
|
|
srcset="<?php echo egbim_img_url('main_popup/251128_main_popup_m.png'); ?>"
|
|
/>
|
|
<img
|
|
src="<?php echo egbim_img_url('main_popup/251128_main_popup.png'); ?>"
|
|
alt="EG-BIM X 의왕도시공사 민관 상호 협력 성장 지원을 위한 업무 협약 체결"
|
|
/>
|
|
</picture>
|
|
</a>
|
|
</div>
|
|
<?php
|
|
}
|
|
?>
|
|
<!-- 슬라이드 2 -->
|
|
<div class="swiper-slide">
|
|
<picture>
|
|
<source
|
|
media="(max-width: 721px)"
|
|
srcset="<?php echo egbim_img_url('main_popup/260703_popup_mo.png'); ?>"
|
|
/>
|
|
<img
|
|
src="<?php echo egbim_img_url('main_popup/260703_popup.png'); ?>"
|
|
alt="EG-BIM 로그인 방식 변경 안내"
|
|
/>
|
|
</picture>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 페이지네이션 -->
|
|
<div class="swiper-pagination"></div>
|
|
</div>
|
|
</div>
|
|
<div class="btn-wrap">
|
|
<button id="todayClose" type="button">오늘 하루 보지 않기</button>
|
|
<button id="popupClose" type="button">닫기</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--//popup_in-->
|
|
</div>
|
|
<!--//popup_wrap-->
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.7/swiper-bundle.min.js"></script>
|
|
<script>
|
|
(function() {
|
|
// 쿠키 읽기 함수
|
|
function getCookie(name) {
|
|
var value = "; " + document.cookie;
|
|
var parts = value.split("; " + name + "=");
|
|
if (parts.length === 2) return parts.pop().split(";").shift();
|
|
return null;
|
|
}
|
|
|
|
|
|
// 페이지 로드시 쿠키 확인
|
|
var hidePopup = getCookie("hide_popup");
|
|
var today = new Date().toISOString().split('T')[0];
|
|
|
|
var popup = document.getElementById("pop_noti");
|
|
if (!popup) return;
|
|
|
|
// 오늘 날짜와 쿠키 날짜가 같으면 팝업 숨김
|
|
if (hidePopup === today) {
|
|
popup.style.display = "none";
|
|
} else {
|
|
popup.style.display = "block";
|
|
}
|
|
|
|
// 팝업 외부 클릭 시 닫기
|
|
popup.onclick = function(e) {
|
|
if (e.target === popup) {
|
|
popup.style.display = "none";
|
|
}
|
|
};
|
|
|
|
|
|
// 닫기 버튼
|
|
var closeBtn = document.getElementById("popupClose");
|
|
if (closeBtn) {
|
|
closeBtn.onclick = function() {
|
|
popup.style.display = "none";
|
|
};
|
|
}
|
|
|
|
// 오늘 하루 보지 않기 버튼
|
|
var todayChk = document.getElementById("todayClose");
|
|
if (todayChk) {
|
|
todayChk.onclick = function() {
|
|
var today = new Date();
|
|
var expire = new Date();
|
|
expire.setHours(23, 59, 59, 999);
|
|
document.cookie = "hide_popup=" + today.toISOString().split('T')[0] + "; path=/; expires=" + expire.toUTCString();
|
|
popup.style.display = "none";
|
|
};
|
|
}
|
|
|
|
let swiper = null;
|
|
let resizeTimer = null;
|
|
let currentMode = window.innerWidth >= 1280 ? 'pc' : 'mo';
|
|
|
|
function initSwiper() {
|
|
const slideCount = document.querySelectorAll(
|
|
'.popupSwiper .swiper-slide'
|
|
).length;
|
|
|
|
const isSingleSlide = slideCount <= 1;
|
|
const isPC = window.innerWidth >= 1280;
|
|
|
|
swiper = new Swiper('.popupSwiper', {
|
|
speed: 600,
|
|
watchOverflow: true,
|
|
|
|
slidesPerView: isSingleSlide ? 1 : (isPC ? 2 : 1),
|
|
slidesPerGroup: isSingleSlide ? 1 : (isPC ? 2 : 1),
|
|
|
|
loop: false, // ⭐ loop 고정 (중요)
|
|
allowTouchMove: !isPC,
|
|
|
|
observer: true,
|
|
observeParents: true,
|
|
updateOnWindowResize: false,
|
|
|
|
pagination: {
|
|
el: '.swiper-pagination',
|
|
type: 'fraction',
|
|
},
|
|
|
|
on: {
|
|
init(swiper) {
|
|
// single slide면 pagination 숨김
|
|
if (isSingleSlide && swiper.pagination?.el) {
|
|
swiper.pagination.el.style.display = 'none';
|
|
} else if (swiper.pagination?.el) {
|
|
swiper.pagination.el.style.display = isPC ? 'none' : 'block';
|
|
}
|
|
},
|
|
|
|
// fraction NaN 방어
|
|
paginationUpdate(swiper, el) {
|
|
if (el && el.textContent.includes('NaN')) {
|
|
swiper.slideTo(0, 0, false);
|
|
swiper.update();
|
|
|
|
requestAnimationFrame(() => {
|
|
swiper.pagination.render();
|
|
swiper.pagination.update();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// 최초 실행
|
|
initSwiper();
|
|
|
|
// PC ↔ MO 경계 통과 시에만 재생성
|
|
window.addEventListener('resize', function () {
|
|
clearTimeout(resizeTimer);
|
|
|
|
resizeTimer = setTimeout(() => {
|
|
const newMode = window.innerWidth >= 1280 ? 'pc' : 'mo';
|
|
|
|
if (newMode !== currentMode) {
|
|
currentMode = newMode;
|
|
|
|
if (swiper) {
|
|
swiper.destroy(true, true);
|
|
swiper = null;
|
|
}
|
|
|
|
initSwiper();
|
|
}
|
|
}, 200);
|
|
});
|
|
|
|
|
|
})();
|
|
</script>
|