[λ§ν¬ νμ μ°½ μμ λ²-1 ] λ§ν¬μ 미리보기 λμμ νμ μ°½ νμλ°©λ²
λ°νμΌ: 2025. 1. 27.
λ§ν¬μ 미리 보기 μλ μ¬μλλ λμμ νμ ꡬννκΈ°
μΉμ¬μ΄νΈμ λΈλ‘κ·Έμμ μ¬μ©μ 체λ₯ μκ°μ ν₯μμν€κΈ° μν΄ λ§μ°μ€ μ€λ² μ λμμμ 미리 보기 νμ μ°½μΌλ‘ νμνλ κΈ°λ₯μ ꡬννλ κ²μ λ§€μ° μ μ©ν λ°©λ²μ λλ€. μλ₯Ό λ€μ΄, μ΄λ―Έμ§λ ν μ€νΈ λ§ν¬ μμ λ§μ°μ€λ₯Ό μ¬λ Έμ λ κ΄λ ¨λ λμμμ μλμΌλ‘ νμν΄ μ£Όλ©΄, μ¬μ©μλ ν΄λ¦νμ§ μκ³ λ κ°νΈνκ² λ―Έλ¦¬ μ 보λ₯Ό νμΈν μ μμ΅λλ€. μ΄λ¬ν λ°©μμ μ¬μ©μμκ² μ½ν μΈ λ₯Ό λ μ½κ² νμΈν μ μκ² ν΄ μ£Όλ©°, νΉν μκ°μ μ½ν μΈ λ₯Ό νμ©νλ©΄μ μ¬μ©μμ 체λ₯ μκ°μ μ¦κ°μν€κ³ , λ€λ₯Έ μ½ν μΈ λ‘μ μ΄λμ μ λν μ μμ΅λλ€.
λμμ νμ
μ°½ μ μ
λ©ν°λ―Έλμ΄ λ§ν¬ νμ©
ν΄ν νμ©μ νμ©ν΄μ λμμ,μ΄λ―Έμ§ μ½ν
μΈ λ―Έλ¦¬λ³΄κΈ°
λ§μ°μ€ μ€λ² μ λμμμ 미리 보기 νμ μ°½μΌλ‘ νμνλ κΈ°λ₯μ νμ©νλ©΄ μΉμ¬μ΄νΈλ λΈλ‘κ·Έλ₯Ό μ’ λ λμ μΌλ‘ 보μ΄κ² ν μ μμ΅λλ€. νΉν, μ΄λ―Έμ§λ ν μ€νΈ λ§ν¬λ₯Ό λ§μ°μ€λ‘ μ€λ²νμ λ κ΄λ ¨λ λμμμ 보μ¬μ£Όλ λ°©λ²μ μ¬μ©μ κ²½νμ ν₯μμν¬ μ μμ΅λλ€. μ΄ κΈμμλ λ§μ°μ€ μ€λ² μ λμμ νμ μ°½μ νμνλ λ°©λ²μ λ¨κ³λ³λ‘ μ€λͺ νκ² μ΅λλ€. HTML, JavaScript, CSSλ₯Ό μ΄μ©ν΄ κ°λ¨ν ꡬνν μ μλ λ°©λ²μ ν΅ν΄ μΉμ¬μ΄νΈμ μ½ν μΈ λ₯Ό λμ± λμ μΌλ‘ λ§λλ λ°©λ²μ μκ°ν©λλ€.
λ§ν¬μ λμμ νμ μ°½ νμ λ°©λ²
κΈ°λ³Έμ μΌλ‘ μ€μ λ ν΄νμ μμ νλ €λ©΄ λ§ν¬ μ½λμ ν΄λμ€ μμ±κ³Ό μ΄λ―Έμ§ λ° λμμ λ§ν¬λ₯Ό μΆκ°ν΄ μ£Όμ΄μΌ ν©λλ€. μ΄ λ°©λ²μ μλμΌλ‘ μ²λ¦¬νκ² λλ©΄ κΈ°μ‘΄μ μ μν λͺ¨λ λ§ν¬λ₯Ό μμ ν΄μΌ νλ λΆνΈν¨μ΄ λ°μν μ μμ΅λλ€. λ°λΌμ κ³΅ν΅ ν΄λμ€ μμ±μ μλ°μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μλμΌλ‘ μ€μ νκ³ , κ°λ³μ μΌλ‘ λ§ν¬μ μ°κ²°λλ μ΄λ―Έμ§μ λμμμ κ° μ½ν μΈ μ λ§κ² μ΄μμκ° μΆκ°νλ λ°©μμΌλ‘ μ¬μ©ν©λλ€.
μ΄λ―Έμ§λ§ μ¬μ©ν κ²½μ°λ '[λ§ν¬ νμ μ°½ μμ λ²] λ§μ°μ€ μ€λ² μ λνλλ νμ μ°½μ μν , μμ λ°©λ²' κΈμ μλ λ΄μ©μ νμΈνμλ©΄ λ©λλ€.
1. κΈ°λ³Έ HTML μ€μ νκΈ°
μ°μ , λ§ν¬μ κ΄λ ¨λ μ½ν μΈ λ₯Ό ν¬ν¨ν κΈ°λ³Έ HTML ꡬ쑰λ₯Ό λ§λλλ€. μ¬κΈ°μ data-video μμ±μ λμμ URLμ μ μ₯νμ¬ ν΄λΉ λ§ν¬μ λ§μ°μ€λ₯Ό μ¬λ Έμ λ λμμμ λΆλ¬μ€λλ‘ μ€μ ν©λλ€.
<a href="#" class="tooltip" title="μ΄ λ§ν¬μ λν μΆκ° μ 보"
data-image="https://μ΄λ―Έμ§κ²½λ‘/img.gif"
data-video="https://www.youtube.com/watch?v=dQw4w9WgXcQ">
λ§ν¬ ν
μ€νΈ
</a>
2. JavaScriptλ‘ λμμ μ½μ
λμμμ λμ μΌλ‘ νμ μ°½μ μ½μ νλ €λ©΄ JavaScriptλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. μ νλΈ URLμμ λΉλμ€ IDλ₯Ό μΆμΆνκ³ μ΄λ₯Ό κΈ°λ°μΌλ‘ iframeμ μμ±νμ¬ νμ μ°½μ μ½μ ν©λλ€.
<script>
window.onload = function() {
var links = document.querySelectorAll('a[title]');
links.forEach(function(link) {
link.addEventListener('mouseover', function() {
var tooltipText = document.createElement('span');
tooltipText.classList.add('tooltiptext');
tooltipText.textContent = link.getAttribute('title');
var imageUrl = link.getAttribute('data-image');
if (imageUrl) {
var tooltipImage = document.createElement('img');
tooltipImage.src = imageUrl;
tooltipImage.alt = "Tooltip Image";
tooltipImage.style.width = "100%";
tooltipText.appendChild(tooltipImage);
}
var videoUrl = link.getAttribute('data-video');
if (videoUrl) {
var videoId = getYouTubeVideoId(videoUrl);
if (videoId) {
var youtubeEmbedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?autoplay=1&mute=1&controls=0`;
var tooltipVideo = document.createElement('iframe');
tooltipVideo.src = youtubeEmbedUrl;
tooltipVideo.width = "100%";
tooltipVideo.height = "200";
tooltipVideo.frameBorder = "0";
tooltipVideo.allow = "autoplay; encrypted-media";
tooltipText.appendChild(tooltipVideo);
}
}
link.classList.add('custom-tooltip');
link.appendChild(tooltipText);
});
link.addEventListener('mouseout', function() {
var tooltipText = link.querySelector('.tooltiptext');
if (tooltipText) {
link.removeChild(tooltipText);
}
});
});
};
function getYouTubeVideoId(url) {
var regex = /(?:https?:\/\/(?:www\.)?youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*\?v=)|https?:\/\/youtu\.be\/)([a-zA-Z0-9_-]{11})/;
var match = url.match(regex);
return match ? match[1] : null;
}
</script>
3. CSSλ‘ ν΄ν μ€νμΌ μ€μ νκΈ°
ν΄νμ λμμ νμ μ°½μ²λΌ 보μ΄κ² νκΈ° μν΄ CSSλ₯Ό μ¬μ©νμ¬ μ€νμΌλ§ν©λλ€. ν΄νμ λ§μ°μ€ μ€λ² μμλ§ λ³΄μ΄κ³ , μΌλ°μ μΌλ‘ μ¨κ²¨μ§λλ‘ μ€μ ν©λλ€.
.custom-tooltip .tooltiptext {
position: absolute;
visibility: hidden;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 5px;
padding: 10px;
line-height: 1.5;
position: absolute;
z-index: 1;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 0.3s ease-in-out;
}
.custom-tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
.custom-tooltip .tooltiptext img,
.custom-tooltip .tooltiptext iframe {
width: 100%;
max-width: 560px; /* μ΅λ λλΉλ₯Ό 560pxλ‘ μ€μ (μ νλΈ κΈ°λ³Έ μ¬μ΄μ¦) */
height: auto;
aspect-ratio: 16 / 9; /* 16:9 λΉμ¨μ μ μ§ */
object-fit: contain;
margin-top: 10px;
}
4. λμ νμΈ
μ΄μ λ§ν¬μ λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ ν΄νμ΄ λνλκ³ , λμμμ΄ μλμΌλ‘ μ¬μλλ νμ μ°½μ΄ νμλ©λλ€. λμμμ ν¬κΈ°λ νλ©΄ ν¬κΈ°μ λ§κ² μ‘°μ λλ©°, iframeμ 16:9 λΉμ¨λ‘ μ μ§λ©λλ€.
- λ§ν¬μ λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ κ΄λ ¨λ λμμμ΄ νμ μΌλ‘ νμλλ©°, μλμΌλ‘ μ¬μλ©λλ€.
- λμμμ ν¬κΈ°λ νλ©΄ ν¬κΈ°μ λ§κ² μ΅μ νλλ©°, λΉμ¨μ μ μ§νλ©΄μ νμλ©λλ€.
- iframeμ ν΅ν΄ μ νλΈ λμμμ΄ μ½μ λμ΄, λμμμ΄ μλ μ¬μλκ³ μμκ±°λ©λλ€.
μ΄ λ°©λ²μ μ¬μ©νλ©΄ λ§μ°μ€ μ€λ² μ λμμμ νμ μ°½μΌλ‘ νμν μ μμ΅λλ€. μ΄ κΈ°λ₯μ μΉμ¬μ΄νΈμμ μΆκ°μ μΈ μ 보λ λ―Έλμ΄λ₯Ό 보μ¬μ€ λ λ§€μ° μ μ©νλ©°, μ¬μ©μμκ² μ§κ΄μ μΈ κ²½νμ μ 곡ν μ μμ΅λλ€. λμμ μΈμλ μ΄λ―Έμ§, ν μ€νΈ λ±μ μ½ν μΈ λ₯Ό ν΄νμΌλ‘ νμν μ μμ΄ λ€μν λ°©μμΌλ‘ νμ©ν μ μμ΅λλ€.