mobile . themes

This commit is contained in:
2026-03-05 12:57:55 +08:00
parent b5b9f7db06
commit c325007897
62 changed files with 835 additions and 150 deletions

View File

@@ -86,26 +86,31 @@
</div>
{% else %}
<!-- 顶部信息栏 -->
<div class="futuristic-card p-4 sticky top-0 z-20">
<div class="flex justify-between items-center">
<div>
<h1 class="text-lg font-bold bg-gradient-to-r from-purple-600 to-blue-600 bg-clip-text text-transparent">{{ exam.title }}</h1>
<div class="mt-1 text-sm text-slate-500">
{{ exam.subject }} · {{ exam.duration }}分钟 · 满分{{ exam.total_score }}分
<div class="futuristic-card p-4 sticky top-0 z-20 shadow-lg">
<div class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-3">
<div class="flex-1 min-w-0">
<h1 class="text-lg sm:text-xl font-bold bg-gradient-to-r from-purple-600 to-blue-600 bg-clip-text text-transparent truncate">{{ exam.title }}</h1>
<div class="mt-1 text-xs sm:text-sm text-slate-500 flex flex-wrap gap-2">
<span>{{ exam.subject }}</span>
<span>·</span>
<span>{{ exam.duration }}分钟</span>
<span>·</span>
<span>满分{{ exam.total_score }}分</span>
{% if exam.scheduled_end %}
· 截止:{{ exam.scheduled_end.strftime('%m-%d %H:%M') }}
<span>·</span>
<span>截止:{{ exam.scheduled_end.strftime('%m-%d %H:%M') }}</span>
{% endif %}
</div>
</div>
<div class="flex items-center space-x-4">
<div class="text-sm text-slate-500">
<div class="flex items-center gap-3 sm:gap-4 flex-wrap">
<div class="text-xs sm:text-sm text-slate-500 whitespace-nowrap">
<span id="progress-text">0</span>/{{ questions|length }} 已答
</div>
<div class="flex items-center text-red-600 font-medium">
<svg class="w-5 h-5 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
<div class="flex items-center text-red-600 font-medium text-sm sm:text-base whitespace-nowrap">
<svg class="w-4 h-4 sm:w-5 sm:h-5 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
<span id="timer">--:--:--</span>
</div>
<div id="tab-warning" class="hidden text-xs text-orange-600 bg-orange-50 px-2 py-1 rounded">
<div id="tab-warning" class="hidden text-xs text-orange-600 bg-orange-50 px-2 py-1 rounded whitespace-nowrap">
切屏 <span id="tab-count">0</span>
</div>
</div>
@@ -180,7 +185,7 @@
{% for opt in q.options %}
<label class="flex items-center space-x-3 p-3 rounded-lg border border-slate-200 hover:bg-slate-50 cursor-pointer transition-colors option-label" data-qid="{{ q.id }}">
<input type="radio" name="q-{{ q.id }}" value="{{ ['A','B','C','D'][loop.index0] }}" class="h-4 w-4 text-primary border-slate-300 focus:ring-primary answer-input" data-qid="{{ q.id }}" onchange="onAnswerChange({{ q.id }})">
<span class="text-slate-700">{{ ['A','B','C','D'][loop.index0] }}. {{ opt }}</span>
<span class="text-slate-700 option-text">{{ ['A','B','C','D'][loop.index0] }}. {{ opt|safe }}</span>
</label>
{% endfor %}
</div>