MooTools - 手风琴


Accordion 是 MooTools 提供的最受欢迎的插件。它有助于隐藏和揭示数据。让我们进一步讨论一下。

创建新的手风琴

手风琴所需的基本元素是成对的开关及其内容。让我们创建 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>

查看以下语法,了解如何基于上述 HTML 结构构建手风琴。

句法

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

例子

让我们举一个定义 Accordion 基本功能的例子。看看下面的代码。

<!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>

您将收到以下输出 -

输出

手风琴选项

Accordion 提供了巨大的功能。这些功能有助于调整选项以提供定制输出。

展示

此选项确定页面加载时显示哪个元素。默认设置为 0,因此显示第一个元素。要设置另一个元素,只需输入与其索引对应的另一个整数即可。与“show”不同,display 会将元素转变为打开状态。

句法

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

展示

与“显示”非常相似,“显示”确定页面加载时将打开哪个元素,但“显示”不是过渡,而是仅使内容在加载时显示,而无需任何过渡。

句法

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

高度

当设置为 true 时,在显示元素之间切换时会发生高度过渡效果。这是您在上面看到的标准手风琴设置。

句法

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

宽度

这与高度选项的作用相同。但是,这不是通过转换高度来显示内容,而是有助于转换宽度。如果您在标准设置中使用“宽度”,就像我们上面使用的那样,那么标题切换之间的间距将根据内容的高度保持不变。然后,“内容”div 将从左向右过渡以显示在该空间中。

句法

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

不透明度

此选项决定当您隐藏或显示某些内容时是否显示不透明过渡效果。由于我们使用上面的默认选项,您可以在那里看到效果。

句法

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

固定高度

要设置固定高度,您需要固定一个整数(例如,您可以为 100px 高的内容输入 100)。如果您计划使用小于内容自然高度的固定高度,则应将其与某种 CSS 溢出属性一起使用。

句法

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

固定宽度

就像上面的“fixedHeight”一样,如果你给这个选项一个整数,这将设置宽度。

句法

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

总是隐藏

此选项允许您向标题添加切换控件。将此设置为 true 时,当您单击打开的内容标题时,内容元素将自动关闭,而不打开其他任何内容。您可以在以下示例中看到执行情况。

句法

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

手风琴活动

这些事件允许您为 Accordion 的每个操作创建功能。

激活状态

当您切换打开一个元素时,这将执行。它将传递切换控制元素和正在打开的内容元素以及参数。

句法

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

背景

当一个元素开始隐藏并传递所有其他正在关闭但未打开的元素时,就会执行此操作。

句法

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

完成时

这是您的标准 onComplete 事件。它传递一个包含内容元素的变量。

句法

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');
   }
});

手风琴方法

这些方法可帮助您创建和操作手风琴部分。

添加节()

使用此方法,您可以添加一个部分(切换/内容元素对)。它的工作原理与我们见过的许多其他方法类似。首先引用accordion对象,使用.addSection,然后你可以调用标题的id,内容的id,最后声明你希望新内容出现在什么位置(0是第一个位置)。

句法

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

注意- 当您添加这样的部分时,虽然它会显示在索引 2 的位置,但实际索引将是最后一个索引 +1。因此,如果您的数组中有 5 个项目 (0-4),并且添加了第 6 个项目则无论您使用 .addSection() 添加它的位置如何,它的索引都将为 5;

展示()

这使您可以打开给定的元素。您可以通过索引选择元素(因此,如果您添加了一个元素对并且想要显示它,则此处的索引将与上面使用的索引不同。

句法

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

例子

以下示例解释了带有一些效果的手风琴功能。看看下面的代码。

<!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>

输出

单击每个切换部分,然后您将找到每个操作的隐藏数据和事件指示器。