Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessol, tenho o seguinte javascript:
Delegate = {
versao: "v1.0"
}
Delegate.create = function(obj, func, args) {
f = function() {
var target = arguments.callee.target;
var func = arguments.callee.func;
var args = arguments.callee.args;
return func.apply(target, (args.length <1 ? arguments : args));
};
f.args = (args != undefined && args.length> 0 ? args : new Array());
f.target = obj;
f.func = func;
return f;
}
Rolagem = function() {
this.caixaRolagem = null;
this.direcao = null;
this.velocidade = 50;
this.deslocamento = 8;
this.tempo = null;
this.posicaoAtual = 0;
this.alturaObjs = null;
this.larguraObjs = null;
this.objRolagem = null;
this.larguraPadrao = '200px';
this.alturaPadrao = '200px';
this.obterCaixaRolagem = function() {
return this.caixaRolagem;
}
this.obterDirecao = function() {
return this.direcao;
}
this.obterVelocidade = function() {
return this.velocidade;
}
this.obterDeslocamento = function() {
return this.deslocamento;
}
this.definirCaixaRolagem = function(caixaRolagem) {
if(typeof caixaRolagem == 'string') {
caixaRolagem = document.getElementById(caixaRolagem);
}
if(caixaRolagem == null) {
alert('O objeto que foi fornecido não é válido!\n\nSugestão:\nEste metodo deve ser chamado após o objeto \'alvo\' ser carregado!');
return;
}
// Primeira atribuicao
this.caixaRolagem = caixaRolagem;
this.objRolagem = document.createElement('div');
this.objRolagem.innerHTML = this.obterCaixaRolagem().innerHTML;
this.obterCaixaRolagem().innerHTML = '';
this.obterCaixaRolagem().appendChild(this.objRolagem);
switch(this.obterCaixaRolagem().offsetWidth - document.body.offsetWidth) {
case 0:
case -41:
case -40:
this.obterCaixaRolagem().style.width = this.larguraPadrao;
this.obterCaixaRolagem().style.height = this.alturaPadrao;
break;
default:
//
break;
}
this.obterCaixaRolagem().style.overflow = 'hidden';
this.obterCaixaRolagem().style.position = 'relative';
//Propriedas de css
this.objRolagem.style.position = 'absolute';
this.objRolagem.style.top = '0px';
this.objRolagem.style.left = '0px';
// Segunda atribuicao, agora pega o novo objeto criado
this.caixaRolagem = this.objRolagem;
}
this.definirDirecao = function(direcao) {
this.direcao = direcao;
}
this.definirVelocidade = function(velocidade) {
this.velocidade = velocidade;
}
this.definirDeslocamento = function(deslocamento) {
this.deslocamento = deslocamento;
}
this.rolar = function() {
this.tempo = setInterval(
Delegate.create(this,
function() {
switch(this.obterDirecao()) {
case 'cima':
this.posicaoAtual = this.obterCaixaRolagem().style.top.replace('px', '');
this.posicaoAtual = parseInt(this.posicaoAtual);
if((this.obterCaixaRolagem().scrollHeight - this.obterCaixaRolagem().parentNode.offsetHeight) + this.posicaoAtual >= 0) {
this.obterCaixaRolagem().style.top = this.posicaoAtual - this.obterDeslocamento() + 'px';
}
break;
case 'baixo':
this.alturaObjs = this.obterCaixaRolagem().scrollHeight + this.obterCaixaRolagem().parentNode.offsetHeight;
if(this.posicaoAtual != 0) {
this.posicaoAtual = this.obterCaixaRolagem().style.top.replace('px', '');
this.posicaoAtual = parseInt(this.posicaoAtual);
}
if((this.alturaObjs + this.posicaoAtual) < this.alturaObjs) {
this.obterCaixaRolagem().style.top = this.posicaoAtual + this.obterDeslocamento() + 'px';
}
break;
case 'esqu':
this.larguraObjs = this.obterCaixaRolagem().scrollWidth + this.obterCaixaRolagem().parentNode.offsetWidth;
if(this.posicaoAtual != 0) {
this.posicaoAtual = this.obterCaixaRolagem().style.left.replace('px', '');
this.posicaoAtual = parseInt(this.posicaoAtual);
}
if((this.larguraObjs + this.posicaoAtual) < this.larguraObjs) {
this.obterCaixaRolagem().style.left = this.posicaoAtual + this.obterDeslocamento() + 'px';
}
break;
case 'dire':
this.posicaoAtual = this.obterCaixaRolagem().style.left.replace('px', '');
this.posicaoAtual = parseInt(this.posicaoAtual);
if((this.obterCaixaRolagem().scrollWidth - this.obterCaixaRolagem().parentNode.offsetWidth) + this.posicaoAtual >= 0){
this.obterCaixaRolagem().style.left = this.posicaoAtual - this.obterDeslocamento() + 'px';
}
break;
}
}, Array('')
), this.obterVelocidade()
);
}
this.parar = function() {
clearInterval(this.tempo);
}
};
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/js_scroll.js"></script>
<script type="text/javascript" src="js/js_del.js"></script>
<title>Teste scroll</title>
<style type="text/css"></style>
</head>
<body>
<div id="cnt"><a href="javascript:void(0)" onmousedown="rol.definirDirecao('dire');rol.rolar()" onmouseout="rol.parar()" onmouseup="rol.parar()">«</a><div id="letters"><div id="header">a b c d e f g h i j k l m n o p q r s t u v y x w z</div></div><a href="javascript:void(0)" onmousedown="rol.definirDirecao('esqu');rol.rolar()" onmouseout="rol.parar()" onmouseup="rol.parar()">»</a></div>
<script type="text/javascript">
rol = new Rolagem();
rol.definirCaixaRolagem(document.getElementById('letters'));
</script>
</body>
</html>Grato quem puder me ajudar.
Próspero Ano Novo!
Carregando comentários...