Compare commits
4 Commits
master
...
27c801a7fd
Generated
+16
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "class-anniversary",
|
"name": "class-anniversary",
|
||||||
"version": "0.3.0",
|
"version": "1.0.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "class-anniversary",
|
"name": "class-anniversary",
|
||||||
"version": "0.3.0",
|
"version": "1.0.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/check": "^0.9.9",
|
"@astrojs/check": "^0.9.9",
|
||||||
"astro": "^6.2.1",
|
"astro": "^6.2.1",
|
||||||
@@ -2090,6 +2090,20 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/astro/node_modules/typescript": {
|
||||||
|
"version": "5.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||||
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||||
|
"extraneous": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/axobject-query": {
|
"node_modules/axobject-query": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "class-anniversary",
|
"name": "class-anniversary",
|
||||||
"version": "0.3.0",
|
"version": "1.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -228,6 +228,16 @@ let questionNumber = 0;
|
|||||||
}
|
}
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="score-fab"
|
||||||
|
type="button"
|
||||||
|
aria-controls="scorer"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-label="打开答题卡"
|
||||||
|
data-score-toggle
|
||||||
|
>
|
||||||
|
答
|
||||||
|
</button>
|
||||||
<aside class="score-sidebar" id="scorer" aria-label="答题卡">
|
<aside class="score-sidebar" id="scorer" aria-label="答题卡">
|
||||||
<form class="score-panel" id="exam-scorer">
|
<form class="score-panel" id="exam-scorer">
|
||||||
<div class="score-sidebar-head">
|
<div class="score-sidebar-head">
|
||||||
@@ -357,6 +367,8 @@ let questionNumber = 0;
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
const scorer = document.querySelector("#exam-scorer");
|
const scorer = document.querySelector("#exam-scorer");
|
||||||
|
const scoreSidebar = document.querySelector("#scorer");
|
||||||
|
const scoreToggle = document.querySelector("[data-score-toggle]");
|
||||||
const candidateName = document.querySelector("#candidate-name");
|
const candidateName = document.querySelector("#candidate-name");
|
||||||
const admissionNumber = document.querySelector("#admission-number");
|
const admissionNumber = document.querySelector("#admission-number");
|
||||||
const seatNumber = document.querySelector("#seat-number");
|
const seatNumber = document.querySelector("#seat-number");
|
||||||
@@ -365,6 +377,16 @@ let questionNumber = 0;
|
|||||||
const cardSeatNumber = document.querySelector("#card-seat-number");
|
const cardSeatNumber = document.querySelector("#card-seat-number");
|
||||||
const draftStorageKey = "examDraft";
|
const draftStorageKey = "examDraft";
|
||||||
|
|
||||||
|
const setScoreMenuOpen = (isOpen) => {
|
||||||
|
scoreSidebar?.classList.toggle("is-open", isOpen);
|
||||||
|
|
||||||
|
if (scoreToggle) {
|
||||||
|
scoreToggle.setAttribute("aria-expanded", String(isOpen));
|
||||||
|
scoreToggle.setAttribute("aria-label", isOpen ? "关闭答题卡" : "打开答题卡");
|
||||||
|
scoreToggle.textContent = isOpen ? "×" : "答";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const normalizeAnswer = (value) =>
|
const normalizeAnswer = (value) =>
|
||||||
String(value || "")
|
String(value || "")
|
||||||
.trim()
|
.trim()
|
||||||
@@ -754,8 +776,17 @@ let questionNumber = 0;
|
|||||||
behavior: "smooth",
|
behavior: "smooth",
|
||||||
block: "start"
|
block: "start"
|
||||||
});
|
});
|
||||||
|
setScoreMenuOpen(false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
scoreToggle?.addEventListener("click", () => {
|
||||||
|
setScoreMenuOpen(!scoreSidebar?.classList.contains("is-open"));
|
||||||
|
});
|
||||||
|
document.addEventListener("keydown", (event) => {
|
||||||
|
if (event.key === "Escape") {
|
||||||
|
setScoreMenuOpen(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
admissionNumber?.addEventListener("input", () => {
|
admissionNumber?.addEventListener("input", () => {
|
||||||
admissionNumber.value = admissionNumber.value.replace(/\D/g, "").slice(0, admissionNumber.maxLength);
|
admissionNumber.value = admissionNumber.value.replace(/\D/g, "").slice(0, admissionNumber.maxLength);
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import { site } from "../../data/site";
|
|||||||
<div class="result-content" id="result-content" hidden>
|
<div class="result-content" id="result-content" hidden>
|
||||||
<div class="result-head">
|
<div class="result-head">
|
||||||
<div>
|
<div>
|
||||||
<p class="eyebrow">综合素质检测模拟卷</p>
|
<p class="eyebrow">普通高中毕业班综合测试~综合素质检测</p>
|
||||||
<h2 id="result-title">成绩单</h2>
|
<h2 id="result-title">成绩单</h2>
|
||||||
</div>
|
</div>
|
||||||
<button class="score-submit" type="button" id="download-share">下载分享图</button>
|
<button class="score-submit" type="button" id="download-share">下载分享图</button>
|
||||||
|
|||||||
+94
-10
@@ -1178,6 +1178,10 @@ h2 {
|
|||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.score-fab {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.score-panel {
|
.score-panel {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
@@ -1780,7 +1784,7 @@ h2 {
|
|||||||
|
|
||||||
@media (max-width: 820px) {
|
@media (max-width: 820px) {
|
||||||
body:has(.score-sidebar) {
|
body:has(.score-sidebar) {
|
||||||
padding-bottom: min(52vh, 540px);
|
padding-bottom: 86px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-header {
|
.site-header {
|
||||||
@@ -1873,16 +1877,60 @@ h2 {
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.score-fab {
|
||||||
|
position: fixed;
|
||||||
|
right: 18px;
|
||||||
|
bottom: 18px;
|
||||||
|
z-index: 30;
|
||||||
|
width: 58px;
|
||||||
|
height: 58px;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
border: 1px solid rgba(255, 253, 247, 0.62);
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--green);
|
||||||
|
color: #fffdf7;
|
||||||
|
box-shadow: 0 16px 38px rgba(13, 20, 19, 0.28);
|
||||||
|
font: inherit;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 900;
|
||||||
|
line-height: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
transition:
|
||||||
|
background 180ms ease,
|
||||||
|
transform 180ms ease,
|
||||||
|
box-shadow 180ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.score-fab[aria-expanded="true"] {
|
||||||
|
background: var(--coral);
|
||||||
|
transform: scale(1.04);
|
||||||
|
}
|
||||||
|
|
||||||
.score-sidebar {
|
.score-sidebar {
|
||||||
|
position: fixed;
|
||||||
top: auto;
|
top: auto;
|
||||||
left: 12px;
|
left: 12px;
|
||||||
right: 12px;
|
right: 12px;
|
||||||
bottom: 12px;
|
bottom: 88px;
|
||||||
width: auto;
|
width: auto;
|
||||||
max-height: min(46vh, 500px);
|
max-height: min(64vh, 560px);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
background: rgba(255, 253, 247, 0.96);
|
background: rgba(255, 253, 247, 0.96);
|
||||||
box-shadow: 0 18px 44px rgba(13, 20, 19, 0.22);
|
box-shadow: 0 18px 44px rgba(13, 20, 19, 0.22);
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
transform: translateY(14px) scale(0.98);
|
||||||
|
transform-origin: bottom right;
|
||||||
|
transition:
|
||||||
|
opacity 180ms ease,
|
||||||
|
transform 180ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.score-sidebar.is-open {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
transform: translateY(0) scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-panel {
|
.score-panel {
|
||||||
@@ -1890,7 +1938,12 @@ h2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.score-sidebar-head {
|
.score-sidebar-head {
|
||||||
padding: 14px 14px 0;
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1;
|
||||||
|
padding: 12px 14px 8px;
|
||||||
|
border-bottom: 1px solid var(--line);
|
||||||
|
background: rgba(255, 253, 247, 0.98);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-sidebar-head h2 {
|
.score-sidebar-head h2 {
|
||||||
@@ -1903,6 +1956,12 @@ h2 {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.score-sidebar-head p:not(.eyebrow),
|
||||||
|
.answer-card-profile,
|
||||||
|
.score-total-note {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.score-group {
|
.score-group {
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
}
|
}
|
||||||
@@ -1933,12 +1992,20 @@ h2 {
|
|||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.score-total {
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
.score-total > div {
|
.score-total > div {
|
||||||
border-right: 0;
|
border-right: 1px solid var(--line);
|
||||||
border-bottom: 1px solid var(--line);
|
border-bottom: 1px solid var(--line);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-total > div:last-child {
|
.score-total > div:nth-child(even) {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.score-total > div:nth-last-child(-n + 2) {
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2037,11 +2104,13 @@ h2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.exam-paper {
|
.exam-paper {
|
||||||
padding: 16px;
|
padding: 14px;
|
||||||
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exam-paper p {
|
.exam-paper p {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
line-height: 1.78;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exam-paper h2 {
|
.exam-paper h2 {
|
||||||
@@ -2053,8 +2122,9 @@ h2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.exam-question {
|
.exam-question {
|
||||||
grid-template-columns: 32px minmax(0, 1fr);
|
grid-template-columns: 30px minmax(0, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
margin-top: 18px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exam-question-number {
|
.exam-question-number {
|
||||||
@@ -2065,9 +2135,15 @@ h2 {
|
|||||||
|
|
||||||
.exam-options {
|
.exam-options {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
gap: 8px;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.exam-option {
|
||||||
|
min-height: 42px;
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.exam-fill-answer {
|
.exam-fill-answer {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
@@ -2075,6 +2151,7 @@ h2 {
|
|||||||
|
|
||||||
.name-fill-grid {
|
.name-fill-grid {
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 7px;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
@@ -2103,8 +2180,15 @@ h2 {
|
|||||||
.score-sidebar {
|
.score-sidebar {
|
||||||
left: 8px;
|
left: 8px;
|
||||||
right: 8px;
|
right: 8px;
|
||||||
bottom: 8px;
|
bottom: 82px;
|
||||||
max-height: 50vh;
|
max-height: min(66vh, 520px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.score-fab {
|
||||||
|
right: 14px;
|
||||||
|
bottom: 14px;
|
||||||
|
width: 56px;
|
||||||
|
height: 56px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-group h3 {
|
.score-group h3 {
|
||||||
|
|||||||
Reference in New Issue
Block a user