All Projects → nico3333fr → van11y-accessible-simple-tooltip-aria

nico3333fr / van11y-accessible-simple-tooltip-aria

Licence: MIT license
ES2015 accessible simple tooltip, using ARIA

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to van11y-accessible-simple-tooltip-aria

jquery-accessible-simple-tooltip-aria
jQuery accessible simple tooltip window, using ARIA
Stars: ✭ 22 (+0%)
Mutual labels:  accessibility, a11y, aria, tooltip
A11y tooltips
Accessible Tooltip Component
Stars: ✭ 35 (+59.09%)
Mutual labels:  accessibility, a11y, aria, tooltip
Js Offcanvas
A lightweight, flexible jQuery off-canvas navigation plugin which lets you create fully accessible sidebar or top/bottom sliding (or push) panels with keyboard interactions and ARIA attributes.
Stars: ✭ 272 (+1136.36%)
Mutual labels:  accessibility, a11y, aria
Accessible components
Listing of accessible components & patterns
Stars: ✭ 393 (+1686.36%)
Mutual labels:  accessibility, a11y, aria
aria-at
Assistive Technology ARIA Experience Assessment
Stars: ✭ 115 (+422.73%)
Mutual labels:  accessibility, a11y, aria
jquery-accessible-modal-window-aria
jQuery simple and accessible modal window, using ARIA
Stars: ✭ 61 (+177.27%)
Mutual labels:  accessibility, a11y, aria
enabler
✋ Accessibility analyzer for your frontend.
Stars: ✭ 19 (-13.64%)
Mutual labels:  accessibility, a11y, aria
Van11y Accessible Tab Panel Aria
ES2015 accessible tabs panel system, using ARIA
Stars: ✭ 58 (+163.64%)
Mutual labels:  accessibility, a11y, aria
a11y-accordion-tabs
A script for an accessible accordion tabs component
Stars: ✭ 50 (+127.27%)
Mutual labels:  accessibility, a11y, aria
Skin
Pure CSS framework designed & developed by eBay for a branded, e-commerce marketplace.
Stars: ✭ 126 (+472.73%)
Mutual labels:  accessibility, a11y, aria
Accordion
Accordion module created in pure javascript & CSS. Very useful to create FAQ lists on your website.
Stars: ✭ 94 (+327.27%)
Mutual labels:  accessibility, a11y, aria
Accessible modal window
Accessible modal dialogs
Stars: ✭ 196 (+790.91%)
Mutual labels:  accessibility, a11y, aria
alfa
♿ Suite of open and standards-based tools for performing reliable accessibility conformance testing at scale
Stars: ✭ 75 (+240.91%)
Mutual labels:  accessibility, a11y, aria
jquery-accessible-carrousel-aria
jQuery Accessible Carrousel System, using ARIA
Stars: ✭ 40 (+81.82%)
Mutual labels:  accessibility, a11y, aria
van11y-accessible-hide-show-aria
ES2015 accessible hide-show system (collapsible regions), using ARIA
Stars: ✭ 34 (+54.55%)
Mutual labels:  accessibility, a11y, aria
jquery-accessible-dialog-tooltip-aria
jQuery simple and accessible dialog tooltip window, using ARIA
Stars: ✭ 17 (-22.73%)
Mutual labels:  accessibility, aria, tooltip
aria-collapsible
A lightweight, dependency-free JavaScript module for generating progressively-enhanced collapsible regions using ARIA States and Properties.
Stars: ✭ 25 (+13.64%)
Mutual labels:  accessibility, a11y, aria
Accessible Html Content Patterns
♿️ The full HTML5 Doctor Element Index as well as common markup patterns for quick reference.
Stars: ✭ 93 (+322.73%)
Mutual labels:  accessibility, a11y, aria
Eslint Plugin Jsx A11y
Static AST checker for a11y rules on JSX elements.
Stars: ✭ 2,609 (+11759.09%)
Mutual labels:  accessibility, a11y, aria
Creatability Components
Web components for making creative tools more accessible.
Stars: ✭ 248 (+1027.27%)
Mutual labels:  accessibility, a11y, aria

Van11y ES2015 accessible simple tooltip, using ARIA

Van11y

This script will provide an accessible simple tooltip system, using ARIA.

The demo is here: https://van11y.net/downloads/simple-tooltip/demo/index.html

Website is here: https://van11y.net/accessible-simple-tooltip/

La page existe aussi en français : https://van11y.net/fr/infobulles-tooltips-accessibles/

How it works

First round

Basically, the script wraps each class="js-simple-tooltip" into a span class="<your-prefix-class>-container" and adds the content into a hidden content next to it. Once you focus or hover the element with class="js-simple-tooltip", it is displayed.

You can use it on the tag you want (input, button, a…).

Then a bit of styling classes

Then it will generate some classes for you, to allow styling your tooltips as you want.

ARIA is coming

Thanks to aria-describedby and ids generated on the fly, you never loose any information.

And JavaScript does the rest

Some listeners for keyboard and mouse interactions are added, when you activate one, it will updates attributes and manage keyboard, you can close it using Esc.

How to use it

Download the script

You may also use npm command: npm i van11y-accessible-simple-tooltip-aria.

You may also use bower: bower install van11y-accessible-simple-tooltip-aria.

Attributes

