Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gente, estou tentando travar o scroll do site no mobile, mas não estou conseguindo.
Tenho o seguinte código jQuery:
$('body').on('scrollstart', function(){
if (menuPrincipal.css('right') == '0px' || menuAreas.css('right') == '0px' || menuAtividades.css('right') == '0px') {
$('html, body').stop().animate({ 'scrollTop': 0 }, 1);
}
});
menuPrincipal, menuAreas e menuAtividades são varia´veis que setei para identificar os 3 tipos de menus que o site possui.. e caso eles estejam com o right 0, o scroll trava no topo e não deixa rolar.
esse "scrollstart" peguei do site "w3school", mas não está funcionando.... já linkei o jquery-mobile.
>
Ao invés de fazer só com jQuery, faça com que, ao abrir os menus, seja adicionada uma classe no html. E assim, no CSS, dá pra fazer:
html.classeEscolhida,
html.classeEscolhida body {
overflow: hidden;
}
Mas é que esses menus do mobile irão surgir na tela da direita para a esquerda, e é um menu extenso, então ele próprio terá um scroll.. e para não ter o scroll do menu + scroll da página, quero anular o scroll da página..
Ah tah, entendi +/- o que vc quis dizer.. mas não vai dar pq não é um site responsivo... existe o site desktop e dentro dele pedaços que "são mostrados" quando mobile... por isso não posso mexer num "body" por exemplo.
Ué, por que não?
No jQuery, por exemplo:
if(window.innerWidth <= 768) {
itemQueAtivaMenu.bind('click',function(el){
el.preventDefault(); // se for um <a/>
$('html').toggleClass('menuAberto');
});
};
E, no menu, quando for responsivo, joga o scroll para o elemento da navegação, e não da página (conforme resposta anterior).Vou testar, :D
Ao invés de fazer só com jQuery, faça com que, ao abrir os menus, seja adicionada uma classe no html. E assim, no CSS, dá pra fazer:
html.classeEscolhida,
html.classeEscolhida body {