본문 바로가기
반응형

난홍2

난홍 드라마 다시 보기 완벽 정리 | 난홍 소설부터 결말·OST·등장인물까지 한눈에! 주제 시각자료 난홍 드라마 다시 보기 완벽 정리 | 난홍 소설부터 결말·OST·등장인물까지 한눈에! 난홍 드라마 다시 보기 | 결말·소설·OST까지 총정리">중드 난홍의 감동을 다시 느껴보세요. 소설 원작, 등장인물, 결말, OST까지 난홍을 제대로 이해할 수 있는 총정리 가이드입니다.1. 난홍 드라마 개요1.1 난홍이란?‘난홍(难哄)’은 중국 인기 웹소설을 원작으로 한 넷플릭스 중드로, “달래기 어렵다”는 의미를 지닌 감성 로맨스물입니다.난홍 드라마는 첫사랑과 재회, 감정 치유를 주제로 하며, 난홍 소설 팬층의 압도적 지지를 받으며 제작되었습니다.1.2 기본 정보제목: 난홍 (难哄)원작: 죽이(竹已) 작가의 난홍 소설총 회차: 32부작감독: 취유닝방송: YOUKU, 넷플릭스 중드 (한글 자막 제공)2. 난홍 등장인물 정리2.1 주요 등장인물 인물 배우 설명 쌍옌백경정유쾌하지만 내면에 상처 있는 주.. 2025. 5. 3.
난홍 소설 vs 드라마: 번역으로 드러나는 감정선의 진짜 가치 주제 시각자료 난홍 소설 vs 드라마: 번역으로 드러나는 감정선의 진짜 가치 🎫 백경정, '난홍'으로 인기 급상승! 출연작 & 웨이보 화제 총정리 ▶ 지금 바로 관련 콘텐츠 확인하기 ">🎫 백경정, '난홍'으로 인기 급상승! 출연작 & 웨이보 화제 총정리 ▶ 지금 바로 관련 콘텐츠 확인하기  드라마 《난홍》과 원작 소설을 비교해보세요. 감정선의 깊이를 좌우하는 자막 번역의 중요성과 소설 속 캐릭터들의 진짜 이야기까지, 지금 확인해보세요.“쌍옌은 왜 그토록 오래 기다렸을까?”“원이판의 침묵은 왜 더 슬펐을까?”단순한 로맨스가 아니다. 《난홍》은 기다림과 치유의 이야기다.1. 드라마와 원작 소설 사이, 느껴보셨나요?요즘 넷플릭스에서 가장 뜨거운 중드 중 하나, 《난홍(难哄, The First Frost)》.백경정과 장약남이 주연을 맡아 시청자들의 감성을 자극하는 이.. 2025. 4. 11.
반응형

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);