Ciao amici,
h ho bisogno di un aiuto con il CSS. Ogni volta che faccio clic su un’immagine nel mio sito, l’elemento .d-header si sposta di circa 2 pixel. Ho fatto del mio meglio per risolvere il problema, ma senza successo. Non so come correggere il CSS della parte grigia dietro l’immagine.
Interessante. Non me ne sono mai accorto, ma appare anche nella maggior parte (se non in tutti) i temi ufficiali di Discourse, purché l’intestazione sia fissata e la barra di scorrimento scompaia.
Sembra che appaia quando la barra di scorrimento scompare E il corpo ha la classe docked (il che è un po’ diverso rispetto a quando l’intestazione è fissa).
Penso che il problema sorga dal fatto che, quando la barra di scorrimento scompare, viene applicato style="margin-right: 17px; overflow: hidden;" al body per compensare la larghezza della barra di scorrimento.
Ma dato che .d-header ha una posizione fixed, non “eredita” il margin-right dell’html.
modifica:
Sembra che il margine dell’html (uguale alla larghezza della barra di scorrimento) venga calcolato tramite JavaScript attraverso jquery.magnific-popup.min.js.
Non sono sicuro che esista una soluzione rapida e pulita per risolvere il problema.
Accade anche al compositore se vuoi qualcosa di cui lamentarti
Il problema è che gli elementi fixed sono posizionati rispetto alla larghezza della viewport, e le barre di scorrimento modificano tale larghezza.
Come menzionato da @Canapin, questo viene compensato su <HTML> con un margine aggiuntivo (sembra un comportamento simile a quello di Magnific Popup)… poiché gli elementi fixed non sono relativi a <HTML>, il compositore e l’intestazione richiederebbero una correzione aggiuntiva.
Ciò che dovremmo fare è calcolare la larghezza della barra di scorrimento e, quando il popup viene attivato, aggiungere alcuni stili inline come:
.d-header {
left: -15px; /* Barra di scorrimento larga 15px in questo esempio */
width: calc(100% + 30px); /* Aggiungere il doppio della larghezza della barra di scorrimento per compensare lo spostamento e la larghezza */
}
Implementare questa soluzione va un po’ oltre le mie capacità… Penso che la larghezza della barra di scorrimento venga calcolata confrontando la larghezza della pagina prima e dopo l’apertura del popup? Non ne sono sicuro al 100%.
Detto questo… questo sarà un problema leggermente minore se passeremo a position: sticky dopo aver eliminato il supporto a IE11 quest’anno. Lo spostamento non si verificherebbe più, ma potrebbe esserci uno spazio vuoto a destra dell’intestazione dove si trovava la barra di scorrimento.
Ho una piccola correzione per te: non è perfetta, c’è ancora un po’ di movimento nel titolo, nella categoria e nelle icone delle intestazioni, ma la barra dell’intestazione rimarrà al suo posto.
Non l’ho testata a fondo e non è assolutamente una soluzione ufficiale, ma per ora puoi provarla. Non sono abbastanza esperto da trovare una soluzione migliore al momento.