MooTools - Acordeão

Accordion é o plugin mais popular que a MooTools oferece. Ajuda a ocultar e revelar os dados. Deixe-nos discutir mais sobre isso.

Criando novo acordeão

Os elementos básicos que um acordeão requer são pares de alternadores e seus conteúdos. Vamos criar pares de títulos e conteúdos do html.

<h3 class = "togglers">Toggle 1</h3>
<p class = "elements">Here is the content of toggle 1</p>
<h3 class = "togglers">Toggle 2</h3>
<p class = "elements">Here is the content of toggle 2</p>

Dê uma olhada na sintaxe a seguir para entender como construir um acordeão com base na estrutura HTML acima.

Sintaxe

var toggles = $$('.togglers');
var content = $$('.elements');
var AccordionObject = new Fx.Accordion(toggles, content);

Exemplo

Tomemos um exemplo que define a funcionalidade básica do acordeão. Dê uma olhada no código a seguir.

<!DOCTYPE html>
<html>

   <head>
      <style>
         .togglers {
            padding: 4px 8px;
            color: #fff;
            cursor: pointer;
            list-style: none;
            width: 300px;
            background-color: #222;
            border: 1px solid;
         }
      </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 toggles = $$('.togglers');
            var content = $$('.elements');
            var AccordionObject = new Fx.Accordion(toggles, content);
         });
      </script>
   </head>
   
   <body>
      <h3 class = "togglers">Toggle 1</h3>
      <p class = "elements">Here is the content of toggle 1</p>
      <h3 class = "togglers">Toggle 2</h3>
      <p class = "elements">Here is the content of toggle 2</p>
      <h3 class = "togglers">Toggle 3</h3>
      <p class = "elements">Here is the content of toggle 3</p>
   </body>
   
</html>

Você receberá a seguinte saída -

Resultado

Opções de acordeão

O acordeão oferece recursos incríveis. Esses recursos ajudam a ajustar as opções para fornecer saída personalizada.

exibição

Esta opção determina qual elemento é mostrado no carregamento da página. O padrão é definido como 0, portanto, o primeiro elemento é mostrado. Para definir outro elemento, basta inserir outro inteiro que corresponda ao seu índice. Ao contrário de “show”, a tela fará a transição do elemento aberto.

Syntax

var AccordionObject = new Accordion(toggles, content {
   display: 0 //default is 0
});

exposição

Muito parecido com “display,” show determina qual elemento será aberto quando a página for carregada, mas em vez de uma transição, “show” apenas fará com que o conteúdo seja exibido no carregamento sem qualquer transição.

Syntax

var AccordionObject = new Accordion(toggles, content {
   show: 0 //default is 0
});

altura

Quando definido como verdadeiro, um efeito de transição de altura ocorrerá ao alternar entre os elementos exibidos. Esta é a configuração de acordeão padrão que você vê acima.

Syntax

var AccordionObject = new Accordion(toggles, content {
   height: true //default is true
});

largura

Isso funciona da mesma forma que heightopção. No entanto, em vez de fazer a transição da altura para mostrar o conteúdo, isso ajuda na transição da largura. Se você usar “largura” com uma configuração padrão, como usamos acima, o espaço entre a alternância do título permanecerá o mesmo, com base na altura do conteúdo. O div de "conteúdo" fará a transição da esquerda para a direita para ser exibido nesse espaço.

Syntax

var AccordionObject = new Accordion(toggles, content {
   width: false //default is false
});

opacidade

Esta opção determina se deve ou não mostrar um efeito de transição de opacidade quando você oculta ou exibe algum conteúdo. Como estamos usando as opções padrão acima, você pode ver o efeito lá.

Syntax

var AccordionObject = new Accordion(toggles, content {
   opacity: true //default is true
});

fixedHeight

Para definir uma altura fixa, você precisa fixar um número inteiro (por exemplo, você pode colocar 100 para o conteúdo 100px de altura). Isso deve ser usado com algum tipo de propriedade de estouro de CSS se você estiver planejando ter uma altura fixa menor do que a altura natural do conteúdo.

Syntax

var AccordionObject = new Accordion(toggles, content {
   fixedHeight: false //default is false
});

Largura fixa

Assim como “fixedHeight” acima, isso definirá a largura se você fornecer um inteiro a essa opção.

Syntax

var AccordionObject = new Accordion(toggles, content {
   fixedWidth: false //default is false
});

sempre esconda

Esta opção permite adicionar um controle de alternância aos títulos. Com isso definido como verdadeiro, quando você clicar em um título de conteúdo aberto, o elemento de conteúdo será fechado automaticamente sem abrir mais nada. Você pode ver a execução no exemplo a seguir.

Syntax

var AccordionObject = new Accordion(toggles, content {
   alwaysHide: false //default is false
});

Eventos de acordeão

Esses eventos permitem que você crie sua funcionalidade para cada ação do acordeão.

onActive

Isso será executado quando você alternar para abrir um elemento. Ele vai passar o elemento de controle toggle e o elemento de conteúdo que está abrindo e também os parâmetros.

