Skip to content

Commit fc24127

Browse files
author
Atsushi Ambo
committed
Enhance: インタラクティブなチェックリストとクイズ機能を実装
- チェックリストをクリック可能にし、状態をlocalStorageに保存 - クイズのクリックイベントを改善(event.currentTargetを使用) - タスクリストのスタイルを追加(打ち消し線、ホバー効果など) - mkdocs.ymlを更新してpymdownx.tasklistを有効化 - extra.jsを追加してチェックリストの状態を永続化
1 parent b69b61b commit fc24127

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

docs/theme/extra.css

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,31 @@ details.quiz summary:hover {
5252
display: none;
5353
}
5454

55+
/* Task list styles */
56+
.task-list-item {
57+
list-style: none;
58+
margin-left: -1.5em;
59+
}
60+
.task-list-item input[type="checkbox"] {
61+
margin: 0 0.5em 0 0;
62+
vertical-align: middle;
63+
}
64+
.task-list-item input:checked + p,
65+
.task-list-item input:checked + span,
66+
.task-list-item input:checked {
67+
text-decoration: line-through;
68+
opacity: 0.7;
69+
}
70+
71+
/* Quiz styles */
72+
.quiz-options li {
73+
user-select: none;
74+
transition: all 0.2s ease;
75+
}
76+
.quiz-options li:hover {
77+
transform: translateX(4px);
78+
}
79+
5580
/* Quiz result labels and explanations */
5681
.result-label {
5782
font-weight: 700;

docs/theme/extra.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Task list persistence
2+
(() => {
3+
// Persist task-list checkboxes
4+
const STORAGE_KEY = "skillmap-checklist";
5+
const saved = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}");
6+
7+
// Mark saved states
8+
document.querySelectorAll("ul.task-list input[type=checkbox]").forEach((cb, i) => {
9+
cb.checked = saved[i] ?? cb.checked;
10+
cb.addEventListener("change", () => {
11+
saved[i] = cb.checked;
12+
localStorage.setItem(STORAGE_KEY, JSON.stringify(saved));
13+
});
14+
});
15+
})();

docs/theme/quiz.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ document.addEventListener("DOMContentLoaded", () => {
1818
document.querySelectorAll(".quiz-options").forEach((list) => {
1919
list.querySelectorAll("li").forEach((li) => {
2020
li.addEventListener("click", (e) => {
21+
const li = e.currentTarget; // Use the element that was actually clicked
2122
// Prevent multiple clicks
2223
if (li.classList.contains("clicked")) return;
2324

mkdocs.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@ theme:
1919
- extra.css
2020
extra_javascript:
2121
- quiz.js
22+
- extra.js
2223

2324
markdown_extensions:
2425
- admonition
2526
- pymdownx.superfences
2627
- pymdownx.tabbed
28+
- pymdownx.tasklist:
29+
custom_checkbox: true
30+
clickable_checkbox: true
31+
class: task-list
2732
- attr_list
2833
- md_in_html
29-
- pymdownx.snippets
3034

3135
plugins:
3236
- search

0 commit comments

Comments
 (0)