# Tab

Create a tabbed navigation with different styles.

## Usage

The Tab component consists of clickable tabs, that are aligned side by side.

Class | Description
--- | ---
`.uk-tab` | Add this class to a `<ul>` element to define the Tab component. Use `<a>` elements as tab items within the list.
`.uk-active` | Add this class to a list item to apply an active state.
`.uk-disabled` | Add this class to a list item to apply a disabled state.

The `data-uk-tab` attribute is required for two purposes. Firstly, it enables the responsive behaviour. If the parent container is too small to accomodate all tabs, they will be combined into a dropdown, toggled by a single tab, which represents the active tab item. This also requires the Dropdown component in order to work.

And secondly, its functionality is coupled to the Switcher component, which is necessary to dynamically transition through different contents using tabbed navigation.

### Example

- Active
- Item
- Item
- Disabled

### Markup

    <ul class="uk-tab" data-uk-tab>
        <li class="uk-active"><a href="">...</a></li>
        <li><a href="">...</a></li>
        <li><a href="">...</a></li>
        <li class="uk-disabled"><a href="">...</a></li>
    </ul>

## Horizontal modifiers

Add one of the following classes to alter your tabs' styling. These modifiers can also be combined.

### Align tabs

Class | Description
--- | ---
`.uk-tab-flip` | Add this class to align tabs right and in reversed order.
`.uk-tab-bottom` | Add this class to the `<ul>` to place tabs at the bottom. This can also be combined with the other modifiers.

### Example

- Active
- Item
- Item

- Active
- Item
- Item

### Markup

    <ul class="uk-tab uk-tab-flip" data-uk-tab>...</ul>
    <ul class="uk-tab uk-tab-bottom" data-uk-tab>...</ul>

### Justify tabs

Add the `.uk-tab-grid` class and one of the `.uk-width-*` classes from the Grid component to the list items to arrange tabs in a grid that takes up full width of its parent element.

#### Example

- Active
- Item
- Item

#### Markup

    <ul class="uk-tab uk-tab-grid uk-tab-bottom" data-uk-tab>
        <li class="uk-width-1-3"><a href="">...</a></li>
    </ul>

### Center tabs

Add the `.uk-tab-center` class to a `<div>` element around the tabbed navigation to center tabs. If you are using the bottom modifier on the tabs, also add the `.uk-tab-center-bottom` class to the surrounding `<div>` element to adjust the border.

#### Example

- Active
- Item
- Item

#### Markup

    <div class="uk-tab-center">
        <ul class="uk-tab" data-uk-tab>...</ul>
    </div>

## Vertical modifiers

Add the `.uk-tab-left` or `.uk-tab-right` class to align tabs vertically to the left or right side.

### Example

- Active
- Item
- Item

- Active
- Item
- Item

### Markup

    <ul class="uk-tab uk-tab-left uk-width-medium-1-2">
        <li>...</li>
    </ul>

    <ul class="uk-tab uk-tab-right uk-width-medium-1-2">
        <li>...</li>
    </ul>

### Responsive behavior

In narrower viewports, like phones, vertical tabs align themselves horizontally. Adding the `data-uk-tab` attribute will apply the same responsive behavior as horizontal tabs.

## Tabs with dropdowns

This is an example of how to use tabs with the Dropdown component.

#### Example

- Active
- Item
- Item
- More

#### Markup

    <ul class="uk-tab">
        <li><a href="">...</a></li>

        <!-- This is the container enabling the JavaScript -->
        <li data-uk-dropdown="{mode:'click'}">

            <!-- This is the menu item toggling the dropdown -->
            <a href="">...</a>

            <!-- This is the dropdown -->
            <div class="uk-dropdown uk-dropdown-small">
                <ul class="uk-nav uk-nav-dropdown">
                    <li><a href="">...</a></li>
                </ul>
            </div>
        </li>
    </ul>

### Events

You can bind callbacks to following events for custom functionality:

Name | Parameters | Description
--- | --- | ---
`change.uk.tab` | event, active item, previous item | On tab item change