Syntax

var AccordionObject = new Accordion(toggles, content {
   onActive: function(toggler, element) {
      toggler.highlight('#76C83D'); //green
      element.highlight('#76C83D');
   }
});

onBackground

Isso é executado quando um elemento começa a se ocultar e passa por todos os outros elementos que estão fechando, mas não abrindo.

Syntax

var AccordionObject = new Accordion(toggles, content {
   onBackground: function(toggler, element) {
      toggler.highlight('#DC4F4D'); //red
      element.highlight('#DC4F4D');
   }
});

onComplete

Este é o seu evento onComplete padrão. Ele passa uma variável que contém o elemento de conteúdo.

Syntax

var AccordionObject = new Accordion(toggles, content {
   onComplete: function(one, two, three, four){
      one.highlight('#5D80C8'); //blue
      two.highlight('#5D80C8');
      three.highlight('#5D80C8');
      four.highlight('#5D80C8');
   }
});

Métodos de acordeão

Esses métodos ajudam a criar e manipular Seções de Acordeão.

addSection ()

Com este método, você pode adicionar uma seção (um par de elemento de alternância / conteúdo). Funciona como muitos dos outros métodos que vimos. Primeiro, refira-se ao objeto acordeão, use .addSection, então você pode chamar o id do título, o id do conteúdo e, finalmente, indicar em que posição você deseja que o novo conteúdo apareça (0 sendo o primeiro local).

Syntax

AccordionObject.addSection('togglersID', 'elementsID', 2);

Note- Quando você adiciona uma seção como esta, embora ela apareça no local do índice 2, o índice real será +1 do último índice. Portanto, se você tiver 5 itens em seu array (0-4) e adicionar um , seu índice será 5, independentemente de onde você o adiciona com .addSection ();

exibição()

Isso permite que você abra um determinado elemento. Você pode selecionar o elemento por seu índice (portanto, se você adicionou um par de elementos e deseja exibi-lo, terá um índice diferente do que utilizaria acima.

Syntax

AccordionObject.display(5); //would display the newly added element

Example

O exemplo a seguir explica o recurso Acordeão com alguns efeitos. Dê uma olhada no código a seguir.

<!DOCTYPE html>
<html>

   <head>
      <style>
         .togglers {
            color: #222;
            margin: 0;
            padding: 2px 5px;
            background: #EC7063;
            border-bottom: 1px solid #ddd;
            border-right: 1px solid #ddd;
            border-top: 1px solid #f5f5f5;
            border-left: 1px solid #f5f5f5;
            font-size: 15px;
            font-weight: normal;
            font-family: 'Andale Mono', sans-serif;
         }
         
         .ind {
            background: #2E86C1;
            border-bottom: 1px solid #ddd;
            border-right: 1px solid #ddd;
            border-top: 1px solid #f5f5f5;
            border-left: 1px solid #f5f5f5;
            font-size: 20px;
            color: aliceblue;
            font-weight: normal;
            font-family: 'Andale Mono', sans-serif;
            width: 200px;
         }
      </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 toggles = $$('.togglers');
            var content = $$('.elements');
            
            var AccordionObject = new Fx.Accordion(toggles, content, {
               show: 0,
               height : true,
               width : false,
               opacity: true,
               fixedHeight: false,
               fixedWidth: false,
               alwaysHide: true,
               
               onActive: function(toggler, element) {
                  toggler.highlight('#DC7633'); //green
                  element.highlight('#DC7633');
                  $('active').highlight('#DC7633');
               },
               
               onBackground: function(toggler, element) {
                  toggler.highlight('#AED6F1'); //red
                  element.highlight('#AED6F1');
                  $('background').highlight('#F4D03F');
               }
            });
            $('display_section').addEvent('click', function(){
               AccordionObject.display(4);
            });
         });
      </script>
   </head>
   
   <body>
      <div id = "active" class = "ind">onActive</div>
      <div id = "background" class = "ind">onBackground</div>
      
      <div id = "accordion_wrap">
         <p class = "togglers">Toggle 1: click here</p>
         <p class = "elements">Here is the content of toggle 1 Here is the content of
            toggle 1 Here is the content of toggle 1 Here is the content of toggle 1 Here
            is the content of toggle 1 Here is the content of toggle 1 Here is the content
            of toggle 1 Here is the content of toggle 1</p>
         <p class = "togglers">Toggle 2: click here</p>
         <p class = "elements">Here is the content of toggle 2</p>
         <p class = "togglers">Toggle 3: click here</p>
         <p class = "elements">Here is the content of toggle 3</p>
         <p class = "togglers">Toggle 4: click here</p>
         <p class = "elements">Here is the content of toggle 4</p>
      </div>
      
      <p>
         100
         <button id = "display_section" class = "btn btn-primary">
            display section
         </button>
      </p>
      
   </body>
</html>

Output

Clique em cada seção Alternar, então você encontrará os dados ocultos e os indicadores de evento para cada ação.