Skip to content

Custom Navigator

A Custom navigator template that i use for my blog. Create map here Free Online Image Map Generator to visualize the position of the overlay and then edit the html using the code bellow :

<div class="thesis-map-wrapper">
    <div class="thesis-map-container">
        <img src="https://satwika.my.id/wp-content/uploads/2026/04/003_RESEARCH-METHOD.drawio.png" usemap="#image-map" class="thesis-map-image">
        
        <!-- SATU UNIT: Trigger, Overlay, dan Widget -->
        <div class="node-wrapper lit-study-pos">
            <!-- Link transparan seukuran kotak (Pemicu Utama) -->
            <a href="https://satwika.my.id/2026/04/17/thesis-ii-literature-study/" class="area-trigger"></a>
            
            <!-- Kotak Kuning -->
            <div class="hover-overlay"></div>

            <!-- Widget -->
            <div class="hallo-widget">
                <div class="widget-inner">
                    <img src="https://satwika.my.id/wp-content/uploads/2026/04/003_RESEARCH-METHOD.drawio.png" class="widget-img">
                    <div class="widget-text">
                        <strong>Literature Study</strong>
                        <span>Click to proceed to Thesis Summary II</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<map name="image-map">
    <area target="" alt="Literature Study" href="https://satwika.my.id/2026/04/17/thesis-ii-literature-study/" coords="9,87,125,149" shape="rect">
</map>

<script src="https://cdnjs.cloudflare.com/ajax/libs/image-map-resizer/1.0.10/js/imageMapResizer.min.js"></script>
<script>
    document.addEventListener('DOMContentLoaded', function() {
        imageMapResizer();
    });
</script>

<style>
    .thesis-map-wrapper {
        display: flex;
        justify-content: center;
        width: 100%;
        margin: 40px 0;
    }

    .thesis-map-container {
        position: relative;
        display: inline-block;
        width: 20%; 
        min-width: 150px; 
    }

    .thesis-map-image {
        display: block;
        width: 100%;
        height: auto;
    }

    /* Posisi Node Wrapper (Bungkus semua elemen interaktif) */
    .node-wrapper {
        position: absolute;
        z-index: 10;
    }

    /* Koordinat Persentase Literature Study */
    .lit-study-pos {
        top: 9.11%;
        left: 6.76%;
        width: 87.21%;
        height: 6.49%;
    }

    /* Link Transparan (Area Klik yang sebenernya) */
    .area-trigger {
        display: block;
        width: 100%;
        height: 100%;
        cursor: pointer;
        z-index: 15;
        position: relative;
    }

    /* Kotak Kuning */
    .hover-overlay {
        position: absolute;
        top: 0; left: 0; width: 100%; height: 100%;
        background-color: rgba(255, 255, 0, 0.4);
        border: 2px solid yellow;
        border-radius: 4px;
        opacity: 0;
        transition: opacity 0.3s;
        z-index: 5;
        pointer-events: none;
    }

    /* Widget */
    .hallo-widget {
        position: absolute;
        top: 0;
        left: 115%; /* Di samping kanan */
        background: white;
        border-radius: 8px;
        box-shadow: 0 10px 20px rgba(0,0,0,0.15);
        border-left: 5px solid #ffcc00;
        padding: 8px;
        width: 180px;
        opacity: 0;
        transform: translateY(10px);
        transition: all 0.3s ease;
        z-index: 20;
        pointer-events: none;
    }

    /* Panah Widget */
    .hallo-widget::before {
        content: "";
        position: absolute;
        left: -12px; top: 15px;
        border-width: 6px;
        border-style: solid;
        border-color: transparent white transparent transparent;
    }

    /* --- HOVER LOGIC --- */
    /* Saat kursor masuk ke node-wrapper, nyalakan kuning & widget */
    .node-wrapper:hover .hover-overlay {
        opacity: 1;
        animation: blinkAnimation 0.8s infinite;
    }

    .node-wrapper:hover .hallo-widget {
        opacity: 1;
        transform: translateY(0);
    }

    .widget-inner { display: flex; align-items: center; gap: 10px; }
    .widget-img { width: 40px !important; height: 40px !important; object-fit: cover; border-radius: 4px; }
    .widget-text { display: flex; flex-direction: column; font-size: 11px; line-height: 1.2; color: #333; }

    @keyframes blinkAnimation {
        0%, 100% { opacity: 1; }
        50% { opacity: 0.1; }
    }
</style>

Leave a Reply

Your email address will not be published. Required fields are marked *