Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Vou postar umas 3 funçõezinhas rápidas pra ajudar a trabalhar visualmente com scroll e posicionamento de elementos na tela.
Como quase tudo em javascript, nossos amigos navegadores não ajudam. Ou seja, não é só pegar a documentação, tem toda aquela velha gambiarra pra funcionar em diversos browsers (crossbrowser).
Pra minha alegria, lembrei que eu já tinha brincado com isso na época do velho Mwords, daí fui lá atrás das funções e re-adaptei. Mostrar-lhes-ei agora:
Os códigos são tão simples que acho que não precisa de explicação detalhada. Só explico que os '?' que tem são para contornar as diferenças entre os navegadores (principalmente IE).
Pegando a posição atual do scroll e retornando em um objeto com as propriedades X e Y:
var w=window, d=document;
//pega a posição atual do scroll
mov.getScroll= function(){
return {
x: (w.pageXOffset ? w.pageXOffset : de.scrollLeft ? de.scrollLeft : d.body.scrollLeft) || 0,
y: (w.pageYOffset ? w.pageYOffset : de.scrollTop ? de.scrollTop : d.body.scrollTop) || 0
};
};Pegando a posição de determinado elemento na tela:
var w=window, d=document;
//pega a posição correta do elemento na tela
mov.objPos = function(obj) {
var curl =0, curt = 0;
if (obj.offsetParent) {
do {
curl += obj.offsetLeft;
curt += obj.offsetTop;
} while ((obj = obj.offsetParent));
return {x: curl, y: curt}; return {x: obj.offsetLeft, y:obj.offsetTop};
}
};Fazendo a barra de rolagem se movimentar gradativamente
//variaveis
var micox_mov_height= 50; //de quanto em quanto o scroll se moverá
var micox_mov_fps = 20; //velocidade que o scroll se moverámov.slide = function(ini,end){
if(!mov.sliding){
mov.sliding = true;
//setando posição inicial
var atual = mov.getScroll();
w.scrollTo(atual.x , ini);
mov.inter = setInterval(function(){
var novoY, atual = mov.getScroll();
if(atual.y < end){
w.scrollTo(atual.x , atual.y + micox_mov_heigth);
}else{
mov.sliding = false;
clearInterval(mov.inter);
}
},1000/micox_mov_fps);
}
}
Em caso de dúvidas é só me perguntar.
Fonte: Meu blog ElMicox
Carregando comentários...