Skip to content

Commit 7847f37

Browse files
committed
2 parents e467b39 + 2ffac07 commit 7847f37

1 file changed

Lines changed: 89 additions & 23 deletions

File tree

docs/.vitepress/theme/components/Donate.vue

Lines changed: 89 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,52 @@
1919
</template>
2020

2121
<script setup>
22-
el.addEventListener('click', ()=>{
23-
const overlay = document.createElement('div');
24-
overlay.className = 'modal-overlay';
25-
26-
const modal = document.createElement('div');
27-
modal.className = 'modal-card';
28-
modal.innerHTML = `
29-
<img src="${el.querySelector('img').src}" alt="二维码">
30-
<div class="modal-title">SecRandom团队再次感谢您的支持</div>
31-
<div class="modal-subtitle">点击周围空白关闭</div>
32-
`;
33-
34-
overlay.appendChild(modal);
35-
document.body.appendChild(overlay);
36-
37-
// 点击空白关闭
38-
overlay.addEventListener('click', (e)=>{
39-
if(e.target===overlay){
40-
document.body.removeChild(overlay);
41-
}
42-
});
43-
});
44-
});
22+
import { onMounted } from 'vue'
23+
24+
onMounted(() => {
25+
// ===== 1. 销毁 medium-zoom 防止冲突 =====
26+
if (window.__mediumZoom__) {
27+
try {
28+
window.__mediumZoom__.detach()
29+
console.log('medium-zoom 已销毁')
30+
} catch (err) {
31+
console.warn('medium-zoom 销毁失败', err)
32+
}
33+
} else {
34+
// 没挂到 window 上,直接克隆替换所有 img,移除绑定事件
35+
document.querySelectorAll('img').forEach(img => {
36+
img.replaceWith(img.cloneNode(true))
37+
})
38+
console.log('medium-zoom 事件已清除')
39+
}
40+
41+
// ===== 2. 自定义放大逻辑 =====
42+
document.querySelectorAll('.qrcode-wrapper').forEach(el => {
43+
el.addEventListener('click', () => {
44+
const overlay = document.createElement('div')
45+
overlay.className = 'modal-overlay'
46+
47+
const modal = document.createElement('div')
48+
modal.className = 'modal-card'
49+
50+
// 强制放大时尺寸一致
51+
modal.innerHTML = `
52+
<img src="${el.querySelector('img').src}" alt="二维码" style="width: 320px; height: auto; max-width: 80vw; max-height: 70vh; object-fit: contain;">
53+
<div class="modal-title">SecRandom团队再次感谢您的支持</div>
54+
<div class="modal-subtitle">点击周围空白关闭</div>
55+
`
56+
57+
overlay.appendChild(modal)
58+
document.body.appendChild(overlay)
59+
60+
overlay.addEventListener('click', (e) => {
61+
if (e.target === overlay) {
62+
document.body.removeChild(overlay)
63+
}
64+
})
65+
})
66+
})
67+
})
4568
</script>
4669

4770
<style scoped>
@@ -121,5 +144,48 @@ p {
121144
.donate-container { padding: 30px 20px; }
122145
.qrcode-container { gap: 20px; }
123146
.qrcode { width: 110px; height: 110px; }
147+
}
148+
</style>
149+
150+
<!-- 弹窗全局样式 -->
151+
<style>
152+
.modal-overlay {
153+
position: fixed;
154+
inset: 0;
155+
display: flex;
156+
align-items: center;
157+
justify-content: center;
158+
background: rgba(0, 0, 0, 0.45);
159+
z-index: 9999;
160+
}
161+
162+
.modal-card {
163+
background: var(--vp-c-bg, #fff);
164+
border-radius: 20px;
165+
padding: 16px;
166+
box-shadow: 0 20px 60px rgba(0,0,0,0.25);
167+
max-width: 90vw;
168+
max-height: 90vh;
169+
display: flex;
170+
flex-direction: column;
171+
align-items: center;
172+
}
173+
174+
.modal-card img {
175+
display: block;
176+
border-radius: 12px;
177+
}
178+
179+
.modal-title {
180+
margin-top: 12px;
181+
font-weight: 600;
182+
text-align: center;
183+
}
184+
185+
.modal-subtitle {
186+
margin-top: 6px;
187+
font-size: 12px;
188+
opacity: .7;
189+
text-align: center;
124190
}
125191
</style>

0 commit comments

Comments
 (0)