78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
|
|
// HoloLake StyleKit v1.0 · 主题切换 + Toast + 弹窗交互
|
|||
|
|
|
|||
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|||
|
|
|
|||
|
|
// ========== 1. 主题切换 ==========
|
|||
|
|
var themeToggle = document.getElementById('themeToggle');
|
|||
|
|
var themeLabel = document.getElementById('themeLabel');
|
|||
|
|
var html = document.documentElement;
|
|||
|
|
var isDark = true;
|
|||
|
|
|
|||
|
|
themeToggle.addEventListener('click', function() {
|
|||
|
|
isDark = !isDark;
|
|||
|
|
if (isDark) {
|
|||
|
|
html.setAttribute('data-theme', 'dark');
|
|||
|
|
themeLabel.textContent = '🌙 深色';
|
|||
|
|
themeToggle.classList.remove('active');
|
|||
|
|
} else {
|
|||
|
|
html.setAttribute('data-theme', 'light');
|
|||
|
|
themeLabel.textContent = '☀️ 浅色';
|
|||
|
|
themeToggle.classList.add('active');
|
|||
|
|
}
|
|||
|
|
showToast('success', '✨ 已切换到' + (isDark ? '深色' : '浅色') + '主题');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// ========== 2. 弹窗交互 ==========
|
|||
|
|
var modalOverlay = document.getElementById('modalOverlay');
|
|||
|
|
var openBtn = document.getElementById('openModalBtn');
|
|||
|
|
var closeBtn = document.getElementById('closeModalBtn');
|
|||
|
|
var cancelBtn = document.getElementById('cancelModalBtn');
|
|||
|
|
var confirmBtn = document.getElementById('confirmModalBtn');
|
|||
|
|
|
|||
|
|
function openModal() {
|
|||
|
|
modalOverlay.classList.add('open');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function closeModal() {
|
|||
|
|
modalOverlay.classList.remove('open');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
openBtn.addEventListener('click', openModal);
|
|||
|
|
closeBtn.addEventListener('click', closeModal);
|
|||
|
|
cancelBtn.addEventListener('click', closeModal);
|
|||
|
|
confirmBtn.addEventListener('click', function() {
|
|||
|
|
closeModal();
|
|||
|
|
showToast('success', '✅ 已确认!');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 点击遮罩层关闭
|
|||
|
|
modalOverlay.addEventListener('click', function(e) {
|
|||
|
|
if (e.target === modalOverlay) closeModal();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// ========== 3. 卡片点击效果 ==========
|
|||
|
|
var cards = document.querySelectorAll('.card');
|
|||
|
|
cards.forEach(function(card) {
|
|||
|
|
card.addEventListener('click', function() {
|
|||
|
|
var name = card.querySelector('.card-title').textContent;
|
|||
|
|
showToast('info', '👆 你点击了人格体「' + name + '」');
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log('HoloLake StyleKit v1.0 · 主题切换+Toast+弹窗已加载 ✨');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// ========== Toast提示函数(全局) ==========
|
|||
|
|
function showToast(type, message) {
|
|||
|
|
var container = document.getElementById('toastContainer');
|
|||
|
|
var toast = document.createElement('div');
|
|||
|
|
toast.className = 'toast toast-' + type;
|
|||
|
|
toast.textContent = message;
|
|||
|
|
container.appendChild(toast);
|
|||
|
|
|
|||
|
|
// 3秒后自动移除
|
|||
|
|
setTimeout(function() {
|
|||
|
|
if (toast.parentNode) toast.parentNode.removeChild(toast);
|
|||
|
|
}, 3000);
|
|||
|
|
}
|