Visualizzazione dei risultati da 1 a 3 su 3

Discussione: "Freezare" un Tooltip

  1. #1

    "Freezare" un Tooltip

    Salve,
    vorrei realizzare un tooltip (che contenga un link) a scomparsa/comparsa sotto un elemento padre che funga da "trigger", ovvero quando si passa con il mouse (onmouseover) su questo "trigger" il tooltip esce fuori lateralmente, e quando il mouse esce fuori (onmouseleave) dal "trigger" il tooltip rientra (scompare nuovamente sotto l'elemento padre).

    Ora, non dovrebbe essere complicatissima come cosa e più o meno infatti ci sono, nel "fiddle" sotto trovate una semplificazione di quello che ho realizzato:
    https://jsfiddle.net/q6pqj1qo/4/

    Il problema però è che come dicevo nel tooltip dovrò inserire un link, quindi ho necessità che se si passa con il mouse sopra il tooltip (contestualmente si esce dal "trigger") questo dovrebbe rimanere fermo in modo da consentire il click sul link, invece al momento appena esco dal "trigger", anche se passo subito sul tooltip (anche se gli ho assegnato le stesse funzioni del "trigger") questo continua nella transizione di scomparsa sotto l'elemento padre (vedi fiddle sopra).

    Suggerimenti?
    Grazie a tutti!

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, premetto che il tutto è risolvibile senza l'uso di JavaScript. In questo caso non ne vedo proprio la necessità. L'effetto hover puoi gestirlo tranquillamente da css.

    Il problema sta comunque in quel z-index:-1;.
    Di fatto, questo porta il tooltip praticamente sotto il body, che lo "copre" inibendo gli eventi mouse.

    Non chiedermi perché accade questo, ma se provi ad azzerare le dimensioni del body, il tutto funziona.
    codice:
    body{
      width: 0;
      height: 0;
      background: green;
    }
    A prescindere da questo, io risolverei diversamente, usando solo css, e incapsulando il tooltip dentro un ulteriore div con overflow:hidden. Inoltre userei delle classi, piuttosto che degli id, in modo da rendere il sistema riutilizzabile per eventuali altre istanze sulla stessa pagina, cosa che non puoi fare se usi degli id. Farei anche qualche altro aggiustamento...
    Ti posto un esempio da cui puoi prendere spunto:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <style type="text/css">
          body{
            background: green;
          }
          .trigger{
            width: 300px;
            height: 300px;
            position: relative;
            background: blue;
          }
          .trigger>.tooltip{
            position: absolute;
            top: 50px;
            right: 0;
            width: 0;
            overflow: hidden;
          }
          .trigger>.tooltip>div{
            padding: 10px;
            width: 100px;
            text-align: center;
            background: rgba(255,255,255, .7);
            color: black;
            float: right;
            border-radius: 0 10px 10px 0;
          }
          .trigger>.tooltip,.trigger>.tooltip>div{
            transition: all .4s ease;
          }
          .trigger:hover>.tooltip{
            right: -100px;
            width: 100px;
          }
        </style>
      </head>
      <body>
        <div class="trigger">
          Elemento padre ("trigger")
          <div class="tooltip"><div>tooltip <br><a href="#">Link here</a></div></div>
        </div>
        <br>
        <div class="trigger">
          Altro Elemento trigger
          <div class="tooltip"><div>tooltip blablabla<br><a href="#">altro link</a></div></div>
        </div>
      </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ciao KillerWorm,
    anzitutto grazie mille per la risposta!!!

    Certo che la cosa del body è veramente strana...
    Però in effetti avevo fatto anche io delle prove ieri portando il tooltip in primo piano (z-index: 1) ed il tutto funzionava, quindi il problema era appunto che il tooltip risultava "coperto".

    Ottima la tua soluzione "pure CSS", io mi vado sempre ad impelagare con JavaScript/JQuery che faccio ancora un pò di fatica a ragionare solo in termini di CSS a volte e mi complico solo la vita...
    Inoltre non avrei mai pensato, come alternativa del z-index negativo, a nascondere il tooltip in un contenitore con larghezza dinamica ed overflow hidden, bella pensata
    ...sicuramente la riutilizzerò anche in altri contesti.

    Ancora mille grazie per la soluzione, alla prossima!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.