Skip to content

c2r0b/otabs-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

oTabsJS

Library to create ordered/linked tabbed content in HTML.

Synopsis

This simple Javascript library has been created as a simple solution when you need to display tabbed content in the same order of a list. It is meant to speed up the html markup process and avoid list-content reference errors.

Install

Using npm

npm install -S otabs-js

Using bower

bower install otabs-js

Manually

Simply include the js file (or minified js) in your html:

<script src="otabs.min.js"></script>

Activate

Place this JS line where you want oTabs to start working:

<script>
  new oTabs().init();
</script>

How to use

In your html create a list with this template:

<ul class="otabs">
  <li>..</li>
  ...
  <li>..</li>
</ul>

And then use this template where you want your tabbed content to appear:

<div class="otabs_content">
  <div>..</div>
  ...
  <div>..</div>
</div>

NOTE: you can use whatever type of HTML tag for the content (div is just an example)

List-container binding

If you're using this tool more than once in a page you'll need to bind each list with the appropriate tabbed content. You can simply do that using rel and id like this:

<ul class="otabs" rel="WHATEVER_YOU_WANT">
  ...
</ul>
...
<div class="otabs_content" id="WHATEVER_YOU_WANT">
  ...
</div>

Secondary features

Specific selection

You can select a specific tab using the data-select attribute. Examples:

<ul class="otabs" data-select="42">

Valid values (default is 0):

  • a number between 0 to N
  • last for the last tabbed item

Reverse order

You can reverse the display order of the content to be in the reversed order of the menu by using the reverse class like this:

<ul class="otabs reverse">

Option-content binding

If you don't want oTabsJS to automatically bind each option with the corresponding content in order, you can manually bind them adding the link class to the menu and using rel and id:

<ul class="otabs link">
  <li rel="content1">..</li>
  <li rel="content2">..</li>
  <li rel="content3">..</li>
</ul>
<div class="otabs_content">
  <div id="content2">..</div>
  <div id="content3">..</div>
  <div id="content1">..</div>
</div>

Manually refresh oTabs on DOM changes

<script>
  var otabs = new oTabs().init();
  // ... whatever ...
  otabs.update();
</script>

Styling

To target this in your CSS you could use the .otabs class for the menu and .otabs_content for the area where the content displays.

The selected tab has the .active class and you can simply target the other tabs with :not(.active).

Compile for production

If you want to build your own minified version of this library you can do that using npm and gulp.

Install the dependencies (you'll need npm): npm install

Execute gulp to generate the file otabs.min.js (you'll need gulp): gulp

Updating

From v < 1.3.x

Simply add this line where you want otabs to start working:

<script>new oTabs().init();</script>

License

MIT License