1<!DOCTYPE html> 2 3<html lang="zh-CN"> 4 5 6<head> 7 <meta charset="UTF-8" /> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 9 10 <title>è§çåå² - å¤ä¹çµå½±</title> 11 <meta name="keywords" content="è§çåå²,è§é¢åå²,ææ¾è®°å½,å¤ä¹çµå½±, 髿¸ çµå½±, é¢çº¿çµå½±, ææ°ä¸æ , çææ¦, èå çµå½±, çµè§å§, 综èº, 卿¼«, ç»å ¸çµå½±, å è´¹å¨çº¿è§ç, 髿¸ çæº"> 12 <meta name="description" content="æ¥çæ¨å¨å¤ä¹çµå½±çè§çåå²è®°å½ï¼ç»§ç»ä¸æ¬¡ç精彩"> 13
13<script src="/static/tailwind.js"></script>
13 14 15 16<style> 17 18 ::-webkit-scrollbar { 19 width: 8px; 20 height: 8px; 21 } 22 23 ::-webkit-scrollbar-track { 24 background: #ffffff; 25 border-radius: 4px; 26 } 27 28 ::-webkit-scrollbar-thumb { 29 background: linear-gradient(45deg, #3b82f6, #2563eb); 30 border-radius: 4px; 31 transition: all 0.3s ease; 32 border: 2px solid #ffffff; 33 } 34 35 ::-webkit-scrollbar-thumb:hover { 36 background: linear-gradient(45deg, #2563eb, #1d4ed8); 37 } 38 39 * { 40 scrollbar-width: thin; 41 scrollbar-color: #3b82f6 #ffffff; 42 } 43 44 45 * { 46 transition: color 0.2s ease, background-color 0.2s ease; 47 } 48 49 50 .hover-card { 51 transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); 52 } 53 54 .hover-card:hover { 55 transform: translateY(-2px); 56 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 57 } 58 59 60 .btn-ripple { 61 position: relative; 62 overflow: hidden; 63 } 64 65 .btn-ripple::before { 66 content: ''; 67 position: absolute; 68 top: 50%; 69 left: 50%; 70 width: 0; 71 height: 0; 72 border-radius: 50%; 73 background: rgba(255, 255, 255, 0.5); 74 transform: translate(-50%, -50%); 75 transition: width 0.6s, height 0.6s; 76 } 77 78 .btn-ripple:active::before { 79 width: 300px; 80 height: 300px; 81 } 82 83 84 .loading-shimmer { 85 background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); 86 background-size: 200% 100%; 87 animation: shimmer 2s infinite; 88 } 89 90 @keyframes shimmer { 91 0% { 92 background-position: -200% 0; 93 } 94 100% { 95 background-position: 200% 0; 96 } 97 } 98 99 100 .gradient-text { 101 background: linear-gradient(45deg, #3b82f6, #8b5cf6, #ec4899); 102 background-size: 300% 300%; 103 -webkit-background-clip: text; 104 background-clip: text; 105 -webkit-text-fill-color: transparent; 106 animation: gradient 3s ease infinite; 107 } 108 109 @keyframes gradient { 110 0%, 100% { 111 background-position: 0% 50%; 112 } 113 50% { 114 background-position: 100% 50%; 115 } 116 } 117 118 119 @media (max-width: 768px) { 120 .mobile-optimized { 121 padding-left: 1rem; 122 padding-right: 1rem; 123 } 124 125 .mobile-text { 126 font-size: 0.875rem; 127 } 128 } 129 130 131 .domestic-rounded { 132 border-radius: 12px; 133 } 134 135 .domestic-rounded-lg { 136 border-radius: 16px; 137 } 138 139 140 .card-border { 141 border: 1px solid rgba(255, 255, 255, 0.1); 142 backdrop-filter: blur(10px); 143 } 144 145 146 .responsive-text { 147 font-size: clamp(0.875rem, 2vw, 1rem); 148 } 149 150 151 .domestic-shadow { 152 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); 153 } 154 155 .domestic-shadow-lg { 156 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12); 157 } 158 @media (min-width: 768px) { 159 body.has-sidebar { 160 padding-left: 16rem; 161 } 162 body.has-topbar { 163 padding-top: 4rem; 164 } 165 } 166 @media (max-width: 767.98px) { 167 body.has-sidebar { 168 padding-top: 3rem; 169 } 170 } 171</style> 172 173 174</head> 175 176<body class="bg-white text-gray-800 min-h-screen flex flex-col"> 177 <aside id="sidebar" class="hidden md:block fixed top-0 left-0 h-screen w-64 bg-white/95 backdrop-blur-md border-r border-gray-200 z-50 transform transition-transform duration-200 -translate-x-full md:translate-x-0"> 178 <div class="h-16 flex items-center px-4 border-b border-gray-100"> 179 <a href="/" class="flex items-center"> 180 <div class="w-10 h-10 rounded-xl bg-gradient-to-br from-blue-500 via-blue-600 to-blue-700 flex items-center justify-center"> 181 <svg class="w-6 h-6 text-white" fill="currentColor" viewBox="0 0 24 24"> 182 <path d="M8 5v14l11-7z"/> 183 </svg> 184 </div> 185 <div class="ml-3"> 186 <div class="text-base font-bold bg-gradient-to-r from-blue-600 to-blue-500 bg-clip-text text-transparent"> 187 å¤ä¹çµå½± 188 </div> 189 <div class="text-xs text-gray-500"> 190 duomore.cc 191 </div> 192 </div> 193 </a> 194 </div> 195 <div class="px-3 py-3"> 196 <form action="/s" method="get" class="relative"> 197 <input type="text" name="name" id="navSearchInput" placeholder="æå½±ç/æ¼å/导æ¼" class="w-full pl-10 pr-3 py-2 bg-gray-50 border border-gray-200 rounded-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"> 198 <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> 199 <svg class="h-4 w-4 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 200 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 201 </svg> 202 </div> 203 </form> 204 </div> 205 <nav class="px-2 py-2 space-y-3 overflow-y-auto h-[calc(100vh-8rem)]"> 206 <div class="px-2 text-xs font-semibold text-gray-500">å¿«éå ¥å£</div> 207 <div class="space-y-1"> 208 209 <a href="/grouplist.html" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 210 <svg class="mr-2 w-4 h-4 text-current" fill="none" stroke="currentColor" viewBox="0 0 24 24">
210<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6l-2-2H7a2 2 0 00-2 2v12a2 2 0 002 2h3l2-2h4a2 2 0 002-2V8a2 2 0 00-2-2h-4z"/></svg>çå 211 </a> 212 213 <a href="/dianying.html?origin=çè TVèå " class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 214 <svg class="mr-2 w-4 h-4 text-current" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 3h16v16H4zM8 7l8 4-8 4z"/></svg>èå çµå½± 215 </a> 216 <a href="/hot" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 217 <svg class="mr-2 w-4 h-4 text-current" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 14s-1-2 2-5 4-3 4-6c3 3 4 5 4 8a6 6 0 11-12 0z"/></svg>çææ¦å 218 </a> 219 <a href="/his.html" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 220 <svg class="mr-2 w-4 h-4 text-current" 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>è§çåå² 221 </a> 222 <a href="/message.html" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 223 <svg class="mr-2 w-4 h-4 text-current" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 10h8M8 14h5M21 15a2 2 0 01-2 2H8l-4 4V5a2 2 0 012-2h13a2 2 0 012 2z"/></svg>çè¨ 224 </a> 225 </div> 226 <div class="px-2 text-xs font-semibold text-gray-500">åç±»</div> 227 <div class="space-y-1"> 228 229 230 <a href="/dianying" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 231 <span class="mr-2">ð¬</span>çµå½± 232 </a> 233 234 235 <a href="/dianshiju" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 236 <span class="mr-2">ð¬</span>çµè§å§ 237 </a> 238 239 240 <a href="/dongman" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 241 <span class="mr-2">ð¬</span>卿¼« 242 </a> 243 244 245 <a href="/duanju" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 246 <span class="mr-2">ð¬</span>çå§ 247 </a> 248 249 250 <a href="/zongyi" class="flex items-center px-3 py-2 text-sm rounded-lg text-gray-700 hover:bg-gray-50"> 251 <span class="mr-2">ð¬</span>ç»¼èº 252 </a> 253 254 </div> 255 <button id="showDomainPopup" class="w-full mt-2 inline-flex items-center justify-center px-3 py-2 text-sm rounded-lg bg-blue-50 text-blue-600 hover:bg-blue-100 transition-colors"> 256 ð è®°ä½åå 257 </button> 258 </nav> 259</aside> 260<div class="hidden md:flex fixed top-0 left-64 right-0 h-16 bg-white/95 backdrop-blur-md border-b border-gray-200 z-40 items-center px-4"> 261 <a href="/" class="flex items-center mr-6"> 262 <div class="w-8 h-8 rounded-lg bg-gradient-to-br from-blue-500 via-blue-600 to-blue-700 flex items-center justify-center"> 263 <svg class="w-5 h-5 text-white" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg> 264 </div> 265 <span class="ml-2 text-sm font-bold bg-gradient-to-r from-blue-600 to-blue-500 bg-clip-text text-transparent">å¤ä¹çµå½±</span> 266 </a> 267 <nav class="flex-1 flex items-center space-x-2"> 268 269 270 <a href="/dianying" class="px-3 py-1.5 rounded-full text-sm text-gray-700 hover:bg-gray-100">çµå½±</a> 271 272 273 <a href="/dianshiju" class="px-3 py-1.5 rounded-full text-sm text-gray-700 hover:bg-gray-100">çµè§å§</a> 274 275 276 <a href="/dongman" class="px-3 py-1.5 rounded-full text-sm text-gray-700 hover:bg-gray-100">卿¼«</a> 277 278 279 <a href="/duanju" class="px-3 py-1.5 rounded-full text-sm text-gray-700 hover:bg-gray-100">çå§</a> 280 281 282 <a href="/zongyi" class="px-3 py-1.5 rounded-full text-sm text-gray-700 hover:bg-gray-100">综èº</a> 283 284 </nav> 285 <form action="/s" method="get" class="relative w-72"> 286 <input type="text" name="name" placeholder="æç´¢" class="w-full pl-9 pr-3 py-2 bg-gray-50 border border-gray-200 rounded-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"> 287 <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> 288 <svg class="h-4 w-4 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
288<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg> 289 </div> 290 </form> 291 <button id="openQrModalTop" class="ml-3 px-3 py-2 text-sm rounded-full bg-blue-50 text-blue-600 hover:bg-blue-100">æ«ç ææºç«¯</button> 292</div> 293<div class="md:hidden fixed top-0 left-0 right-0 h-12 bg-white/95 backdrop-blur-md border-b border-gray-200 z-40 flex items-center justify-between px-3"> 294 <button id="sidebarToggle" class="w-10 h-10 flex items-center justify-center text-gray-700"> 295 <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 296 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/> 297 </svg> 298 </button> 299 <a href="/" class="text-sm font-semibold text-gray-800">å¤ä¹çµå½±</a> 300 <button id="openQrModalMobile" class="w-10 h-10 flex items-center justify-center text-gray-700"> 301 <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" viewBox="0 0 20 20" fill="currentColor"> 302 <path d="M3 3h4v4H3V3zm5 0h4v4H8V3zm5 0h4v4h-4V3zM3 8h4v4H3V8zm5 0h4v4H8V8zm5 0h4v4h-4V8zM3 13h4v4H3v-4zm10 0h4v4h-4v-4z" /> 303 </svg> 304 </button> 305</div> 306<div id="sidebarMask" class="fixed inset-0 bg-black/40 z-40 hidden"></div>
307<script> 308 document.body.classList.add('has-sidebar','has-topbar'); 309 var mask=document.getElementById('sidebarMask'); 310 var toggle=document.getElementById('sidebarToggle'); 311 var sidebar=document.getElementById('sidebar'); 312 function openSidebar(){ 313 mask.classList.remove('hidden'); 314 if(sidebar){ 315 sidebar.classList.remove('hidden'); 316 sidebar.classList.remove('-translate-x-full'); 317 } 318 } 319 function closeSidebar(){ 320 mask.classList.add('hidden'); 321 if(sidebar){ 322 sidebar.classList.add('-translate-x-full'); 323 sidebar.classList.add('hidden'); 324 } 325 } 326 if(toggle){ 327 toggle.addEventListener('click',function(){openSidebar()}); 328 } 329 if(mask){ 330 mask.addEventListener('click',function(){closeSidebar()}); 331 } 332 document.addEventListener('keydown',function(e){ 333 if(e.key==='Escape'){ closeSidebar(); } 334 }); 335 var navLinks=document.querySelectorAll('#sidebar a[href]'); 336 navLinks.forEach(function(a){ 337 a.addEventListener('click',function(){ closeSidebar(); }); 338 }); 339 var navSearch=document.getElementById('navSearchInput'); 340 if(navSearch){ 341 ['focus','click'].forEach(function(ev){ 342 navSearch.addEventListener(ev,function(){ window.location.href='/s'; }); 343 }); 344 } 345 var mobileBar=document.querySelector('.md\\:hidden'); 346 if(mobileBar){ 347 var mobileBtn=mobileBar.querySelector('#showDomainPopup'); 348 if(mobileBtn){ 349 mobileBtn.removeAttribute('id'); 350 mobileBtn.setAttribute('aria-label','æç´¢'); 351 mobileBtn.onclick=function(){ window.location.href='/s'; }; 352 mobileBtn.innerHTML='<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg>'; 353 } 354 } 355 function openQrModal(){ 356 var modal=document.getElementById('qrModal'); 357 var img=document.getElementById('qrImage'); 358 var input=document.getElementById('qrUrl'); 359 var url=window.location.href; 360 input.value=url; 361 img.src='/api/qrcode?url='+encodeURIComponent(url); 362 modal.classList.remove('hidden'); 363 modal.classList.add('flex'); 364 } 365 function closeQrModal(){ 366 var modal=document.getElementById('qrModal'); 367 modal.classList.add('hidden'); 368 modal.classList.remove('flex'); 369 } 370 var openTop=document.getElementById('openQrModalTop'); 371 if(openTop){ openTop.addEventListener('click',openQrModal); } 372 var openMobile=document.getElementById('openQrModalMobile'); 373 if(openMobile){ openMobile.addEventListener('click',openQrModal); } 374</script>
374 375<div id="domainPopup" class="fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center hidden"> 376 <div class="bg-white rounded-lg p-6 max-w-md mx-4 relative"> 377 <button id="closeDomainPopup" class="absolute top-2 right-2 text-gray-500 hover:text-gray-700"> 378 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 379 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> 380 </svg> 381 </button> 382 <div class="text-center"> 383 <h3 class="text-xl font-bold text-blue-600 mb-4">æ³è½»æ¾è®°ä½æ¬ç«åååï¼</h3> 384 <p class="text-lg font-medium mb-4">è®°ä½"<span class="text-blue-500 font-bold">duomore.cc</span>"å°±å¤äºï¼</p> 385 <div class="bg-gray-100 p-3 rounded-lg mb-4"> 386 <p class="text-sm mb-2">æç¤ºï¼</p> 387 <p class="text-sm text-gray-700">å°æ¬ç«ååå å ¥æµè§å¨ä¹¦ç¾ææ¡é¢å¿«æ·æ¹å¼ï¼è®¿é®æ´å¿«æ·ã</p> 388 </div> 389 <div class="bg-blue-50 p-3 rounded-lg"> 390 <p class="text-sm font-medium mb-2">è¿å ¥æ¹æ³ï¼</p> 391 <p class="text-sm">æå¼ä»»ææµè§å¨ï¼ç¹å»å°åæ è¾å ¥"<span class="text-blue-500 font-bold">duomore.cc</span>"å¹¶å车ï¼å³å¯å¿«éè¿å ¥æ¬ç«ã</p> 392 </div> 393 </div> 394 </div> 395</div> 396<div id="qrModal" class="fixed inset-0 bg-black bg-opacity-50 z-50 hidden items-center justify-center"> 397 <div class="bg-white rounded-lg p-6 max-w-md w-full mx-4 relative"> 398 <button onclick="closeQrModal()" class="absolute top-2 right-2 text-gray-500 hover:text-gray-700"> 399 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 400 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> 401 </svg> 402 </button> 403 <div class="text-center"> 404 <div class="text-sm text-gray-600 mb-2">ç¨ææºæ«ç 卿æºç«¯æå¼å½å页é¢</div>
405 <img id="qrImage" src="" alt="äºç»´ç " class="w-48 h-48 mx-auto rounded border border-gray-100"> 406 <div class="mt-3"> 407 <input id="qrUrl" readonly class="w-full px-3 py-2 border border-gray-300 rounded bg-gray-50 text-sm" /> 408 </div> 409 </div> 410 </div> 411</div>
412<script> 413 document.addEventListener('DOMContentLoaded', function() { 414 var showDomainPopupBtn = document.getElementById('showDomainPopup'); 415 var domainPopup = document.getElementById('domainPopup'); 416 var closeDomainPopupBtn = document.getElementById('closeDomainPopup'); 417 if(showDomainPopupBtn && domainPopup && closeDomainPopupBtn){ 418 showDomainPopupBtn.addEventListener('click', function() { 419 domainPopup.classList.remove('hidden'); 420 }); 421 closeDomainPopupBtn.addEventListener('click', function() { 422 domainPopup.classList.add('hidden'); 423 }); 424 domainPopup.addEventListener('click', function(e) { 425 if (e.target === domainPopup) { 426 domainPopup.classList.add('hidden'); 427 } 428 }); 429 } 430 }); 431</script>
431 432 433 434 435 <main class="flex-1 w-full max-w-6xl mx-auto px-4 py-4"> 436 437 <section class="mb-6"> 438 <div class="flex items-center justify-between mb-4"> 439 <div class="flex items-center"> 440 <svg t="1762952221381" class="icon w-6 h-6 mr-2" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9001" width="24" height="24"> 441 <path d="M472.615385 78.769231C212.676923 78.769231 0 291.446154 0 551.384615s212.676923 472.615385 472.615385 472.615385 472.615385-212.676923 472.615384-472.615385H472.615385V78.769231z" fill="#3b82f6" p-id="9002"></path> 442 <path d="M1024 472.615385c0-259.938462-212.676923-472.615385-472.615385-472.615385v472.615385h472.615385z" fill="#bfdbfe" p-id="9003"></path> 443 </svg> 444 <span class="text-gray-500 text-sm ml-2">æè¿è§ççè§é¢</span> 445 </div> 446 <button id="clearHistory" class="px-4 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded text-sm transition-colors duration-200 flex items-center"> 447 <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 448 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path> 449 </svg> 450 æ¸ ç©ºåå² 451 </button> 452 </div> 453 </section> 454 455 456 <section class="mb-8"> 457 <div id="historyContainer" class="grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6 gap-2"> 458 459 </div> 460 461 462 <div id="emptyHistory" class="hidden text-center py-12"> 463 <svg class="w-16 h-16 mx-auto text-gray-400 mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 464 <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"></path> 465 </svg> 466 <h3 class="text-lg font-medium text-gray-600 mb-2">ææ è§çåå²</h3> 467 <p class="text-gray-500 mb-4">æ¨è¿æ²¡æè§çè¿ä»»ä½è§é¢</p> 468 <a href="/" class="inline-flex items-center px-4 py-2 bg-red-500 hover:bg-red-600 text-white rounded transition-colors duration-200"> 469 <span>å»åç°ç²¾å½©è§é¢</span> 470 <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 ml-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"> 471 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" /> 472 </svg> 473 </a> 474 </div> 475 </section> 476 </main> 477 478 479<footer class="bg-white text-gray-700 border-t border-gray-200"> 480 <div class="max-w-7xl mx-auto px-3 sm:px-4 py-6"> 481 482 <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4"> 483 <div> 484 <div class="text-sm font-semibold bg-gradient-to-r from-blue-600 to-blue-500 bg-clip-text text-transparent">å¤ä¹çµå½±</div> 485 <div class="text-xs text-gray-500 mt-1">髿¸ å½±è§å å®¹ï¼æ´æ°åæ¶ï¼ç®æ´è§çä½éª</div> 486 </div> 487 488 </div> 489 490 <div class="mt-4"> 491 <div class="text-xs font-semibold text-gray-700">ç«ç¹å¯¼èª</div> 492 <div class="mt-2 flex flex-wrap gap-2"> 493 494 <a href="https://2fuye.com/" target="_blank" rel="noopener" class="px-2 py-1 bg-gray-100 hover:bg-blue-100 text-gray-700 hover:text-blue-700 border border-gray-200 rounded text-xs transition-colors"> 495 å¯è£å½±è§ 496 </a> 497 498 <a href="https://52cmq.com/" target="_blank" rel="noopener" class="px-2 py-1 bg-gray-100 hover:bg-blue-100 text-gray-700 hover:text-blue-700 border border-gray-200 rounded text-xs transition-colors"> 499 èµç¾å½±è§ 500 </a> 501 502 <a href="https://67678game.com/" target="_blank" rel="noopener" class="px-2 py-1 bg-gray-100 hover:bg-blue-100 text-gray-700 hover:text-blue-700 border border-gray-200 rounded text-xs transition-colors"> 503 éåå½±è§ 504 </a> 505 506 <a href="https://apk1.wzyzz.app/" target="_blank" rel="noopener" class="px-2 py-1 bg-gray-100 hover:bg-blue-100 text-gray-700 hover:text-blue-700 border border-gray-200 rounded text-xs transition-colors"> 507 çè TV 508 </a> 509 510 </div> 511 </div> 512 <div class="mt-6 flex flex-col md:flex-row md:items-center md:justify-between gap-4"> 513 <div class="text-xs text-gray-500">© 2026 å¤ä¹çµå½± | ä¿çæææå©</div> 514 <div class="text-xs text-gray-600">
515 <span id="siteTime">å è½½ä¸...</span> 516 </div> 517 </div> 518 </div> 519</footer> 520 521
522<script> 523function updateSiteTime() { 524 var startTime = new Date('2024-01-01 00:00:00').getTime(); 525 var currentTime = new Date().getTime(); 526 var timeDiff = currentTime - startTime; 527 528 var days = Math.floor(timeDiff / (1000 * 60 * 60 * 24)); 529 var hours = Math.floor((timeDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 530 var minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60)); 531 var seconds = Math.floor((timeDiff % (1000 * 60)) / 1000); 532 533 document.getElementById('siteTime').innerHTML = 'å·²è¿è¡ ' + days + ' 天 ' + hours + ' å°æ¶ ' + minutes + ' å ' + seconds + ' ç§'; 534} 535 536setInterval(updateSiteTime, 1000); 537updateSiteTime(); 538</script>
538 539
540<script> 541 542 class LazyImageLoader { 543 constructor() { 544 this.imageObserver = null; 545 this.init(); 546 } 547 548 init() { 549 550 if ('IntersectionObserver' in window) { 551 this.imageObserver = new IntersectionObserver((entries, observer) => { 552 entries.forEach(entry => { 553 if (entry.isIntersecting) { 554 this.loadImage(entry.target); 555 observer.unobserve(entry.target); 556 } 557 }); 558 }, { 559 rootMargin: '50px 20px', 560 }); 561 562 563 const lazyImages = document.querySelectorAll('.lazy-image'); 564 lazyImages.forEach(image => { 565 this.imageObserver.observe(image); 566 }); 567 } else { 568 569 this.loadAllImages(); 570 } 571 } 572 573 loadImage(image) { 574 const src = image.dataset.src; 575 const srcset = image.dataset.srcset; 576 577 if (srcset) { 578 image.srcset = srcset; 579 } 580 581 if (src) { 582 image.src = src; 583 } 584 585 image.classList.add('loaded'); 586 image.classList.remove('lazy-image'); 587 } 588 589 loadAllImages() { 590 const lazyImages = document.querySelectorAll('.lazy-image'); 591 lazyImages.forEach(image => { 592 this.loadImage(image); 593 }); 594 } 595 } 596 597 598 document.addEventListener('DOMContentLoaded', () => { 599 new LazyImageLoader(); 600 }); 601</script>
601 602 603 604 605
605<script> 606 607 function loadHistory() { 608 const historyContainer = document.getElementById('historyContainer'); 609 const emptyHistory = document.getElementById('emptyHistory'); 610 611 let history = localStorage.getItem("history"); 612 if (history) { 613 history = JSON.parse(history); 614 615 history.sort((a, b) => b.time - a.time); 616 617 if (history.length > 0) { 618 historyContainer.innerHTML = history.map(item => createHistoryItem(item)).join(''); 619 historyContainer.classList.remove('hidden'); 620 emptyHistory.classList.add('hidden'); 621 } else { 622 historyContainer.innerHTML = ''; 623 historyContainer.classList.add('hidden'); 624 emptyHistory.classList.remove('hidden'); 625 } 626 } else { 627 historyContainer.innerHTML = ''; 628 historyContainer.classList.add('hidden'); 629 emptyHistory.classList.remove('hidden'); 630 } 631 } 632 633 634 function createHistoryItem(item) { 635 const date = new Date(item.time); 636 const dateStr = date.toLocaleDateString('zh-CN'); 637 const timeStr = date.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }); 638 639 return ` 640 <div class="group bg-white rounded-lg border border-gray-200 overflow-hidden hover:shadow-lg transition-all duration-300 hover:-translate-y-1"> 641 <a href="${item.url}" class="block w-full aspect-[3/4] relative overflow-hidden"> 642 <img loading="lazy" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-110" 643 alt="${item.name}" 644 src="${item.imgurl}" 645 decoding="async" 646 onerror="this.src='/static/image_not_found.svg'" 647 /> 648 ${item.remark ? `<div class="absolute top-0 right-0 bg-blue-500 text-white px-1 py-1 text-xs font-medium">${item.remark}</div>` : ''} 649 ${item.year ? `<div class="absolute top-0 left-0 text-white px-1 py-1 text-xs font-medium bg-black bg-opacity-70">${item.year}</div>` : ''} 650 <div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-2"> 651 <div class="text-white text-xs"> 652 <div class="font-medium">${dateStr}</div> 653 <div>${timeStr}</div> 654 </div> 655 </div> 656 </a> 657 <div class="p-3"> 658 <h3 class="text-sm font-medium line-clamp-2 text-gray-800 group-hover:text-blue-600 transition-colors duration-200 mb-2">${item.name}</h3> 659 <div class="flex items-center justify-between text-xs text-gray-500"> 660 <span>${dateStr}</span> 661 <button onclick="removeHistoryItem('${item.url}')" class="text-blue-500 hover:text-blue-700 transition-colors" title="å é¤è®°å½"> 662 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 663 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path> 664 </svg> 665 </button> 666 </div> 667 </div> 668 </div> 669 `; 670 } 671 672 673 function removeHistoryItem(url) { 674 if (confirm('ç¡®å®è¦å é¤è¿æ¡è§çè®°å½åï¼')) { 675 let history = localStorage.getItem("history"); 676 if (history) { 677 history = JSON.parse(history); 678 history = history.filter(item => item.url !== url); 679 localStorage.setItem("history", JSON.stringify(history)); 680 loadHistory(); 681 } 682 } 683 } 684 685 686 function clearAllHistory() { 687 if (confirm('ç¡®å®è¦æ¸ 空ææè§çåå²åï¼æ¤æä½ä¸å¯æ¢å¤ã')) { 688 localStorage.removeItem("history"); 689 loadHistory(); 690 } 691 } 692 693 694 document.addEventListener('DOMContentLoaded', function() { 695 loadHistory(); 696 697 698 document.getElementById('clearHistory').addEventListener('click', clearAllHistory); 699 }); 700 </script>
vendor: 2 bytes, line 700
700
701<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e653afe32fd441f6bef18da57e4428f9","r":1,"spa":2}' crossorigin="anonymous"></script>
701 702</body> 703</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.