Skip to content

Commit 37c9764

Browse files
committed
perf(ui): improve web accessibility (cotes2020#447)
- Make color and contrast meets WCAG 2 AA and above - Fixes `aria-label` on button "copy link" in posts
1 parent 0fd4c0b commit 37c9764

File tree

10 files changed

+95
-83
lines changed

10 files changed

+95
-83
lines changed

Diff for: _includes/post-sharing.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,16 @@
2222
</a>
2323
{% endfor %}
2424

25-
<i
25+
<button
2626
id="copy-link"
27-
class="fa-fw fas fa-link small"
27+
aria-label="Copy link"
28+
class="btn small"
2829
data-bs-toggle="tooltip"
2930
data-bs-placement="top"
3031
title="{{ site.data.locales[include.lang].post.button.share_link.title }}"
3132
data-title-succeed="{{ site.data.locales[include.lang].post.button.share_link.succeed }}"
3233
>
33-
</i>
34+
<i class="fa-fw fas fa-link pe-none"></i>
35+
</button>
3436
</span>
3537
</div>

Diff for: _javascript/modules/components/clipboard.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ export function initClipboard() {
9999

100100
/* --- Post link sharing --- */
101101

102-
$('#copy-link').on('click', (e) => {
102+
const btnCopyLink = $('#copy-link');
103+
104+
btnCopyLink.on('click', (e) => {
103105
let target = $(e.target);
104106

105107
if (isLocked(target)) {
@@ -120,4 +122,10 @@ export function initClipboard() {
120122
}, TIMEOUT);
121123
});
122124
});
125+
126+
btnCopyLink.on('mouseleave', function (e) {
127+
const target = $(e.target);
128+
target.tooltip('hide');
129+
console.log('mouse leave...');
130+
});
123131
}

Diff for: _sass/addon/commons.scss

+10-8
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ footer {
176176
font-size: 0.8rem;
177177
background-color: var(--main-bg);
178178

179+
@extend %text-color;
180+
179181
div.d-flex {
180182
height: $footer-height;
181183
line-height: 1.2rem;
@@ -185,7 +187,7 @@ footer {
185187
}
186188

187189
a {
188-
@extend %text-color;
190+
@extend %text-highlight;
189191

190192
&:hover {
191193
@extend %link-hover;
@@ -243,7 +245,6 @@ i {
243245
.post-tag {
244246
line-height: 1.05rem;
245247
font-size: 0.85rem;
246-
border: 1px solid var(--btn-border-color);
247248
border-radius: 0.8rem;
248249
padding: 0.3rem 0.5rem;
249250
margin: 0 0.35rem 0.5rem 0;
@@ -494,9 +495,10 @@ i {
494495
display: inline-block;
495496
min-width: 2rem;
496497
text-align: center;
497-
border-radius: 0.3rem;
498+
border-radius: 0.5rem;
499+
border: 1px solid var(--btn-border-color);
498500
padding: 0 0.4rem;
499-
color: inherit;
501+
color: var(--text-muted-color);
500502
line-height: 1.3rem;
501503

502504
&:not(:last-child) {
@@ -745,19 +747,20 @@ $btn-mb: 0.5rem;
745747
font-size: 1.75rem;
746748
line-height: 1.2;
747749
letter-spacing: 0.25px;
748-
color: rgba(134, 133, 133, 0.99);
749750
margin-top: 1.25rem;
750751
margin-bottom: 0.5rem;
751752

752753
a {
753754
@extend %clickable-transition;
754755
@extend %sidebar-link-hover;
756+
757+
color: var(--site-title-color);
755758
}
756759
}
757760

758761
.site-subtitle {
759762
font-size: 95%;
760-
color: var(--sidebar-muted-color);
763+
color: var(--site-subtitle-color);
761764
margin-top: 0.25rem;
762765
word-spacing: 1px;
763766
-webkit-user-select: none;
@@ -915,7 +918,7 @@ $btn-mb: 0.5rem;
915918

916919
#breadcrumb {
917920
font-size: 1rem;
918-
color: gray;
921+
color: var(--text-muted-color);
919922
padding-left: 0.5rem;
920923

921924
a:hover {
@@ -1102,7 +1105,6 @@ $btn-mb: 0.5rem;
11021105
/* --- main wrapper --- */
11031106

11041107
#main-wrapper {
1105-
background-color: var(--main-bg);
11061108
position: relative;
11071109
min-height: calc(100vh - $footer-height-mobile);
11081110

Diff for: _sass/addon/module.scss

+6-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
}
108108

109109
%sidebar-links {
110-
color: rgba(117, 117, 117, 0.9);
110+
color: var(--sidebar-muted-color);
111111
-webkit-user-select: none;
112112
-moz-user-select: none;
113113
-ms-user-select: none;
@@ -122,6 +122,11 @@
122122
-webkit-box-orient: vertical;
123123
}
124124

125+
%text-highlight {
126+
color: inherit;
127+
font-weight: 600;
128+
}
129+
125130
/* ---------- scss mixin --------- */
126131

127132
@mixin mt-mb($value) {

Diff for: _sass/addon/syntax.scss

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ html {
6363
font-size: $code-font-size;
6464
line-height: 1.4rem;
6565
word-wrap: normal; /* Fixed Safari overflow-x */
66+
color: var(--code-snippets-color);
6667
}
6768

6869
table {

Diff for: _sass/colors/dark-syntax.scss

+16-20
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,40 @@
55
@mixin dark-syntax {
66
--language-border-color: rgba(84, 83, 83, 0.27);
77
--highlight-bg-color: #252525;
8-
--highlighter-rouge-color: #de6b18;
9-
--highlight-lineno-color: #6c6c6d;
8+
--highlighter-rouge-color: #ff6e4e;
9+
--highlight-lineno-color: #666666;
1010
--inline-code-bg: #272822;
1111
--code-header-text-color: #6a6a6a;
1212
--code-header-muted-color: rgb(60, 60, 60);
1313
--code-header-icon-color: rgb(86, 86, 86);
1414
--clipboard-checked-color: #2bcc2b;
15-
--filepath-text-color: #bdbdbd;
16-
17-
/* override Bootstrap */
18-
pre {
19-
color: #bfbfbf;
20-
}
15+
--filepath-text-color: #cacaca;
16+
--code-snippets-color: #c2c2c2;
2117

2218
.highlight .gp {
23-
color: #818c96;
19+
color: #87939d;
2420
}
2521

2622
/* syntax highlight colors from https://raw.githubusercontent.com/jwarby/pygments-css/master/monokai.css */
2723

2824
.highlight pre { background-color: var(--highlight-bg-color); }
2925
.highlight .hll { background-color: var(--highlight-bg-color); }
30-
.highlight .c { color: #75715e; } /* Comment */
26+
.highlight .c { color: #938d75; } /* Comment */
3127
.highlight .err { color: #960050; background-color: #1e0010; } /* Error */
3228
.highlight .k { color: #66d9ef; } /* Keyword */
3329
.highlight .l { color: #ae81ff; } /* Literal */
3430
.highlight .n { color: #f8f8f2; } /* Name */
35-
.highlight .o { color: #f92672; } /* Operator */
31+
.highlight .o { color: #ff329c; } /* Operator */
3632
.highlight .p { color: #f8f8f2; } /* Punctuation */
37-
.highlight .cm { color: #75715e; } /* Comment.Multiline */
38-
.highlight .cp { color: #75715e; } /* Comment.Preproc */
39-
.highlight .c1 { color: #75715e; } /* Comment.Single */
40-
.highlight .cs { color: #75715e; } /* Comment.Special */
33+
.highlight .cm { color: #938d75; } /* Comment.Multiline */
34+
.highlight .cp { color: #938d75; } /* Comment.Preproc */
35+
.highlight .c1 { color: #938d75; } /* Comment.Single */
36+
.highlight .cs { color: #938d75; } /* Comment.Special */
4137
.highlight .ge { color: inherit; font-style: italic; } /* Generic.Emph */
4238
.highlight .gs { font-weight: bold; } /* Generic.Strong */
4339
.highlight .kc { color: #66d9ef; } /* Keyword.Constant */
4440
.highlight .kd { color: #66d9ef; } /* Keyword.Declaration */
45-
.highlight .kn { color: #f92672; } /* Keyword.Namespace */
41+
.highlight .kn { color: #ff329c; } /* Keyword.Namespace */
4642
.highlight .kp { color: #66d9ef; } /* Keyword.Pseudo */
4743
.highlight .kr { color: #66d9ef; } /* Keyword.Reserved */
4844
.highlight .kt { color: #66d9ef; } /* Keyword.Type */
@@ -61,9 +57,9 @@
6157
.highlight .nn { color: #f8f8f2; } /* Name.Namespace */
6258
.highlight .nx { color: #a6e22e; } /* Name.Other */
6359
.highlight .py { color: #f8f8f2; } /* Name.Property */
64-
.highlight .nt { color: #f92672; } /* Name.Tag */
60+
.highlight .nt { color: #ff329c; } /* Name.Tag */
6561
.highlight .nv { color: #f8f8f2; } /* Name.Variable */
66-
.highlight .ow { color: #f92672; } /* Operator.Word */
62+
.highlight .ow { color: #ff329c; } /* Operator.Word */
6763
.highlight .w { color: #f8f8f2; } /* Text.Whitespace */
6864
.highlight .mf { color: #ae81ff; } /* Literal.Number.Float */
6965
.highlight .mh { color: #ae81ff; } /* Literal.Number.Hex */
@@ -85,7 +81,7 @@
8581
.highlight .vg { color: #f8f8f2; } /* Name.Variable.Global */
8682
.highlight .vi { color: #f8f8f2; } /* Name.Variable.Instance */
8783
.highlight .il { color: #ae81ff; } /* Literal.Number.Integer.Long */
88-
.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
89-
.highlight .gd { color: #f92672; background-color: #561c08; } /* Generic.Deleted & Diff Deleted */
84+
.highlight .gu { color: #938d75; } /* Generic.Subheading & Diff Unified/Comment? */
85+
.highlight .gd { color: #ff329c; background-color: #561c08; } /* Generic.Deleted & Diff Deleted */
9086
.highlight .gi { color: #a6e22e; background-color: #0b5858; } /* Generic.Inserted & Diff Inserted */
9187
}

Diff for: _sass/colors/dark-typography.scss

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010

1111
/* Common color */
1212
--text-color: rgb(175, 176, 177);
13-
--text-muted-color: rgb(107, 116, 124);
13+
--text-muted-color: rgb(125, 136, 146);
1414
--heading-color: #cccccc;
15+
--label-color: #a4a4c2;
1516
--blockquote-border-color: rgb(66, 66, 66);
16-
--blockquote-text-color: rgb(117, 117, 117);
17+
--blockquote-text-color: #868686;
1718
--link-color: rgb(138, 180, 248);
1819
--link-underline-color: rgb(82, 108, 150);
1920
--button-bg: rgb(39, 40, 43);
@@ -22,7 +23,6 @@
2223
--btn-backtotop-border-color: var(--btn-border-color);
2324
--btn-box-shadow: var(--main-bg);
2425
--card-header-bg: rgb(48, 48, 48);
25-
--label-color: rgb(108, 117, 125);
2626
--checkbox-color: rgb(118, 120, 121);
2727
--checkbox-checked-color: var(--link-color);
2828
--img-bg: radial-gradient(circle, rgb(22, 22, 24) 0%, rgb(32, 32, 32) 100%);
@@ -34,6 +34,8 @@
3434
);
3535

3636
/* Sidebar */
37+
--site-title-color: #717070;
38+
--site-subtitle-color: #6d6c6b;
3739
--sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);
3840
--sidebar-muted-color: #6d6c6b;
3941
--sidebar-active-color: rgb(255, 255, 255, 0.95);
@@ -58,15 +60,13 @@
5860

5961
/* Posts */
6062
--toc-highlight: rgb(116, 178, 243);
61-
--tag-bg: rgb(41, 40, 40);
6263
--tag-hover: rgb(43, 56, 62);
6364
--tb-odd-bg: rgba(42, 47, 53, 0.52); /* odd rows of the posts' table */
6465
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */
6566
--tb-border-color: var(--tb-odd-bg);
6667
--footnote-target-bg: rgb(63, 81, 181);
6768
--btn-share-color: #6c757d;
6869
--btn-share-hover-color: #bfc1ca;
69-
--relate-post-date: var(--text-muted-color);
7070
--card-bg: #1e1e1e;
7171
--card-hovor-bg: #464d51;
7272
--card-shadow: rgb(21, 21, 21, 0.72) 0 6px 18px 0,

Diff for: _sass/colors/light-syntax.scss

+23-22
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
33
*/
44

55
@mixin light-syntax {
6-
/* see: <https://raw.githubusercontent.com/jwarby/pygments-css/master/github.css> */
6+
/* based on: <https://raw.githubusercontent.com/jwarby/pygments-css/master/github.css> */
77
.highlight .hll { background-color: #ffffcc; }
8-
.highlight .c { color: #999988; font-style: italic; } /* Comment */
8+
.highlight .c { color: #717165; font-style: italic; } /* Comment */
99
.highlight .err { color: #a61717; background-color: #e3d2d2; } /* Error */
1010
.highlight .k { color: #000000; font-weight: bold; } /* Keyword */
1111
.highlight .o { color: #000000; font-weight: bold; } /* Operator */
12-
.highlight .cm { color: #999988; font-style: italic; } /* Comment.Multiline */
13-
.highlight .cp { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Preproc */
14-
.highlight .c1 { color: #999988; font-style: italic; } /* Comment.Single */
15-
.highlight .cs { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Special */
12+
.highlight .cm { color: #717165; font-style: italic; } /* Comment.Multiline */
13+
.highlight .cp { color: #707070; font-style: italic; } /* Comment.Preproc */
14+
.highlight .c1 { color: #717165; font-style: italic; } /* Comment.Single */
15+
.highlight .cs { color: #707070; font-weight: bold; font-style: italic; } /* Comment.Special */
1616
.highlight .gd { color: #d01040; background-color: #ffdddd; } /* Generic.Deleted */
1717
.highlight .ge { color: #000000; font-style: italic; } /* Generic.Emph */
1818
.highlight .gr { color: #aa0000; } /* Generic.Error */
19-
.highlight .gh { color: #999999; } /* Generic.Heading */
20-
.highlight .gi { color: #008080; background-color: #ddffdd; } /* Generic.Inserted */
21-
.highlight .go { color: #888888; } /* Generic.Output */
19+
.highlight .gh { color: #707070; } /* Generic.Heading */
20+
.highlight .gi { color: #005e5e; background-color: #ddffdd; } /* Generic.Inserted */
21+
.highlight .go { color: #707070; } /* Generic.Output */
2222
.highlight .gp { color: #555555; } /* Generic.Prompt */
2323
.highlight .gs { font-weight: bold; } /* Generic.Strong */
2424
.highlight .gu { color: #aaaaaa; } /* Generic.Subheading */
@@ -31,18 +31,18 @@
3131
.highlight .kt { color: #445588; font-weight: bold; } /* Keyword.Type */
3232
.highlight .m { color: #009999; } /* Literal.Number */
3333
.highlight .s { color: #d01040; } /* Literal.String */
34-
.highlight .na { color: #008080; } /* Name.Attribute */
35-
.highlight .nb { color: #0086b3; } /* Name.Builtin */
34+
.highlight .na { color: #005e5e; } /* Name.Attribute */
35+
.highlight .nb { color: #0078a1; } /* Name.Builtin */
3636
.highlight .nc { color: #445588; font-weight: bold; } /* Name.Class */
37-
.highlight .no { color: #008080; } /* Name.Constant */
37+
.highlight .no { color: #005e5e; } /* Name.Constant */
3838
.highlight .nd { color: #3c5d5d; font-weight: bold; } /* Name.Decorator */
3939
.highlight .ni { color: #800080; } /* Name.Entity */
4040
.highlight .ne { color: #990000; font-weight: bold; } /* Name.Exception */
4141
.highlight .nf { color: #990000; font-weight: bold; } /* Name.Function */
4242
.highlight .nl { color: #990000; font-weight: bold; } /* Name.Label */
4343
.highlight .nn { color: #555555; } /* Name.Namespace */
4444
.highlight .nt { color: #000080; } /* Name.Tag */
45-
.highlight .nv { color: #008080; } /* Name.Variable */
45+
.highlight .nv { color: #005e5e; } /* Name.Variable */
4646
.highlight .ow { color: #000000; font-weight: bold; } /* Operator.Word */
4747
.highlight .w { color: #bbbbbb; } /* Text.Whitespace */
4848
.highlight .mf { color: #009999; } /* Literal.Number.Float */
@@ -60,22 +60,23 @@
6060
.highlight .sr { color: #009926; } /* Literal.String.Regex */
6161
.highlight .s1 { color: #d01040; } /* Literal.String.Single */
6262
.highlight .ss { color: #990073; } /* Literal.String.Symbol */
63-
.highlight .bp { color: #999999; } /* Name.Builtin.Pseudo */
64-
.highlight .vc { color: #008080; } /* Name.Variable.Class */
65-
.highlight .vg { color: #008080; } /* Name.Variable.Global */
66-
.highlight .vi { color: #008080; } /* Name.Variable.Instance */
63+
.highlight .bp { color: #707070; } /* Name.Builtin.Pseudo */
64+
.highlight .vc { color: #005e5e; } /* Name.Variable.Class */
65+
.highlight .vg { color: #005e5e; } /* Name.Variable.Global */
66+
.highlight .vi { color: #005e5e; } /* Name.Variable.Instance */
6767
.highlight .il { color: #009999; } /* Literal.Number.Integer.Long */
6868

6969
/* --- custom light colors --- */
7070
--language-border-color: rgba(172, 169, 169, 0.2);
71-
--highlight-bg-color: #f7f7f7;
71+
--highlight-bg-color: #fcfcfc;
7272
--highlighter-rouge-color: #3f596f;
73-
--highlight-lineno-color: #c2c6cc;
73+
--highlight-lineno-color: #959595;
7474
--inline-code-bg: #f6f6f7;
75-
--code-header-text-color: #a3a3b1;
76-
--code-header-muted-color: #ebebeb;
77-
--code-header-icon-color: #d1d1d1;
75+
--code-header-text-color: #a3a3a3;
76+
--code-header-muted-color: #e2e1e1;
77+
--code-header-icon-color: #c9c8c8;
7878
--clipboard-checked-color: #43c743;
79+
--code-snippets-color: #b01662;
7980

8081
[class^='prompt-'] {
8182
--inline-code-bg: #fbfafa;

0 commit comments

Comments
 (0)