• 23-11-2025, 14:07:47
    #1
    Frontend projelerinde kullanılabilecek, modern ve minimal bir destek baloncuğu (floating contact widget) tasarımı paylaşıyorum. Kodları olabildiğince kısa tuttum; HTML, CSS ve sadece birkaç satır JS ile tamamen temiz ve stabil bir yapı.
    Tasarım özellikleri:
    • 🎧 Tıklayınca açılan modern destek menüsü
    • 📞 “Hemen Ara”, 💬 WhatsApp, ✈️ Telegram butonları
    • 🌙 Hafif gölge + yumuşak animasyon hissi
    • 🧼 Minimal, sade ve projeye direkt entegre edilebilir yapı
    • 📱 Mobil + masaüstü tam uyumlu
    İhtiyacı olan direkt kopyalayıp kendi projesine ekleyebilir.

    HTML
    <div class="contact-widget">
      <div class="contact-menu" id="contactMenu">
        <div class="bubble-arrow"></div>
    
        <button class="btn call">
          <span>📞</span> Hemen Ara
        </button>
    
        <button class="btn wa">
          <span>💬</span> WhatsApp Destek
        </button>
    
        <button class="btn tg">
          <span>✈️</span> Telegram
        </button>
      </div>
    
      <button class="contact-btn" id="contactBtn">
        🎧
      </button>
    </div>
    CSS
    .contact-widget {
      position: fixed;
      right: 24px;
      bottom: 24px;
      font-family: Inter, sans-serif;
    }
    
    .contact-menu {
      position: absolute;
      bottom: 70px;
      right: 0;
      width: 220px;
      background: #fff;
      padding: 12px;
      border-radius: 12px;
      display: none;
      box-shadow: 0 8px 24px rgba(0,0,0,.12);
    }
    
    .bubble-arrow {
      position: absolute;
      bottom: -10px;
      right: 20px;
      width: 0;
      height: 0;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
      border-top: 10px solid #fff;
    }
    
    .btn {
      width: 100%;
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 10px;
      border-radius: 8px;
      border: none;
      cursor: pointer;
      font-size: 14px;
      background: #f1f5f9;
    }
    
    .btn.call {
      background: #e11d48;
      color: #fff;
      font-weight: 600;
    }
    
    .btn + .btn {
      margin-top: 8px;
    }
    
    .contact-btn {
      width: 54px;
      height: 54px;
      background: #e11d48;
      color: #fff;
      border-radius: 50%;
      border: none;
      cursor: pointer;
      box-shadow: 0 8px 24px rgba(225,29,67,.3);
      font-size: 20px;
    }
    JS
    const btn = document.getElementById("contactBtn");
    const menu = document.getElementById("contactMenu");
    
    btn.addEventListener("click", () => {
      menu.style.display = menu.style.display === "block" ? "none" : "block";
    });
    
    document.addEventListener("click", (e) => {
      if (!btn.contains(e.target) && !menu.contains(e.target)) {
        menu.style.display = "none";
      }
    });
  • 23-11-2025, 14:17:57
    #2
    Direk olarak index e eklemek isterseniz

    <!-- CONTACT WIDGET -->
    <div class="contact-widget">
        <div class="contact-menu" id="contactMenu">
            <div class="bubble-arrow"></div>
    
            <button class="btn call">
                <span><img draggable="false" class="emoji" alt="📞" src="//cdn.r10.net/emojis/html/1f4de.png"></span>
                Hemen Ara
            </button>
    
            <button class="btn wa">
                <span><img draggable="false" class="emoji" alt="💬" src="//cdn.r10.net/emojis/html/1f4ac.png"></span>
                WhatsApp Destek
            </button>
    
            <button class="btn tg">
                <span><img draggable="false" class="emoji" alt="✈️" src="//cdn.r10.net/emojis/html/2708.png"></span>
                Telegram
            </button>
        </div>
    
        <button class="contact-btn" id="contactBtn">
            <img draggable="false" class="emoji" alt="🎧" src="//cdn.r10.net/emojis/html/1f3a7.png">
        </button>
    </div>
    
    <style>
    .contact-widget {
      position: fixed;
      right: 24px;
      bottom: 24px;
      font-family: Inter, sans-serif;
    }
    
    .contact-menu {
      position: absolute;
      bottom: 70px;
      right: 0;
      width: 220px;
      background: #fff;
      padding: 12px;
      border-radius: 12px;
      display: none;
      box-shadow: 0 8px 24px rgba(0,0,0,.12);
    }
    
    .bubble-arrow {
      position: absolute;
      bottom: -10px;
      right: 20px;
      width: 0;
      height: 0;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
      border-top: 10px solid #fff;
    }
    
    .btn {
      width: 100%;
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 10px;
      border-radius: 8px;
      border: none;
      cursor: pointer;
      font-size: 14px;
      background: #f1f5f9;
    }
    
    .btn.call {
      background: #e11d48;
      color: #fff;
      font-weight: 600;
    }
    
    .btn + .btn {
      margin-top: 8px;
    }
    
    .contact-btn {
      width: 54px;
      height: 54px;
      background: #e11d48;
      color: #fff;
      border-radius: 50%;
      border: none;
      cursor: pointer;
      box-shadow: 0 8px 24px rgba(225,29,67,.3);
      font-size: 20px;
    }
    </style>
    
    <script>
    const btn = document.getElementById("contactBtn");
    const menu = document.getElementById("contactMenu");
    
    btn.addEventListener("click", () => {
      menu.style.display = menu.style.display === "block" ? "none" : "block";
    });
    
    document.addEventListener("click", (e) => {
      if (!btn.contains(e.target) && !menu.contains(e.target)) {
        menu.style.display = "none";
      }
    });
    </script>