Salut à tous,
Je suis débutant en javascript, je cherche depuis un moment mais je ne trouve pas.
Je me suis donc décidé écrire mon premier post, soyez indulgent svp
j'ai un script qui permet de faire suivre ma div suivant le scroll
J'ai mis un décalage de 47px afin qu'un menu qui suit également le scroll ne chevauche pas ma div.
Jusque là tout fonctionne
Alors voila :
Quand je réduit ma fenêtre en dessous de 991px de large le menu ne suit plus le scroll donc le décalage n'est plus utile (l'idéale serais d'avoir un décalage de 5px).
Et quand je continue a réduire en dessous de 776px de large ma div ne doit plus suivre le scroll, je veux annuler le script.
j'ai essayé de faire quelque chose avec Matchmedia() et resize
Mon but étant de pouvoir lancer ou non mon script suivant la résolution et que celle-ci soit détecté en live
Malheureusement je ne sais pas comment m'y prendre, j'ai effectué pas mal de test mais ça bug toujours un peu.
Une idée ?
Adrien
Je suis débutant en javascript, je cherche depuis un moment mais je ne trouve pas.
Je me suis donc décidé écrire mon premier post, soyez indulgent svp
j'ai un script qui permet de faire suivre ma div suivant le scroll
<div id="primary_block">
<div id=""pb-right-column" class="left_block"></div>
</div>
<div id="new-products_block_zen_right"></div>
var positionElementInPage = $('.left_block').offset().top - 47;
var hauteurleft_block = document.getElementById('pb-right-column').offsetHeight;
var positionDivInferieur = $('#new-products_block_zen_right').offset().top;
$(window).scroll(
function() {
var scrollTop = $(window).scrollTop();
if (scrollTop >= positionElementInPage && scrollTop <= (positionDivInferieur - hauteurleft_block)) {
// fixed
$('.left_block').addClass('fixed').removeClass('absolute');
} else if (scrollTop >= positionElementInPage && scrollTop >= (positionDivInferieur - hauteurleft_block)) {
// absolute
$('.left_block').removeClass('fixed').addClass('absolute');
} else {
// relative
$('.left_block').removeClass('fixed').removeClass('absolute');
}
}
);
.left_block.fixed {
position: fixed !important;
top: 47px !important;
}
.left_block.absolute {
position: absolute !important;
bottom: 0px !important;
}
J'ai mis un décalage de 47px afin qu'un menu qui suit également le scroll ne chevauche pas ma div.
Jusque là tout fonctionne
Alors voila :
Quand je réduit ma fenêtre en dessous de 991px de large le menu ne suit plus le scroll donc le décalage n'est plus utile (l'idéale serais d'avoir un décalage de 5px).
Et quand je continue a réduire en dessous de 776px de large ma div ne doit plus suivre le scroll, je veux annuler le script.
j'ai essayé de faire quelque chose avec Matchmedia() et resize
// Fonction exécutée au redimensionnement
function redimensionnement() {
var result = document.getElementById('result');
if("matchMedia" in window)
if(window.matchMedia("(min-width:992px)").matches) {
} else if(window.matchMedia("(max-width:767px)").matches) {
} else {
}
}
}
// On lie l'événement resize à la fonction
window.addEventListener('resize', redimensionnement, false);
// Exécution de cette même fonction au démarrage pour avoir un retour initial
redimensionnement();
Mon but étant de pouvoir lancer ou non mon script suivant la résolution et que celle-ci soit détecté en live
Malheureusement je ne sais pas comment m'y prendre, j'ai effectué pas mal de test mais ça bug toujours un peu.
Une idée ?
Adrien