/* Comic Overlay Styles */
#comic-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
z-index: 10000; /* Above everything */
display: flex;
flex-direction: column;
transition: opacity 0.5s ease, visibility 0.5s ease;
}
#comic-overlay.hidden-overlay {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.comic-slider {
flex: 1;
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
scrollbar-width: none; /* Firefox */
}
.comic-slider::-webkit-scrollbar {
display: none; /* Chrome/Safari */
}
.comic-slide {
flex: 0 0 100%;
width: 100%;
height: 100%;
scroll-snap-align: center;
display: flex;
align-items: center;
justify-content: center;
position: relative;
background: #1a1a2e;
}
.comic-slide img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
box-shadow: 0 4px 20px rgba(0,0,0,0.5);
}
.comic-controls {
position: absolute;
bottom: 30px;
left: 0;
width: 100%;
display: flex;
justify-content: center;
z-index: 10;
pointer-events: none; /* Let clicks pass through to slider if needed, but button needs events */
}
.comic-start-btn {
pointer-events: auto;
background: #ff4757;
color: white;
font-weight: bold;
padding: 12px 32px;
border-radius: 50px;
font-size: 18px;
border: 2px solid rgba(255,255,255,0.2);
box-shadow: 0 4px 15px rgba(255, 71, 87, 0.4);
transition: transform 0.2s, box-shadow 0.2s;
cursor: pointer;
animation: pulse 2s infinite;
}
.comic-start-btn:active {
transform: scale(0.95);
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0 rgba(255, 71, 87, 0.4); }
70% { box-shadow: 0 0 0 15px rgba(255, 71, 87, 0); }
100% { box-shadow: 0 0 0 0 rgba(255, 71, 87, 0); }
}
.comic-pagination {
position: absolute;
bottom: 90px;
left: 0;
width: 100%;
display: flex;
justify-content: center;
gap: 8px;
z-index: 10;
}
.comic-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: rgba(255,255,255,0.3);
transition: background 0.3s;
}
.comic-dot.active {
background: #fff;
transform: scale(1.2);
}
完整代码
<div id="app" class="chemistry-demo">
<!-- 3D 视图容器 -->
<div id="molecule-viewer" class="viewer-container"></div>
<!-- UI 界面 -->
<div class="ui-panel" ref="panel">
<div class="header">
<font color=white>咖啡因</font>
<div class="subtitle">Caffeine</div>
</div>
<!-- 化学式 (KaTeX) -->
<div class="formula-card">
<span class="label">化学式:</span>
<!-- 严格遵守三段式:$公式$ + HTML + $公式$ -->
<span class="formula">$C_{8}H_{10}N_{4}O_{2}$</span>
</div>
<!-- 控制按钮 -->
<div class="controls">
<div class="control-group">
<label>显示风格</label>
<div class="btn-row">
<button :class="{ active: style === 'stick' }" @click="setStyle('stick')">球棍</button>
<button :class="{ active: style === 'sphere' }" @click="setStyle('sphere')">填充</button>
<button :class="{ active: style === 'line' }" @click="setStyle('line')">线条</button>
</div>
</div>
<div class="control-group">
<label>交互</label>
<button class="btn-toggle" :class="{ active: isSpinning }" @click="toggleSpin">
{{ isSpinning ? '🛑 停止旋转' : '🔄 自动旋转' }}
</button>
</div>
</div>
</div>
</div>
💡 这段代码完全由 AI 生成。
登录后可复制完整代码