Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use aria-description instead of aria-label for better accessiblity #173

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 116 additions & 42 deletions balloon.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@
--balloon-font-size: 12px;
--balloon-move: 4px; }

button[aria-label][data-balloon-pos] {
button[aria-label][data-balloon-pos],
button[aria-description][data-balloon-pos] {
overflow: visible; }

[aria-label][data-balloon-pos] {
[aria-label][data-balloon-pos],
[aria-description][data-balloon-pos] {
position: relative;
cursor: pointer; }
[aria-label][data-balloon-pos]:after {
[aria-label][data-balloon-pos]:after,
[aria-description][data-balloon-pos]:after {
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0.18s;
transition: opacity .18s ease-out .18s, transform .18s ease-out .18s;
text-indent: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
font-weight: normal;
Expand All @@ -25,110 +28,181 @@ button[aria-label][data-balloon-pos] {
border-radius: 2px;
color: var(--balloon-text-color);
border-radius: var(--balloon-border-radius);
content: attr(aria-label);
padding: .5em 1em;
position: absolute;
white-space: nowrap;
z-index: 10; }
[aria-label][data-balloon-pos]:before {
[aria-label][data-balloon-pos]:before,
[aria-description][data-balloon-pos]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-top-color: var(--balloon-color);
opacity: 0;
pointer-events: none;
transition: all 0.18s ease-out 0.18s;
transition: opacity .18s ease-out .18s, transform .18s ease-out .18s;
content: "";
position: absolute;
z-index: 10; }
[aria-label][data-balloon-pos]:hover:before, [aria-label][data-balloon-pos]:hover:after, [aria-label][data-balloon-pos][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-visible]:after, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
[aria-label][data-balloon-pos]:hover:before, [aria-label][data-balloon-pos]:hover:after, [aria-label][data-balloon-pos][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-visible]:after, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after,
[aria-description][data-balloon-pos]:hover:before,
[aria-description][data-balloon-pos]:hover:after,
[aria-description][data-balloon-pos][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-visible]:after,
[aria-description][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,
[aria-description][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
opacity: 1;
pointer-events: none; }
[aria-label][data-balloon-pos].font-awesome:after {
[aria-label][data-balloon-pos].font-awesome:after,
[aria-description][data-balloon-pos].font-awesome:after {
font-family: FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; }
[aria-label][data-balloon-pos][data-balloon-break]:after {
[aria-label][data-balloon-pos][data-balloon-break]:after,
[aria-description][data-balloon-pos][data-balloon-break]:after {
white-space: pre; }
[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after,
[aria-description][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
white-space: pre-line;
word-break: break-word; }
[aria-label][data-balloon-pos][data-balloon-blunt]:before, [aria-label][data-balloon-pos][data-balloon-blunt]:after {
[aria-label][data-balloon-pos][data-balloon-blunt]:before, [aria-label][data-balloon-pos][data-balloon-blunt]:after,
[aria-description][data-balloon-pos][data-balloon-blunt]:before,
[aria-description][data-balloon-pos][data-balloon-blunt]:after {
transition: none; }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos="up"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos="down"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {
[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos="up"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos="down"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {
transform: translate(-50%, 0); }
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:after {
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"]:after {
left: 0; }
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:before {
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"]:before {
left: 5px; }
[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:after {
[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"]:after {
right: 0; }
[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:before {
[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"]:before {
right: 5px; }
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:after {
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:after {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:before {
[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-left"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:before {
transform: translate(0, 0); }
[aria-label][data-balloon-pos][data-balloon-pos^="up"]:before, [aria-label][data-balloon-pos][data-balloon-pos^="up"]:after {
[aria-label][data-balloon-pos][data-balloon-pos^="up"]:before, [aria-label][data-balloon-pos][data-balloon-pos^="up"]:after,
[aria-description][data-balloon-pos][data-balloon-pos^="up"]:before,
[aria-description][data-balloon-pos][data-balloon-pos^="up"]:after {
bottom: 100%;
transform-origin: top;
transform: translate(0, var(--balloon-move)); }
[aria-label][data-balloon-pos][data-balloon-pos^="up"]:after {
[aria-label][data-balloon-pos][data-balloon-pos^="up"]:after,
[aria-description][data-balloon-pos][data-balloon-pos^="up"]:after {
margin-bottom: 10px; }
[aria-label][data-balloon-pos][data-balloon-pos="up"]:before, [aria-label][data-balloon-pos][data-balloon-pos="up"]:after {
[aria-label][data-balloon-pos][data-balloon-pos="up"]:before, [aria-label][data-balloon-pos][data-balloon-pos="up"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="up"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="up"]:after {
left: 50%;
transform: translate(-50%, var(--balloon-move)); }
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before, [aria-label][data-balloon-pos][data-balloon-pos^="down"]:after {
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before, [aria-label][data-balloon-pos][data-balloon-pos^="down"]:after,
[aria-description][data-balloon-pos][data-balloon-pos^="down"]:before,
[aria-description][data-balloon-pos][data-balloon-pos^="down"]:after {
top: 100%;
transform: translate(0, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:after {
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:after,
[aria-description][data-balloon-pos][data-balloon-pos^="down"]:after {
margin-top: 10px; }
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before {
[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before,
[aria-description][data-balloon-pos][data-balloon-pos^="down"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: var(--balloon-color); }
[aria-label][data-balloon-pos][data-balloon-pos="down"]:after, [aria-label][data-balloon-pos][data-balloon-pos="down"]:before {
[aria-label][data-balloon-pos][data-balloon-pos="down"]:after, [aria-label][data-balloon-pos][data-balloon-pos="down"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="down"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="down"]:before {
left: 50%;
transform: translate(-50%, calc(var(--balloon-move) * -1)); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after, [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:hover:after,
[aria-description][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {
[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:hover:before,
[aria-description][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {
transform: translate(0, -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after, [aria-label][data-balloon-pos][data-balloon-pos="left"]:before {
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after, [aria-label][data-balloon-pos][data-balloon-pos="left"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:before {
right: 100%;
top: 50%;
transform: translate(var(--balloon-move), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after {
[aria-label][data-balloon-pos][data-balloon-pos="left"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:after {
margin-right: 10px; }
[aria-label][data-balloon-pos][data-balloon-pos="left"]:before {
[aria-label][data-balloon-pos][data-balloon-pos="left"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="left"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-left-color: var(--balloon-color); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after, [aria-label][data-balloon-pos][data-balloon-pos="right"]:before {
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after, [aria-label][data-balloon-pos][data-balloon-pos="right"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:before {
left: 100%;
top: 50%;
transform: translate(calc(var(--balloon-move) * -1), -50%); }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after {
[aria-label][data-balloon-pos][data-balloon-pos="right"]:after,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:after {
margin-left: 10px; }
[aria-label][data-balloon-pos][data-balloon-pos="right"]:before {
[aria-label][data-balloon-pos][data-balloon-pos="right"]:before,
[aria-description][data-balloon-pos][data-balloon-pos="right"]:before {
width: 0;
height: 0;
border: 5px solid transparent;
border-right-color: var(--balloon-color); }
[aria-label][data-balloon-pos][data-balloon-length]:after {
[aria-label][data-balloon-pos][data-balloon-length]:after,
[aria-description][data-balloon-pos][data-balloon-length]:after {
white-space: normal; }
[aria-label][data-balloon-pos][data-balloon-length="small"]:after {
[aria-label][data-balloon-pos][data-balloon-length="small"]:after,
[aria-description][data-balloon-pos][data-balloon-length="small"]:after {
width: 80px; }
[aria-label][data-balloon-pos][data-balloon-length="medium"]:after {
[aria-label][data-balloon-pos][data-balloon-length="medium"]:after,
[aria-description][data-balloon-pos][data-balloon-length="medium"]:after {
width: 150px; }
[aria-label][data-balloon-pos][data-balloon-length="large"]:after {
[aria-label][data-balloon-pos][data-balloon-length="large"]:after,
[aria-description][data-balloon-pos][data-balloon-length="large"]:after {
width: 260px; }
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after,
[aria-description][data-balloon-pos][data-balloon-length="xlarge"]:after {
width: 380px; }
@media screen and (max-width: 768px) {
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after,
[aria-description][data-balloon-pos][data-balloon-length="xlarge"]:after {
width: 90vw; } }
[aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
[aria-label][data-balloon-pos][data-balloon-length="fit"]:after,
[aria-description][data-balloon-pos][data-balloon-length="fit"]:after {
width: 100%; }

[aria-label][data-balloon-pos]:after {
content: attr(aria-label); }

[aria-description][data-balloon-pos]:after {
content: attr(aria-description); }
Loading