Skip to content

DigitalA11Y

Your Accessibility Partner

  • Home
  • ServicesExpand
    • WCAG Audit Services
    • VPAT/ACR Services
    • Accessibility Consulting
    • PDF Remediation
    • Accessibility Trainings
    • Website Remediation
    • Design Audit
  • Free ToolsExpand
    • Accessibility Checker
    • A11Y Cost Calculator
    • A11Y Bookmarklets
    • Color Contrast Extension
    • WCAG Contrast Checker
  • ResourcesExpand
    • A11Y Articles
    • WCAG Primer
    • ARIA Cheatsheet
    • A11Y Tools
    • A11Y Patterns
    • A11Y Cheatsheets
  • Contact
Search
DigitalA11Y
Your Accessibility Partner
Search

Tab List with Radio Buttons

flowers (tablist)

Tablist help: use the tablist controls to toggle the visibility of their respective panels (below the controls).

Tablist controls

rose (panel)

Some info about rose

Bla bla bla… all about rose…

A beautiful rose

A link to a page with more infos about rose!

More elements can come here related to rose

Maybe even some form element where you can enter a name for your rose:

tulip (panel)

Some info about tulip

Bla bla bla… all about tulip…

A beautiful tulip

A link to a page with more infos about tulip!

More elements can come here related to tulip

Maybe even some form element where you can enter a name for your tulip:

sunflower (panel)

Some info about sunflower

Bla bla bla… all about sunflower…

A beautiful sunflower

A link to a page with more infos about sunflower!

More elements can come here related to sunflower

Maybe even some form element where you can enter a name for your sunflower:

Code

  • HTML
  • CSS
  • JavaScript
<p>
  <button>Focusable element before</button>
</p>
<div class="tablist">
  <h1 class="visually-hidden">
    flowers (tablist)
  </h1>
  <p class="visually-hidden">
    Tablist help: use the tablist controls to toggle the visibility of their respective panels (below the controls).
  </p>
  <fieldset class="controls">
    <legend class="visually-hidden">Tablist controls</legend>
    <div class="control">
      <input checked="" class="visually-hidden" id="tablist_flowers_panel_rose" name="tablist_flowers" type="radio" value="tablist_flowers_panel_rose" /><label for="tablist_flowers_panel_rose"><span class="visually-hidden">Show panel </span>rose</label>
    </div>
    <div class="control">
      <input class="visually-hidden" id="tablist_flowers_panel_tulip" name="tablist_flowers" type="radio" value="tablist_flowers_panel_tulip" /><label for="tablist_flowers_panel_tulip"><span class="visually-hidden">Show panel </span>tulip</label>
    </div>
    <div class="control">
      <input class="visually-hidden" id="tablist_flowers_panel_sunflower" name="tablist_flowers" type="radio" value="tablist_flowers_panel_sunflower" /><label for="tablist_flowers_panel_sunflower"><span class="visually-hidden">Show panel </span>sunflower</label>
    </div>
  </fieldset>
  <div class="panel" id="tablist_flowers_panel_rose_panel" style="display: block">
    <h2 class="visually-hidden">
      rose (panel)
    </h2>
    <h3>
      Some info about rose
    </h3>
    <p>
      Bla bla bla... all about rose...
    </p>
    <p>
      <img alt="A beautiful rose" src="..." />
    </p>
    <p>
      A link to a page with <a href="#">more infos about rose</a>!
    </p>
    <h3>
      More elements can come here related to rose
    </h3>
    <p>
      Maybe even some form element where you can enter a name for your rose: <input type="text" />
    </p>
  </div>
  <div class="panel" id="tablist_flowers_panel_tulip_panel" style="display: none">
    <h2 class="visually-hidden">
      tulip (panel)
    </h2>
    <h3>
      Some info about tulip
    </h3>
    <p>
      Bla bla bla... all about tulip...
    </p>
    <p>
      <img alt="A beautiful tulip" src="..." />
    </p>
    <p>
      A link to a page with <a href="#">more infos about tulip</a>!
    </p>
    <h3>
      More elements can come here related to tulip
    </h3>
    <p>
      Maybe even some form element where you can enter a name for your tulip: <input type="text" />
    </p>
  </div>
  <div class="panel" id="tablist_flowers_panel_sunflower_panel" style="display: none">
    <h2 class="visually-hidden">
      sunflower (panel)
    </h2>
    <h3>
      Some info about sunflower
    </h3>
    <p>
      Bla bla bla... all about sunflower...
    </p>
    <p>
      <img alt="A beautiful sunflower" src="..." />
    </p>
    <p>
      A link to a page with <a href="#">more infos about sunflower</a>!
    </p>
    <h3>
      More elements can come here related to sunflower
    </h3>
    <p>
      Maybe even some form element where you can enter a name for your sunflower: <input type="text" />
    </p>
  </div>
