Ho un calendario e quando l'utente passa su una cella, viene visualizzata una casella informativa di grandi dimensioni con i dettagli per quella data. Sto avendo qualche problema anche se la casella informativa scompare quando l'utente si allontana.Implementazione di un riquadro di informazioni al passaggio del mouse
Fondamentalmente lo voglio in modo che quando il cursore del mouse si sposta fuori dalla cella del calendario che è nascosta dal riquadro delle informazioni scompare. Ma ho problemi con questo perché mouseenter
e mouseleave
sono incasinati avendo la casella informazioni come l'elemento in alto.
Così ho cercato di aggirare questo usando i div "segnaposto" che sono trasparenti, hanno la stessa forma e la stessa posizione della cella di calendario sotto di esso, e hanno uno z-index di 1000 in modo che siano sopra la casella di informazioni. Quindi applico gli eventi mouseenter
e mouseleave
a questi div.
Ci sono due problemi con questo però. Uno, ora ho incasinato il mio codice HTML semanticamente. I div non hanno scopo ma aggirare quello che sembra essere un limite. E in secondo luogo, rovinano la mia selezione dell'interfaccia utente jQuery (l'ho applicata alle celle del calendario: un clic non seleziona più una cella).
C'è un modo pulito per gestire la visualizzazione di una casella informativa? Non ci sarà alcuna interazione dell'utente con il riquadro delle informazioni, ma solo per visualizzare le informazioni.
EDIT: Ecco il codice:
<li>
<div class="day-content">
</div>
<div class="day-content-placeholder">
</div>
</li>
e CSS
li
{ position: absolute; width: 15%; height: 20%; top: ... left: ... }
.day-content
{ position: absolute; width: 100%; height: 100%; }
.day-content-placeholder
{ position: absolute; width: 100%; height: 100%; z-index: 1000; }
.popup
{ position: absolute; width: 300%; height: 300%; left: -150%; top: -150%; z-index: 500; }
e Javascript
var popup;
$('.week-content-placeholder')
.mouseenter(function()
{
popup = $('<div class="popup">'+a_lot_of_text+'</div>').insertAfter(this);
})
.mouseleave(function()
{
popup.remove();
});
Questo non è il codice esatto, ma si ottiene l'idea. Funziona bene, ma come ho detto, poiché .week-content-placeholder
è sopra lo .week-content
, la capacità di selezione con l'interfaccia utente di jQuery non funziona correttamente su .week-content
.
Potrebbe essere utile sapere quale è l'html del calendario * * per rispondere a questa domanda. –
Beh, non è una domanda specifica per il calendario. È solo un div che ha un evento mouseenter che aggiunge un altro div vicino ad esso. Questo div ha una larghezza e un'altezza grandi, ma ora oscura il div al di sotto di esso, bloccando il suo evento di mouseleave. – Nick
Nick, perché non usi la "posizione" CSS per posizionare la tua casella informativa sullo schermo in modo tale da non ostruire completamente la cella del calendario? – Neil