Exemple d'effet flottant masquable avec jQuery
Mashable, mieux connu sous le nom de site Web de ressources de médias sociaux, a créé un effet flottant impressionnant lorsque l'utilisateur fait défiler la page. Voici une idée simple pour cloner cet effet flottant avec jQuery.
Idée…
-
Créez une boîte flottante.
-
Initialisez l'emplacement de la boîte flottante, placez-le à côté du contenu du corps.
-
Pendant que l'utilisateur fait défiler la page, continuez de vérifier la position de la barre de défilement.
-
Si la position y de la barre de défilement est supérieure à la position y de la boîte flottante, modifiez dynamiquement la position y de la boîte flottante.
-
Alors que la position y de la barre de défilement est inférieure à la position y de la boîte flottante, restaurez la position d'origine.
-
Utilisez jQuery, bien sûr.
1. Disposition HTML
Une mise en page HTML simple, un en-tête, un contenu et un pied de page, placent une «boîte flottante» div au-dessus du contenu.
header
content
Mashable floating effect example
2. Caisse flottante 90 × 200
C'est la boîte qui flottera en douceur pendant que les gens la feront défiler. Vous devrez peut-être ajuster un peu les“margin-left:-100px; ”en fonction de vos besoins.
#floating-box{ width:90px; height:200px; border:1px solid red; background-color:#BBBBBB; float:left; margin-left:-100px; margin-right:10px; position:absolute; z-index:1; }
3. Pas de conflits, s'il vous plaît
Assurez-vous que jQuery n'a aucun conflit avec une autre bibliothèque. Je recommande vivement de le vérifier.
//avoid conflict with other script $j=jQuery.noConflict(); $j(document).ready(function($) {
4. Position, position, position
Liez l'événement jQuery scroll () pour continuer à vérifier la position de la barre de défilement du navigateur.
$(window).scroll(function () { var scrollY = $(window).scrollTop(); var isfixed = $floatingbox.css('position') == 'fixed'; if($floatingbox.length > 0){ if ( scrollY > bodyY && !isfixed ) { $floatingbox.stop().css({ position: 'fixed', left: '50%', top: 20, marginLeft: -500 }); } else if ( scrollY < bodyY && isfixed ) { $floatingbox.css({ position: 'relative', left: 0, top: 0, marginLeft: originalX }); } } });
Si la position y de la barre de défilement est supérieure à la position y de la boîte flottante, changez la position y de la boîte flottante en "marginLeft: -500". Vous devrez peut-être personnaliser cette valeur en fonction de vos besoins.
if ( scrollY > bodyY && !isfixed ) { $floatingbox.stop().css({ position: 'fixed', left: '50%', top: 20, marginLeft: -500 }); }
Si la position y de la barre de défilement est inférieure à la position y de la boîte flottante, rétablissez la position d'origine.
if ( scrollY < bodyY && isfixed ) { $floatingbox.css({ position: 'relative', left: 0, top: 0, marginLeft: originalX }); }
5. Done
Essayez de lire l'exemple ci-dessous pour vous faire une idée des œuvres.
P.S This floating effect feature is implemented in my DiggDigg WordPress plugin.