쉬어매드니스 연극 후기|관객 참여형 추리극 완전정복 (좌석팁+예매링크 포함)
대학로 대표 코미디 추리 연극 쉬어매드니스! 최신 예매 정보, 관람 후기, 좌석 꿀팁, 할인 정보까지 정리. 결말이 바뀌는 N차 관람 인기 작품!관객이 직접 범인을 고른다?대한민국 최장수 오픈런 연극, 쉬어매드니스를 소개합니다.지금부터 최신 예매 정보, 좌석 꿀팁, 후기, 할인 정보까지 완벽 정리해 드릴게요!1. 쉬어매드니스 연극 정보 & 예매 안내 항목 정보 장르관객 참여형 코믹 추리극 (코미추리)공연 시간약 110분 (인터미션 약 7분 포함)관람 등급만 16세 이상 (15세 이하 및 보호자 동반 입장도 불가)공연 기간오픈런 중 (2025년 5월 기준), 각 예매처 일정 확인 필요장소대학로 콘텐츠박스 소극장 (서울 종로구 동숭길 55, 지하1층)좌석 수약 160석 (1층·2층 구조, 회차별 상이 가능..
2025. 5. 17.
setTimeout(function () {
const dragSensitivity = 0.55; // 드래그 민감도
const clickTolerance = 0; // 클릭 간주 기준 (px), 0: 클릭 시 이동 안함. 클릭 시 이동하려면 1~3값 설정 고려.
const dragRatioThreshold = 0.55; // 배너 너비 대비 드래그 비율, 배너 드래그 후 드롭 시.
const newWindow = 1; // 1: 새 창, 0: 현재 창
const bannerConfigs = [
{
selector: '.sliding-banner-300',
width: 300,
height: 300,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-150',
width: 320,
height: 150,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/640x300-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-32Ox15O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-250',
width: 300,
height: 250,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-280',
width: 336,
height: 280,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back3.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-right.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrow-right.png',
dragDirection: 'right'
}
];
const coupangLink = 'https://link.coupang.com/a/c2PToW'; // 본인의 간편 링크로 대체 📍
function openLink(link) {
if (newWindow) {
window.open(link, '_blank');
} else {
history.replaceState(null, null, window.location.href);
window.location.href = link;
}
}
function generateIframeURL(config) {
return `https://ads-partners.coupang.com/widgets.html?id=${config.id}&template=carousel&trackingCode=${config.trackingCode}&subId=${encodeURIComponent(config.subId || '')}&width=${config.width}&height=${config.height}&tsource=${encodeURIComponent(config.tsource || '')}`;
}
function createBanner(config) {
const iframeURL = generateIframeURL(config);
const wrapper = document.createElement('div');
wrapper.innerHTML = `
당겨주세요!
`;
return wrapper;
}
// trigger event update
function setupDragEvents(dragTarget, animatedBanner, threshold, link, direction) {
let startX = 0, diffX = 0, triggered = false, isDragging = false;
function getClientX(e) {
return e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
}
function triggerOnce() {
if (triggered) return;
triggered = true;
animatedBanner.style.transform = 'translateX(0)';
animatedBanner.classList.add('active');
openLink(link);
}
function startDrag(e) {
if (e.type.startsWith('mouse') && e.button !== 0) return;
isDragging = true;
startX = getClientX(e);
diffX = 0;
triggered = false;
animatedBanner.classList.remove('active');
e.preventDefault();
}
function onDrag(e) {
if (!isDragging) return;
const currentX = getClientX(e);
diffX = currentX - startX;
if ((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0)) {
animatedBanner.style.transform = `translateX(${diffX}px)`;
if (Math.abs(diffX) > threshold) {
triggerOnce();
}
e.preventDefault();
}
}
function endDrag() {
if (!isDragging) return;
isDragging = false;
const dragRatio = Math.abs(diffX) / dragTarget.offsetWidth;
if (Math.abs(diffX) < clickTolerance || (
dragRatio >= dragRatioThreshold &&
((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0))
)) {
triggerOnce();
} else {
animatedBanner.style.transform = 'translateX(0)';
animatedBanner.classList.add('active');
}
diffX = 0;
}
dragTarget.addEventListener('mousedown', startDrag);
dragTarget.addEventListener('mousemove', onDrag);
dragTarget.addEventListener('mouseup', endDrag);
dragTarget.addEventListener('mouseleave', endDrag);
dragTarget.addEventListener('touchstart', startDrag, { passive: false });
dragTarget.addEventListener('touchmove', onDrag, { passive: false });
dragTarget.addEventListener('touchend', endDrag);
}
// end
bannerConfigs.forEach(config => {
const targets = document.querySelectorAll(config.selector);
if (targets.length === 0) return;
targets.forEach(target => {
target.innerHTML = '';
const banner = createBanner(config);
target.appendChild(banner);
const customBox = banner.querySelector('.customBox');
const animatedBanner = banner.querySelector('.customBanner');
const threshold = config.width * dragSensitivity;
setupDragEvents(customBox, animatedBanner, threshold, coupangLink, config.dragDirection);
});
});
}, 100);