Giter Club home page Giter Club logo

zebra_accordion's Introduction

zebrajs

Zebra Accordion ย Tweet

A tiny (3 KB minified, 1.3KB gzipped), easily configurable, fully customizable, cross-browser jQuery accordion plugin

npm Total Monthly License

Zebra Accordion is a tiny (3KB minified, ~1.3KB gzipped) jQuery accordion plugin. It transforms a basic definition list, without requiring any specific markup, into a small-footprint, easily configurable, fully customizable, cross-browser accordion widget, useful for better organizing larger groups of content.

Features

  • no additional markup required other than a basic definition list
  • no default style allowing you to fully customize it to suit your needs
  • works with responsive layouts
  • allows for a single expanded tab at a time, or for any number of tabs to be expanded/collapsed
  • allows for tabs to expand on mouse over, not just on click
  • if an expanded tab's content is not in the viewport it automatically scrolls the browser window so that the content is visible
  • callback functions can be used for further customizations
  • works in pretty much any browser - Firefox, Chrome, Safari, Edge, Opera and Internet Explorer 6+

๐ŸŽ‚ Support the development of this project

Your support means a lot and it keeps me motivated to keep working on open source projects.
If you like this project please โญ it by clicking on the star button at the top of the page.
If you are feeling generous, you can buy me a coffee by donating through PayPal, or you can become a sponsor.
Either way - Thank you! ๐ŸŽ‰

Star it on GitHub Donate

Demo

See the demos

Requirements

Zebra Accordion has no dependencies other than jQuery 1.7.0+

Installation

Zebra Accordion is available as a npm package. To install it use:

# the "--save" argument adds the plugin as a dependency in packages.json
npm install zebra_accordion --save

How to use

First, load jQuery from a CDN and provide a fallback to a local source like:

<script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
<script>window.jQuery || document.write('<script src="path/to/jquery-3.5.0.js"><\/script>')</script>

Load the Zebra Accordion jQuery plugin:

<script src="path/to/zebra_accordion.min.js"></script>

Alternatively, you can load Zebra Accordion from JSDelivr CDN like this:

<!-- for the most recent version, not recommended in production -->
<script
  src="https://cdn.jsdelivr.net/npm/zebra_accordion@latest/dist/zebra_accordion.min.js"></script>

<!-- for a specific version -->
<script
  src="https://cdn.jsdelivr.net/npm/[email protected]/dist/zebra_accordion.min.js"></script>

<!-- replacing "min" with "src" will serve you the non-compressed version -->

Load the style sheet file from a local source

<link rel="stylesheet" href="path/to/zebra_accordion.min.css">

...or from JSDelivr CDN

<!-- for the most recent version -->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/zebra_accordion@latest/dist/zebra_accordion.min.css">

<!-- for a specific version -->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/[email protected]/dist/zebra_accordion.min.css">

<!-- replacing "min" with "src" will serve you the non-compressed version -->

You need a basic definition list for your HTML markup

Don't forget to add the Zebra Accordion class to the list container! If you'll have a look you will see that all it does is to set display:hidden the all the tabs and add cursor:pointer to titles, so it will not add overweight to your CSS and that you will have to style the accordion to suit your needs.

<dl class="Zebra_Accordion">
    <dt>Lorem ipsum dolor sit amet consectetuer</dt>
    <dd>
        Lorem ipsum dolor sit amet consectetuer facilisis lacinia sapien ac et.
        Quis hendrerit neque congue pretium iaculis justo laoreet orci elit condimentum.
        Eros natoque Curabitur accumsan eget quis porttitor Sed Vestibulum amet sed.
    </dd>
    <dt>Lorem ipsum dolor sit amet consectetuer</dt>
    <dd>
        Lorem ipsum dolor sit amet consectetuer facilisis lacinia sapien ac et.
        Quis hendrerit neque congue pretium iaculis justo laoreet orci elit condimentum.
        Eros natoque Curabitur accumsan eget quis porttitor Sed Vestibulum amet sed.
    </dd>
    <dt>Lorem ipsum dolor sit amet consectetuer</dt>
    <dd>
        Lorem ipsum dolor sit amet consectetuer facilisis lacinia sapien ac et.
        Quis hendrerit neque congue pretium iaculis justo laoreet orci elit condimentum.
        Eros natoque Curabitur accumsan eget quis porttitor Sed Vestibulum amet sed.
    </dd>
    <dt>Lorem ipsum dolor sit amet consectetuer</dt>
    <dd>
        Lorem ipsum dolor sit amet consectetuer facilisis lacinia sapien ac et.
        Quis hendrerit neque congue pretium iaculis justo laoreet orci elit condimentum.
        Eros natoque Curabitur accumsan eget quis porttitor Sed Vestibulum amet sed.
    </dd>