Use data-simpletooltip-text or data-simpletooltip-content-id attributes on an element to activate the tooltip.

  • Simply put class="js-simpletooltip" on a button to activate the script.
  • Attribute data-simpletooltip-prefix-class (non mandatory): the prefix to all style classes of the tooltip (useful to set up different styles).
  • Attribute data-simpletooltip-text: the text of your tooltip.
  • Attribute data-simpletooltip-content-id: the id of (hidden) content in your page that will be put into your tooltip.

The script is launched when the page is loaded. If you need to execute it on AJAX-inserted content, you may use for example on <div id="newContent">your tooltip launcher source</div>:

var my_tooltip = van11yAccessibleSimpleTooltipAria();
my_expand.attach(document.getElementById('newContent'));

addListeners is a facultative boolean (by default set to true) to add tooltip listeners (should be set up only the first time in most of the cases).

Examples

Here are three examples:

<button class="js-simple-tooltip" data-simpletooltip-text="Cool, it works!">
  Hover or focus me to show the tooltip
</button>

<button class="js-simple-tooltip" data-simpletooltip-content-id="tooltip-case_1">
  Show me another tooltip
</button>
<div id="tooltip-case_1" class="hidden">
  Woot, you can take the content of a hidden block.
</div>

<button class="js-simple-tooltip" data-simpletooltip-prefix-class="minimalist-left"
  data-simpletooltip-text="Yes, with data-simpletooltip-prefix-class, so easy">
 And another one?
</button>

These examples are taken from the demo.

How to style it

These examples are taken from the demo.

/* Tooltip hidden by default */
.simpletooltip[aria-hidden="true"],
.minimalist-simpletooltip[aria-hidden="true"],
.minimalist-left-simpletooltip[aria-hidden="true"] {
  display: none;
}
/* position relative for containers */
.simpletooltip_container,
.minimalist-simpletooltip_container,
.minimalist-left-simpletooltip_container {
  position: relative;
}

/* tooltip styles */
.simpletooltip,
.minimalist-simpletooltip,
.minimalist-left-simpletooltip {
  position: absolute;
  z-index: 666;
  width: 10em;
  border-radius: .5em;
  background: rgba( 0, 0, 0, .9 );
  color: #eee;
  padding: .5em;
  text-align: left;
  line-height: 1.3;
}
.simpletooltip,
.minimalist-simpletooltip {
  right: auto;
  left: 100%;
  margin-left: .5em;
}
.minimalist-left-simpletooltip {
  right: 100%;
  left: auto;
  margin-right: .5em;
}
/* used pseudo-element to make arrows */
.simpletooltip::before,
.minimalist-simpletooltip::before,
.minimalist-left-simpletooltip::before {
  content: '';
  speak: none;
  position: absolute;
  z-index: 666;
  width: 10px;
  height: 10px;
  pointer-events: none;
}
.simpletooltip::before,
.minimalist-simpletooltip::before {
  top: .5em;
  left: -10px;
  margin-left: -10px;
  border: 10px solid transparent;
  border-right: 10px solid rgba( 0, 0, 0, .9 );
}
.minimalist-left-simpletooltip::before {
  top: .5em;
  right: -10px;
  margin-right: -10px;
  border: 10px solid transparent;
  border-left: 10px solid rgba( 0, 0, 0, .9 )
}

/* it can be easily adapted in media-queries for tablets/mobile */

/* for this example: mobile */
@media (max-width: 44.375em) {

  .simpletooltip,
  .minimalist-simpletooltip,
  .minimalist-left-simpletooltip  {
    top: 100%;
    left: 50%;
    right: 0;
    margin: 0;
    margin-top: .7em;
    margin-left: -5em;
  }
  .simpletooltip::before,
  .minimalist-simpletooltip::before,
  .minimalist-left-simpletooltip::before  {
    top: -10px;
    right: auto;
    left: 50%;
    margin-left: -5px;
    margin-top: -10px;
    border: 10px solid transparent;
    border-bottom: 10px solid rgba( 0, 0, 0, .9 );
  }

}

Bonuses

Default config

const CONFIG = {
  TOOLTIP_SIMPLE: 'js-simple-tooltip',
  TOOLTIP_SIMPLE_CONTAINER: 'simpletooltip_container',
  TOOLTIP_SIMPLE_RAW: 'simpletooltip',
  TOOLTIP_SIMPLE_LABEL_ID: 'label_simpletooltip_',
  TOOLTIP_DATA_TEXT: 'data-simpletooltip-text',
  TOOLTIP_DATA_PREFIX_CLASS: 'data-simpletooltip-prefix-class',
  TOOLTIP_DATA_CONTENT_ID: 'data-simpletooltip-content-id',
  ATTR_DESCRIBEDBY: 'aria-describedby',
  ATTR_HIDDEN: 'aria-hidden',
  ATTR_ROLE: 'role',
  ROLE: 'tooltip',
  ...config
};

If you need to use another configuration, you may call the plugin like this:

var other_tooltip = van11yAccessibleSimpleTooltipAria({
  TOOLTIP_SIMPLE: 'js-simple-tooltip2',
  TOOLTIP_DATA_PREFIX_CLASS: 'data-simpletooltip-prefix-class2'
});
other_tooltip.attach();

Of course, you will have to update your CSS by using the good attributes (if you modify them).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].