</div>
<p>
  <button>Focusable element after</button>
</p>
.visually-hidden {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

body {
  padding: 20px;
}

.control {
  display: inline-block;
}
.control label {
  border: 1px solid black;
  margin: 0 0 -1px 0;
  padding: 4px 10px;
}

input[type=radio]:checked + label {
  background-color: lightyellow;
  border-bottom-color: lightyellow;
}

a:focus,
input:focus,
input[type=radio]:focus + label {
  outline: 2px dotted;
  outline-offset: 2px;
}

input[type=radio] + label:hover {
  cursor: pointer;
  text-decoration: underline;
}

.panel {
  border: 1px solid;
  background-color: lightyellow;
  padding: 0 0 0 10px;
}
(function() {
  $(document).ready(function() {
    return $("input[type='radio']").change(function() {
      var $current_radiobutton, current_panel_id, current_radiobutton_name;
      $current_radiobutton = $(this);
      current_radiobutton_name = $current_radiobutton.attr('name');
      current_panel_id = `#${$current_radiobutton.attr('value')}_panel`;
      return $(`[name='${current_radiobutton_name}']`).each((i, element) => {
        var $panel, $radiobutton, panel_id;
        $radiobutton = $(element);
        panel_id = `#${$radiobutton.attr('id')}_panel`;
        $panel = $(panel_id);
        if (panel_id === current_panel_id) {
          return $panel.show();
        } else {
          return $panel.hide();
        }
      });
    });
  });

}).call(this);

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiPGFub255bW91cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQSxDQUFBLENBQUUsUUFBRixDQUFXLENBQUMsS0FBWixDQUFrQixRQUFBLENBQUEsQ0FBQTtXQUNoQixDQUFBLENBQUUscUJBQUYsQ0FBd0IsQ0FBQyxNQUF6QixDQUFnQyxRQUFBLENBQUEsQ0FBQTtBQUNsQyxVQUFBLG9CQUFBLEVBQUEsZ0JBQUEsRUFBQTtNQUFJLG9CQUFBLEdBQTJCLENBQUEsQ0FBRSxJQUFGO01BQzNCLHdCQUFBLEdBQTJCLG9CQUFvQixDQUFDLElBQXJCLENBQTBCLE1BQTFCO01BQzNCLGdCQUFBLEdBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUMsSUFBckIsQ0FBMEIsT0FBMUIsQ0FBSixDQUFBLE1BQUE7YUFFM0IsQ0FBQSxDQUFFLENBQUEsT0FBQSxDQUFBLENBQVUsd0JBQVYsQ0FBQSxFQUFBLENBQUYsQ0FBeUMsQ0FBQyxJQUExQyxDQUErQyxDQUFDLENBQUQsRUFBSSxPQUFKLENBQUEsR0FBQTtBQUNuRCxZQUFBLE1BQUEsRUFBQSxZQUFBLEVBQUE7UUFBTSxZQUFBLEdBQWUsQ0FBQSxDQUFFLE9BQUY7UUFDZixRQUFBLEdBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUMsSUFBYixDQUFrQixJQUFsQixDQUFKLENBQUEsTUFBQTtRQUNmLE1BQUEsR0FBZSxDQUFBLENBQUUsUUFBRjtRQUVmLElBQUcsUUFBQSxLQUFZLGdCQUFmO2lCQUNFLE1BQU0sQ0FBQyxJQUFQLENBQUEsRUFERjtTQUFBLE1BQUE7aUJBR0UsTUFBTSxDQUFDLElBQVAsQ0FBQSxFQUhGOztNQUw2QyxDQUEvQztJQUw4QixDQUFoQztFQURnQixDQUFsQjtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiJChkb2N1bWVudCkucmVhZHkgLT5cbiAgJChcImlucHV0W3R5cGU9J3JhZGlvJ11cIikuY2hhbmdlIC0+XG4gICAgJGN1cnJlbnRfcmFkaW9idXR0b24gICAgID0gJChAKVxuICAgIGN1cnJlbnRfcmFkaW9idXR0b25fbmFtZSA9ICRjdXJyZW50X3JhZGlvYnV0dG9uLmF0dHIgJ25hbWUnXG4gICAgY3VycmVudF9wYW5lbF9pZCAgICAgICAgID0gXCIjI3skY3VycmVudF9yYWRpb2J1dHRvbi5hdHRyKCd2YWx1ZScpfV9wYW5lbFwiXG4gICAgXG4gICAgJChcIltuYW1lPScje2N1cnJlbnRfcmFkaW9idXR0b25fbmFtZX0nXVwiKS5lYWNoIChpLCBlbGVtZW50KSA9PlxuICAgICAgJHJhZGlvYnV0dG9uID0gJChlbGVtZW50KVxuICAgICAgcGFuZWxfaWQgICAgID0gXCIjI3skcmFkaW9idXR0b24uYXR0cignaWQnKX1fcGFuZWxcIlxuICAgICAgJHBhbmVsICAgICAgID0gJChwYW5lbF9pZClcbiAgICAgIFxuICAgICAgaWYgcGFuZWxfaWQgPT0gY3VycmVudF9wYW5lbF9pZFxuICAgICAgICAkcGFuZWwuc2hvdygpXG4gICAgICBlbHNlXG4gICAgICAgICRwYW5lbC5oaWRlKCkiXX0=
//# sourceURL=coffeescript

Company

  • About
  • Blog
  • Careers
  • Contact

Services

  • Accessibility Audits
  • Accessibility Consulting
  • VPAT/ACR
  • Accessibility Trainings

Compliance

  • WCAG
  • ADA
  • Section 508
  • EN 301 549
  • EAA
  • AODA Compliance Services — Make Your Digital Assets Accessible in Ontario
  • ACA

Resources

  • Accessibility Resources
  • Understanding WCAG
  • WCAG Checklist
  • Understanding WAI-ARIA

Legal

  • Privacy Policy
  • Terms and Conditions
  • Disclaimer
  • Accessibility Statement for digitala11y.com
  • Sitemap

© 2025 DigitalA11Y
All Rights Reserved

Linkedin Twitter Facebook Instagram YouTube

DigitalA11Y
Plot No 108, 3rd Cross Rd, Saipuri Colony,
Hastinapuri Colony, Sainikpuri, Secunderabad -500094
Telangana, India.

Tel:(+91)99082 66680,
E-mail: [email protected]

Scroll to top
  • Home
  • Services
    • WCAG Audit Services
    • VPAT/ACR Services
    • Accessibility Consulting
    • PDF Remediation
    • Accessibility Trainings
    • Website Remediation
    • Design Audit
  • Free Tools
    • Accessibility Checker
    • A11Y Cost Calculator
    • A11Y Bookmarklets
    • Color Contrast Extension
    • WCAG Contrast Checker
  • Resources
    • A11Y Articles
    • WCAG Primer
    • ARIA Cheatsheet
    • A11Y Tools
    • A11Y Patterns
    • A11Y Cheatsheets
  • Contact