</dl>

Now, within the DOM-ready event do

$(document).ready(function() {

    new $.Zebra_Accordion($('.Zebra_Accordion'));

});

Configuration options

Properties

Property Type Default Description
animate_opacity boolean true Should a tab's opacity be also animated when expanding/collapsing?
collapsible mixed false - when set to true it indicates that all tabs can be collapsed
- if set to false, an expanded tab can be collapsed only by expanding another tab
- if set to 0, the behavior is the same when set to false with the difference that an open tab can also be closed.
expanded_class string Zebra_Accordion_Expanded The name of the class to append to an expanded tab's associated title element.
Use it to customize the aspect of expanded tabs.
hide_speed integer 400 The speed (in milliseconds) to use when collapsing a tab.
scroll_speed integer 600 If an tab's content is not entirely visible once it is expanded, the browser window will be scrolled so that the entire content is visible (if it is possible).
This value represents the speed (in milliseconds) used for scrolling browser window to the right position.
show_speed integer 400 The speed (in milliseconds) to use when expanding a tab.
show mixed 0 The index (0 based) of the tab to be expanded by default.
The value of this property can also be boolean FALSE, indicating that all tabs should be collapsed by default.
If the value of the collapsible property is TRUE, the value of this property can also be boolean TRUE, indicating that all tabs should be expanded by default. In this case, you can also provide an array of indexes to be expanded by default.
toggle_on_mouseover boolean false Set this to TRUE if tabs should be expanded when hovering the mouse over their associated titles.

If the collapsible property is true, this property will always be considered as false!

Events

Event Description
onBeforeClose Event fired before a tab is collapsed
The callback function takes 3 arguments:
  • the tab's position in the accordion (0 based)
  • the associated title element, as a jQuery object
  • the tab, as a jQuery object
onBeforeOpen Event fired before a tab is expanded
The callback function takes 3 arguments:
  • the tab's position in the accordion (0 based)
  • the associated title element, as a jQuery object
  • the tab, as a jQuery object
onClose Event fired after a tab is collapsed
The callback function takes 3 arguments:
  • the tab's position in the accordion (0 based)
  • the associated title element, as a jQuery object
  • the tab, as a jQuery object
onOpen Event fired after a tab is collapsed
The callback function takes 3 arguments:
  • the tab's position in the accordion (0 based)
  • the associated title element, as a jQuery object
  • the tab, as a jQuery object

Methods

show(index, [noFx = FALSE], [noScroll = FALSE])

Expands a tab.

Arguments

index - the 0-based index of the tab to expand

noFx - (optional) - if set to TRUE, the tab will be instantly expanded without animation.

Default is false.

noScroll - (optional) - if set to TRUE, the browser window will not be scrolled to the newly expanded tab.

Default is false.

var myAccordion = new $.Zebra_Accordion($('#accordion'));

// expand the third tab
myAccordion.show(2);

hide(index, [noFx = FALSE])

Expands a tab.

Arguments

index - the 0-based index of the tab to collapse

noFx - (optional) - if set to TRUE, the tab will be instantly collapsed without animation.

Default is false.

var myAccordion = new $.Zebra_Accordion($('#accordion'));

// collapse the first tab
myAccordion.hide(0);

Sponsors

Cross browser/device testing is done with

BrowserStack

zebra_accordion's People

Contributors

dependabot[bot] avatar stefangabos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

zebra_accordion's Issues

How can I use events?

If I want to add a div with special font awesome character (like fa-chevron-down) after box title when collapsed (Closed, collapsed state) and remove that character and replace it with new character (like fa-chevron-up) as box title when expended(opened state) add some functionality like jQuery Accordion.
I try below code but it seems that something is wrong:

$('.Zebra_Accordion').on('onOpen', function(e) {
      $(this).append( "<span class='fa fa-chevron-down'></span>" );
  });

$('.Zebra_Accordion').off('onClose', function(e) {
      $(this).append( "<span class='fa fa-chevron-up'></span>" );
  });

I'm beginner and not an expert, So please try to give a detailed answer or any reference as I don't know anything about your plugins events and some other expressions.
Thanks

includes scss in npm package

Hey Stefan,
i'd love to use zebra_accordion with my current sass setup but it's not included in the dist folder right now. What do you think?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.