MooTools - Fx.Slide
Fx.Slides é uma opção que permite exibir o conteúdo deslizando para a visualização. É muito simples, mas melhora a aparência de sua IU.
Vamos discutir sobre como criar e inicializar um Fx.Slide, suas opções e métodos.
Primeiro, inicializaremos a classe Fx.Slide com uma instância definida pelo usuário. Para isso, temos que criar e selecionar um elemento HTML. Depois disso, vamos aplicar CSS a esses elementos. Finalmente, iniciaremos uma nova instância de Fx.Slide com nossa variável de elemento.
Opções Fx.Slide
Existem apenas duas opções Fx.Slide - modo e wrapper.
Modo
O modo oferece duas opções, 'vertical' ou 'horizontal'. Revelações verticais de cima para baixo e revelações horizontais da esquerda para a direita. Não há opções para ir de baixo para cima ou da direita para a esquerda, embora eu entenda que hackear a própria classe para fazer isso é relativamente simples. Na minha opinião, é uma opção que eu gostaria de ver padrão, e se alguém hackeado a classe para permitir essa opção, por favor, escreva para nós.
Embrulho
Por padrão, Fx.Slide lança um invólucro ao redor do elemento do slide, dando a ele 'overflow': 'hidden'. Wrapper permite definir outro elemento como wrapper. Como eu disse acima, não tenho certeza de onde isso seria útil e gostaria de ouvir qualquer opinião (obrigado a horseweapon em mooforum.net por me ajudar a esclarecer isso).
Métodos Fx.Slide
Fx.Slide também apresenta muitos métodos para mostrar e ocultar seu elemento.
deslize()
Como o nome indica, este método irá disparar o evento de início e revelar seu elemento.
deslizar para fora()
Desliza seu elemento de volta ao estado oculto.
alternancia()
Isso deslizará o elemento para dentro ou para fora, dependendo de seu estado atual. Método muito útil para adicionar eventos de clique.
ocultar()
Isso ocultará o elemento sem um efeito de slide.
exposição()
Isso mostrará o elemento sem um efeito de slide.
Atalhos Fx.Slide
A classe Fx.Slide também fornece alguns atalhos úteis para adicionar efeitos a um elemento.
definir ('slide')
Em vez de iniciar uma nova classe, você pode criar uma nova instância se 'definir' o slide em um elemento.
Syntax
slideElement.set('slide');
opções de configuração
Você pode até definir opções com o atalho -
Syntax
slideElement.set('slide', {duration: 1250});
deslizar()
Depois que o slide for .set (), você pode iniciá-lo com o método .slide ().
Syntax
slideElement.slide('in');
.slide vai aceitar -
- ‘in’
- ‘out’
- ‘toggle’
- ’show’
- ‘hide’
… Cada um correspondendo aos métodos acima.
Example
Vejamos um exemplo que explica sobre Fx.Slide. Dê uma olhada no código a seguir.
<!DOCTYPE html>
<html>
<head>
<style>
.ind {
width: 200px;
padding: 10px;
background-color: #87AEE1;
font-weight: bold;
border-bottom: 1px solid white;
}
.slide {
margin: 20px 0;
padding: 10px;
width: 200px;
background-color: #F9E79F;
}
#slide_wrap {
padding: 30px;
background-color: #D47000;
}
</style>
<script type = "text/javascript" src = "MooTools-Core-1.6.0.js"></script>
<script type = "text/javascript" src = "MooTools-More-1.6.0.js"></script>
<script type = "text/javascript">
window.addEvent('domready', function() {
var slideElement = $('slideA');
var slideVar = new Fx.Slide(slideElement, {
//Fx.Slide Options
mode: 'horizontal', //default is 'vertical'
//wrapper: this.element, //default is this.element
//Fx Options
link: 'cancel',
transition: 'elastic:out',
duration: 'long',
//Fx Events
onStart: function(){
$('start').highlight("#EBCC22");
},
onCancel: function(){
$('cancel').highlight("#EBCC22");
},
onComplete: function(){
$('complete').highlight("#EBCC22");
}
}).hide().show().hide(); //note, .hide and .show do not fire events
$('openA').addEvent('click', function(){
slideVar.slideIn();
});
$('closeA').addEvent('click', function(){
slideVar.slideOut();
});
//EXAMPLE B
var slideElementB = $('slideB');
var slideVarB = new Fx.Slide(slideElementB, {
//Fx.Slide Options
mode: 'vertical', //default is 'vertical'
link: 'chain',
//Fx Events
onStart: function(){
$('start').highlight("#EBCC22");
},
onCancel: function(){
$('cancel').highlight("#EBCC22");
},
onComplete: function(){
$('complete').highlight("#EBCC22");
}
});
$('openB').addEvent('click', function(){
slideVarB.slideIn();
});
$('closeB').addEvent('click', function(){
slideVarB.slideOut();
});
});
</script>
</head>
<body>
<div id = "start" class = "ind">Start</div>
<div id = "cancel" class = "ind">Cancel</div>
<div id = "complete" class = "ind">Complete</div>
<button id = "openA">open A</button>
<button id = "closeA">close A</button>
<div id = "slideA" class = "slide">Here is some content - A. Notice the delay
before onComplete fires. This is due to the transition effect, the onComplete
will not fire until the slide element stops "elasticing." Also, notice that
if you click back and forth, it will "cancel" the previous call and give the
new one priority.</div>
<button id = "openB">open B</button>
<button id = "closeB">close B</button>
<div id = "slideB" class = "slide">Here is some content - B. Notice how
if you click me multiple times quickly I "chain" the events. This slide is
set up with the option "link: 'chain'"</div>
</body>
</html>
Output
Clique nos botões - openA, closeA, openB e closeB. Observe as alterações, efeitos e notificação de eventos nos indicadores.