Salut,
J'ai un menu en position fixed avec des ancres en navigation et un effet de scroll lors du clic de la souris. Sur Ipad à cause du menu fixe la navigation ne réagit plus au bout du second "click".
J'utilisais le plugin OnePageNav
J'ai contourné le problème en utilisant cette solution :
Ensuite pour des raisons de scroll plus doux sur tablettes et mobiles j'ai changé de plugin concernant le scroll auto et suis passé à celui-ci Smooth Scroll
Et sa solution pour IOS :
Et pour finir j'ai opté pour une solution vraiment légère mais je ne parviens pas à trouver la solution pour fixer le bug sur IOS, ça doit être un problème de variable dans mon code javascript que je ne maîtrise pas.
Voilà pour le nouveau scroll :
Comment faire pour fixer le bug grâce aux solutions précédentes ?
Quoi mettre à la place de .onePageNav ou encore .smoothScroll ?
Merci pour votre aide ![/i]
Modifié par yank (27 Jul 2013 - 11:03)
J'ai un menu en position fixed avec des ancres en navigation et un effet de scroll lors du clic de la souris. Sur Ipad à cause du menu fixe la navigation ne réagit plus au bout du second "click".
J'utilisais le plugin OnePageNav
J'ai contourné le problème en utilisant cette solution :
<script type="text/javascript">
$('nav[role="navigation"]').onePageNav({
begin: function() {
//Hack so you can click other menu items after the initial click
$('body').append('<div id="device-dummy" style="height: 1px;"></div>');
},
end: function() {
$('#device-dummy').remove();
}
});
</script>
Ensuite pour des raisons de scroll plus doux sur tablettes et mobiles j'ai changé de plugin concernant le scroll auto et suis passé à celui-ci Smooth Scroll
Et sa solution pour IOS :
<script>
$(function(){
var $stupid = $('<div></div>')
.height(1)
.hide()
.appendTo('body');
var mobileHack = function() {
$stupid.show();
setTimeout(function() {
$stupid.hide();
}, 10);
};
// $('nav a').smoothScroll({
// afterScroll: mobileHack
// });
});
</script>
Et pour finir j'ai opté pour une solution vraiment légère mais je ne parviens pas à trouver la solution pour fixer le bug sur IOS, ça doit être un problème de variable dans mon code javascript que je ne maîtrise pas.
Voilà pour le nouveau scroll :
<script>
$(function(){
function getTargetTop(elem){
var id=elem.attr("href");
var offset=60;
return $(id).offset().top-offset;}
$('#navigation li a[href^="#"]').click(function(event){
var target=getTargetTop($(this));
$('html, body').animate({scrollTop:target},500);event.preventDefault();});
var sections=$('#navigation li a[href^="#"]');
function checkSectionSelected(scrolledTo){
var threshold=100;var i;for(i=0;i<sections.length;i++){var section=$(sections[i]);var target=getTargetTop(section);
if(scrolledTo>target-threshold&&scrolledTo<target+threshold){sections.removeClass("active");section.addClass("active");}};}
checkSectionSelected($(window).scrollTop());$(window).scroll(function(e){checkSectionSelected($(window).scrollTop())});});
</script>
Comment faire pour fixer le bug grâce aux solutions précédentes ?
Quoi mettre à la place de .onePageNav ou encore .smoothScroll ?
<script type="text/javascript">
$('nav[role="navigation"]').onePageNav({
begin: function() {
//Hack so you can click other menu items after the initial click
$('body').append('<div id="device-dummy" style="height: 1px;"></div>');
},
end: function() {
$('#device-dummy').remove();
}
});
</script>
Merci pour votre aide ![/i]
Modifié par yank (27 Jul 2013 - 11:03)