Il mio problema è che la barra di scorrimento verticale di Windows del browser che viene rimossa, ad esempio overflow:hidden;
, farà saltare la pagina, quando riappare dopo. Io uso jQuery per rimuovere l'opzione di scorrimento da parte del visitatore, mentre uno script è in esecuzione e scorrendo la pagina ad un punto specifico, e poi per farlo riapparire di nuovo in seguito:Come creare un segnaposto barra di scorrimento
www.nebulafilm.dk/index.html?content
Posso fare un segnaposto per la barra di scorrimento, quando non è presente, quindi non sarà saltare indietro?
Oppure è possibile "disattivarlo" e farlo "in grigio"?
Non riesco a trovare nessuna soluzione cercando. Ho trovato qualcosa di simile qui: stackoverflow.com dove la barra di scorrimento è sempre lì. Ma la differenza è che la barra di scorrimento deve rimanere disabilitata, anche se la pagina è più lunga della finestra. Deve essere "attivato" di nuovo solo attraverso un altro script che controllo.
È questo in alcun modo possibile?
Grazie.
Aggiornamento:
Tempo per un aggiornamento di stato.
Ho avuto alcuni problemi con l'immagine di sfondo della stella nuvola, che è stata impostata sul tag body
.
Quando lo script jQuery (dalla risposta delle lupi) ha aggiunto il padding al tag html
e pertanto dovrebbe spostare tutti gli elementi nella pagina a sinistra, l'immagine di sfondo non si è comportata correttamente.
Bene, ho scoperto che l'elemento body
non reagisce come qualsiasi elemento div
. Non è solo un "blocco" all'interno del tag html
come qualsiasi altro elemento del blocco. Ha i suoi comportamenti e apparentemente non può essere ingannato allo stesso modo. Pertanto l'immagine di sfondo era impossibile da toccare, mentre era su body
.
Ma mi c'è voluto del tempo per capire ...
La soluzione fine a questo è così lanciando stupidamente semplice che ero quasi in lacrime quando scoprire, pensare alle infinite (potrei esagerare un po ') ore di investigando sul body
.
Ho semplicemente avvolto tutto in un <div id="body">
e ho dato questa immagine di sfondo. All'improvviso tutto è andato a posto.
Da:
<body>
...
</body>
E
body {background-image: url(...);}
A:
<body>
<div id="body">
...
</div>
</body>
E:
#body {background-image: url(...);}
An d un po 'più saggio su body
.
Nessun "salto" più. Delizioso.
L'effetto è ora completamente in esecuzione e quasi non si nota alcun cambiamento con la barra di scorrimento e ogni dettaglio si adatta. La sceneggiatura di Cwolve è perfetta e fa il calcolo esatto:
function getScrollBarWidth(){
var div = $('<div><div>' + new Array(100).join('content<br />') + '</div></div>'),
div2 = div.find('div'),
body = $(document.body);
div.css({ overflow : 'hidden', width: 100, height: 100, position : 'absolute', left : -1000, top : -1000 });
body.append(div);
var width1 = div2.width();
div.css({ overflow : 'auto' });
var width2 = div2.width();
div.remove();
return width1 - width2;
}
Il getScrollBarWidth()
conterrà esattamente la larghezza della barra di scorrimento non importa il browser, e posso usarlo per aggiungere e rimuovere imbottiture come voglio:
var sWidth = getScrollBarWidth();
$("body").css({'overflow': 'hidden'});
$("html").css({'padding-right': sWidth});
$('html, body').delay(1000).animate({
scrollTop: $(hash).offset().top - 170
}, 2000, 'swing', function(){
$("body").css({'overflow': 'auto'});
$("html").css({'padding-right': 0});
});
Grazie mille. Questo è stato bello.
Sì, questa è una soluzione, se non è possibile la manipolazione diretta della barra di scorrimento. Ma dipenderà dal browser ed è un lavoro laborioso. – Steeven
Quanto è laborioso? Ti ho dato una demo che calcola la larghezza della barra di scorrimento :) L'effettiva implementazione richiede di aggiungere la funzione che ho creato e 3 righe di codice, che sono anche nella demo (cambia semplicemente i selettori). –
Bene, dovrai trovare la larghezza esatta della barra di scorrimento per ciascun tipo di browser e implementare una sorta di controllo del browser. E ancora non sarà una soluzione sicura. Ma è una parte del modo, e una possibile soluzione, quindi grazie per la risposta. – Steeven