{"id":115,"date":"2026-08-13T19:21:57","date_gmt":"2026-08-13T11:21:57","guid":{"rendered":"http:\/\/supersrui.top\/?p=115"},"modified":"2026-08-13T19:25:27","modified_gmt":"2026-08-13T11:25:27","slug":"_-%e5%92%8c%e6%9c%8b%e5%8f%8b%e5%8e%bb%e7%8e%a9%e4%ba%86","status":"publish","type":"post","link":"https:\/\/supersrui.top\/index.php\/archives\/115","title":{"rendered":"_ \u548c\u670b\u53cb\u53bb\u73a9\u4e86"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5728\u524d\u5f80\u5e7f\u5dde\u7684\u8f66\u4e0a\uff0c\u6211\u770b\u5411\u7a97\u5916\uff0c\u96f6\u661f\u7684\u51e0\u7247\u4e91\u6f02\u6d6e\u5728\u6e5b\u84dd\u7684\u6d77\u6d0b\uff0c\u65e9\u5df2\u5347\u8d77\u7684\u592a\u9633\u7f13\u7f13\u5730\u53d1\u51fa\u5149\u8292\uff1b\u8fd1\u5904\uff0c\u6c34\u6ce5\u6784\u5efa\u7684\u68ee\u6797\u50cf\u8d70\u9a6c\u706f\u4e0a\u7684\u753b\u50cf\uff0c\u4e00\u5ea7\u5ea7\u98de\u901f\u5730\u63a0\u8fc7\u7531\u8f66\u7a97\u4f5c\u4e3a\u753b\u6846\u7684\u753b\u3002\u770b\u770b\u8f66\u5185\uff0c\u5750\u5728\u65c1\u8fb9\u7684\u963f\u97e6\u6b6a\u7740\u5934\u7761\u7740\uff0c\u9633\u5149\u659c\u7167\u5728\u8eab\u4e0a\u3002\u8f66\u5b50\u9ad8\u901f\u9a76\u8fc7\u8def\u9762\u53d1\u51fa\u4f4e\u6c89\u7684\u54cd\u58f0\uff0c\u63d0\u9192\u7740\u6211\u73b0\u5728\u6b63\u80cc\u79bb\u5bb6\u7684\u65b9\u5411\uff0c\u867d\u7136\u53ea\u6709\u4e00\u5929\u7684\u65f6\u95f4\u3002<\/p>\n\n\n\n<!-- ============================================================ -->\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u5355\u5361\u7247\u7248\uff0c\u53ef\u72ec\u7acb\u590d\u5236\u591a\u4e2a\uff09 ===== -->\n<!-- ============================================================ -->\n\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u53ea\u6709\u8fd9\u4e00\u4e2a\uff09 ===== -->\n<div class=\"photo-stack\" id=\"photoStack1\">\n    <div class=\"stack-container\" id=\"stackContainer1\">\n        <div class=\"photo\" data-index=\"0\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351326-DSC02058-scaled-e1786351785150.jpg\" alt=\"\u65c5\u884c\u7167\u72471\">\n          <\/div>\n          <div class=\"photo\" data-index=\"1\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786350948-IMG20260808103612-scaled-e1786351928833.jpg\" alt=\"\u65c5\u884c\u7167\u72472\">\n          <\/div>\n          <div class=\"photo\" data-index=\"2\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786363383-DSC02060-scaled-e1786364191991.jpg\" alt=\"\u65c5\u884c\u7167\u72473\">\n          <\/div>\n          <div class=\"photo\" data-index=\"3\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786363374-DSC02059-scaled-e1786364330674.jpg\" alt=\"\u65c5\u884c\u7167\u72474\">\n          <\/div>\n    <\/div>\n    <div class=\"stack-hint\">\u2190 \u5de6\u53f3\u6ed1\u52a8\u7ffb\u770b \u2192<\/div>\n  <\/div>\n  \n  <!-- ============================================================ -->\n  <!-- ===== CSS \u6837\u5f0f\uff08\u5168\u5c40\uff0c\u53ea\u9700\u4e00\u4efd\uff09 ===== -->\n  <style>\n  \/* ===== \u7167\u7247\u5806\u53e0\u5bb9\u5668 ===== *\/\n  .photo-stack {\n    position: relative;\n    width: 100%;\n    max-width: 600px;\n    margin: 2rem auto;\n    padding: 20px 10px 40px;\n    touch-action: none;\n    user-select: none;\n    -webkit-user-select: none;\n  }\n  \n  .stack-container {\n    position: relative;\n    width: 100%;\n    padding-bottom: 75%; \/* 4:3 \u6bd4\u4f8b *\/\n    perspective: 1200px;\n  }\n  \n  \/* ===== \u6bcf\u5f20\u7167\u7247 ===== *\/\n  .photo {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 16px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15), 0 1px 4px rgba(0, 0, 0, 0.08);\n    background: #fff;\n    overflow: hidden;\n    will-change: transform, opacity, z-index;\n    cursor: grab;\n    transform-origin: center center;\n    transition: none; \/* \u7531 JS \u63a7\u5236 *\/\n  }\n  \n  .photo:active {\n    cursor: grabbing;\n  }\n  \n  .photo img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    border-radius: 16px;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u5f53\u524d\u663e\u793a\u7684\u7167\u7247\uff08\u5c45\u4e2d\uff09 ===== *\/\n  .photo.active {\n    transform: translate(0, 0) rotate(0deg) scale(1) !important;\n    opacity: 1 !important;\n    z-index: 100 !important;\n    cursor: default;\n    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25), 0 4px 12px rgba(0, 0, 0, 0.1);\n  }\n  \n  \/* ===== \u6c89\u5e95\u72b6\u6001 ===== *\/\n  .photo.settled {\n    opacity: 0.4 !important;\n    z-index: 1 !important;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u63d0\u793a\u6587\u5b57 ===== *\/\n  .stack-hint {\n    text-align: center;\n    margin-top: 16px;\n    color: #999;\n    font-size: 13px;\n    letter-spacing: 2px;\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    opacity: 0.7;\n    animation: pulse-hint 3s ease-in-out infinite;\n  }\n  \n  @keyframes pulse-hint {\n    0%, 100% { opacity: 0.5; }\n    50% { opacity: 1; }\n  }\n  \n  \/* ===== shake \u52a8\u753b\uff08\u8fb9\u754c\u63d0\u793a\uff09 ===== *\/\n  @keyframes shake {\n    0%, 100% { transform: translateX(0); }\n    20% { transform: translateX(-10px); }\n    40% { transform: translateX(10px); }\n    60% { transform: translateX(-6px); }\n    80% { transform: translateX(6px); }\n  }\n  .shake-hint {\n    animation: shake 0.4s ease !important;\n  }\n  \n  \/* ===== \u54cd\u5e94\u5f0f ===== *\/\n  @media (max-width: 480px) {\n    .photo-stack {\n      padding: 10px 4px 30px;\n    }\n    .stack-hint {\n      font-size: 11px;\n      margin-top: 12px;\n    }\n  }\n  \n  \/* ===== \u6df1\u8272\u6a21\u5f0f\u9002\u914d\uff08\u8ddf\u968f body.dark\uff09 ===== *\/\n  body.dark .photo {\n    background: #2a2a3a;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n  }\n  body.dark .photo img {\n    filter: brightness(0.95);\n  }\n  body.dark .stack-hint {\n    color: #666;\n  }\n  <\/style>\n  \n  <!-- ============================================================ -->\n  <!-- ===== JavaScript\uff08\u5168\u5c40\u53ea\u9700\u4e00\u4efd\uff0c\u81ea\u52a8\u9002\u914d\u6240\u6709\u7ec4\u4ef6\uff09 ===== -->\n  <script>\n  (function() {\n    'use strict';\n  \n    \/\/ \u67e5\u627e\u9875\u9762\u4e0a\u6240\u6709\u7684\u7167\u7247\u5806\u53e0\u7ec4\u4ef6\n    const stacks = document.querySelectorAll('.photo-stack');\n  \n    if (stacks.length === 0) return;\n  \n    \/\/ ===== \u5de5\u5177\u51fd\u6570\uff1a\u83b7\u53d6\u5806\u53e0\u504f\u79fb\uff08\u6839\u636e\u7d22\u5f15\u548c\u603b\u6570\u52a8\u6001\u8ba1\u7b97\uff09 =====\n    function getStackTransform(index, total) {\n      if (total <= 1) return 'translate(0, 0) rotate(0deg) scale(1)';\n      const progress = index \/ (total - 1);\n      const angle = 4 * (1 - progress);\n      const tx = 8 * (1 - progress) * (index % 2 === 0 ? 1 : -1);\n      const ty = 6 * (1 - progress);\n      const scale = 0.92 + 0.08 * progress;\n      const rotate = angle * (index % 2 === 0 ? 1 : -1);\n      return `translate(${tx}px, ${ty}px) rotate(${rotate}deg) scale(${scale})`;\n    }\n  \n    \/\/ ===== \u904d\u5386\u6bcf\u4e2a\u7ec4\u4ef6\uff0c\u72ec\u7acb\u521d\u59cb\u5316 =====\n    stacks.forEach(function(stackEl) {\n      const container = stackEl.querySelector('.stack-container');\n      const photos = container.querySelectorAll('.photo');\n      const total = photos.length;\n      if (total === 0) return;\n  \n      let currentIndex = total - 1;\n  \n      \/\/ ===== \u521d\u59cb\u5316\u7167\u7247\uff1a\u5e94\u7528\u5806\u53e0\u504f\u79fb =====\n      function initPhotos() {\n        photos.forEach(function(el, i) {\n          el.style.transform = '';\n          el.style.opacity = '';\n          el.style.zIndex = '';\n          el.style.transition = '';\n          el.classList.remove('active', 'settled');\n          el.style.pointerEvents = 'auto';\n          const transform = getStackTransform(i, total);\n          el.style.transform = transform;\n          el.style.opacity = '1';\n          el.style.zIndex = i + 1;\n        });\n        const topPhoto = photos[total - 1];\n        topPhoto.classList.add('active');\n        topPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        topPhoto.style.opacity = '1';\n        topPhoto.style.zIndex = '100';\n        topPhoto.style.pointerEvents = 'auto';\n        currentIndex = total - 1;\n      }\n  \n      \/\/ ===== \u83b7\u53d6\u4e0b\u4e00\u5f20\u7d22\u5f15\uff08\u5faa\u73af\uff09 =====\n      function getNextIndex() {\n        let next = currentIndex - 1;\n        if (next < 0) next = total - 1;\n        return next;\n      }\n  \n      \/\/ ===== \u9707\u52a8\u63d0\u793a =====\n      function shakeHint() {\n        const hint = stackEl.querySelector('.stack-hint');\n        if (hint) {\n          hint.classList.remove('shake-hint');\n          void hint.offsetHeight;\n          hint.classList.add('shake-hint');\n          setTimeout(function() {\n            hint.classList.remove('shake-hint');\n          }, 500);\n        }\n      }\n  \n      \/\/ ===== \u6267\u884c\u6ed1\u52a8 =====\n      function performSwipe(direction) {\n        const nextIndex = getNextIndex();\n        if (nextIndex === currentIndex) {\n          shakeHint();\n          return;\n        }\n  \n        const currentPhoto = photos[currentIndex];\n        const nextPhoto = photos[nextIndex];\n  \n        const dirSign = direction === 'left' ? -1 : 1;\n        const slideX = dirSign * 120;\n        const rotateAngle = dirSign * 8;\n  \n        currentPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.0, 0.64, 1), opacity 0.35s ease';\n        currentPhoto.style.transform = 'translateX(' + slideX + '%) rotate(' + rotateAngle + 'deg) scale(0.85)';\n        currentPhoto.style.opacity = '0';\n        currentPhoto.style.zIndex = '99';\n        currentPhoto.classList.remove('active');\n  \n        nextPhoto.classList.remove('settled');\n        nextPhoto.style.transition = 'none';\n        nextPhoto.style.transform = '';\n        nextPhoto.style.opacity = '';\n        nextPhoto.style.zIndex = '';\n        nextPhoto.style.pointerEvents = 'auto';\n        void nextPhoto.offsetHeight;\n  \n        nextPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.35s ease';\n        nextPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        nextPhoto.style.opacity = '1';\n        nextPhoto.style.zIndex = '100';\n        nextPhoto.classList.add('active');\n  \n        const oldIndex = currentIndex;\n        currentIndex = nextIndex;\n  \n        setTimeout(function() {\n          const oldPhoto = photos[oldIndex];\n          if (oldIndex !== currentIndex) {\n            oldPhoto.style.transition = 'transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.5s ease';\n            const originalTransform = getStackTransform(oldIndex, total);\n            oldPhoto.style.transform = originalTransform;\n            oldPhoto.style.opacity = '0.4';\n            oldPhoto.style.zIndex = '1';\n            oldPhoto.classList.add('settled');\n            oldPhoto.style.pointerEvents = 'none';\n          }\n        }, 480);\n  \n        setTimeout(function() {\n          let zi = 1;\n          photos.forEach(function(el, i) {\n            if (i === currentIndex) {\n              el.style.zIndex = '100';\n            } else if (!el.classList.contains('settled')) {\n              el.style.zIndex = zi;\n              zi++;\n            } else {\n              el.style.zIndex = '1';\n            }\n          });\n        }, 50);\n      }\n  \n      initPhotos();\n  \n      \/\/ ===== \u4e8b\u4ef6\u7ed1\u5b9a =====\n      let mouseStartX = 0, mouseStartY = 0, isMouseDragging = false;\n  \n      stackEl.addEventListener('mousedown', function(e) {\n        if (e.target.closest('.photo')) {\n          mouseStartX = e.clientX;\n          mouseStartY = e.clientY;\n          isMouseDragging = true;\n        }\n      });\n  \n      document.addEventListener('mousemove', function(e) {\n        if (!isMouseDragging) return;\n        const diffX = e.clientX - mouseStartX;\n        const diffY = e.clientY - mouseStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isMouseDragging = false;\n        }\n      });\n  \n      document.addEventListener('mouseup', function() {\n        isMouseDragging = false;\n      });\n  \n      let touchStartX = 0, touchStartY = 0, isTouching = false;\n  \n      stackEl.addEventListener('touchstart', function(e) {\n        const touch = e.touches[0];\n        touchStartX = touch.clientX;\n        touchStartY = touch.clientY;\n        isTouching = true;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchmove', function(e) {\n        if (!isTouching) return;\n        const touch = e.touches[0];\n        const diffX = touch.clientX - touchStartX;\n        const diffY = touch.clientY - touchStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isTouching = false;\n        }\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchend', function() {\n        isTouching = false;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchcancel', function() {\n        isTouching = false;\n      }, { passive: true });\n    });\n  \n    console.log('\ud83d\udcf8 \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\u52a0\u8f7d\u5b8c\u6210\uff0c\u5171 ' + stacks.length + ' \u4e2a\u7ec4\u4ef6');\n  })();\n  <\/script>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f66\u8d70\u4e86\u4e00\u5c0f\u65f6\uff0c\u5730\u94c1\u4e5f\u8d70\u4e86\u4e00\u5c0f\u65f6\u3002\u8d70\u51fa\u5730\u94c1\u7ad9\uff0c\u4e00\u5ea7\u5ea7\u9ad8\u697c\u73af\u7ed5\u5728\u6211\u7684\u5468\u56f4\u3002\u6211\u4eec\u50cf\u51e0\u53ea\u8682\u8681\uff0c\u5728\u4e00\u5ea7\u5ea7\u77f3\u7891\u95f4\u6e38\u8361\u3002\u6211\u4eec\u6253\u7b97\u9a91\u5171\u4eab\u5355\u8f66\u53bb\u5e7f\u4e1c\u7701\u535a\u7269\u9986\uff0c\u4f46\u788d\u4e8e\u963f\u97e6\u7684\u6280\u672f\u6709\u4e9b\u751f\u758f\uff0c\u4e8e\u662f\u6211\u4eec\u627e\u4e86\u4e00\u5904\u516c\u56ed\u7684\u7a7a\u5730\u8ba9\u4ed6\u5728\u8fd9\u91cc\u7ec3\u8f66\uff08\u5982\u7167\u7247\u6240\u793a\uff09\u3002\u6211\u9a91\u4e86\u4e00\u4f1a\u513f\u5c31\u8dd1\u53bb\u6811\u836b\u4e0b\u7684\u6905\u5b50\u4f11\u606f\u3002\u4ef0\u9762\u8eba\u5728\u6905\u5b50\u4e0a\uff0c\u6211\u770b\u89c1\u9633\u5149\u7a7f\u8fc7\u6811\u53f6\u7684\u7f1d\u9699\uff0c\u6811\u53f6\u7684\u7f1d\u9699\u53d8\u6210\u4e00\u9897\u9897\u661f\uff0c\u5728\u6811\u7684\u6446\u52a8\u4e0b\u4e00\u95ea\u4e00\u95ea\u3002\u539f\u6765\u661f\u661f\u4e5f\u60e7\u6015\u592a\u9633\u7684\u5149\u8292\uff0c\u592a\u9633\u4e00\u51fa\u6765\u5b83\u4eec\u5c31\u5168\u8eb2\u5230\u4e86\u6811\u4e0a\u3002\u4e00\u80a1\u51c9\u98ce\u7a7f\u8fc7\u70ed\u6c14\u5439\u8fc7\uff0c\u5e26\u8d70\u6211\u56e0\u70ed\u800c\u611f\u5230\u7684\u70e6\u8e81\u3002<\/p>\n\n\n\n<!-- ============================================================ -->\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u5355\u5361\u7247\u7248\uff0c\u53ef\u72ec\u7acb\u590d\u5236\u591a\u4e2a\uff09 ===== -->\n<!-- ============================================================ -->\n\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u53ea\u6709\u8fd9\u4e00\u4e2a\uff09 ===== -->\n<div class=\"photo-stack\" id=\"photoStack2\">\n    <div class=\"stack-container\" id=\"stackContainer2\">\n        <div class=\"photo\" data-index=\"0\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351115-DSC02087-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72471\">\n          <\/div>\n          <div class=\"photo\" data-index=\"1\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351319-IMG_20260809_120448-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72472\">\n          <\/div>\n          <div class=\"photo\" data-index=\"2\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351159-DSC02068-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72473\">\n          <\/div>\n          <div class=\"photo\" data-index=\"3\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351169-IMG_20260809_121449-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72474\">\n          <\/div>\n    <\/div>\n    <div class=\"stack-hint\">\u2190 \u5de6\u53f3\u6ed1\u52a8\u7ffb\u770b \u2192<\/div>\n  <\/div>\n  \n  <!-- ============================================================ -->\n  <!-- ===== CSS \u6837\u5f0f\uff08\u5168\u5c40\uff0c\u53ea\u9700\u4e00\u4efd\uff09 ===== -->\n  <style>\n  \/* ===== \u7167\u7247\u5806\u53e0\u5bb9\u5668 ===== *\/\n  .photo-stack {\n    position: relative;\n    width: 100%;\n    max-width: 600px;\n    margin: 2rem auto;\n    padding: 20px 10px 40px;\n    touch-action: none;\n    user-select: none;\n    -webkit-user-select: none;\n  }\n  \n  .stack-container {\n    position: relative;\n    width: 100%;\n    padding-bottom: 75%; \/* 4:3 \u6bd4\u4f8b *\/\n    perspective: 1200px;\n  }\n  \n  \/* ===== \u6bcf\u5f20\u7167\u7247 ===== *\/\n  .photo {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 16px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15), 0 1px 4px rgba(0, 0, 0, 0.08);\n    background: #fff;\n    overflow: hidden;\n    will-change: transform, opacity, z-index;\n    cursor: grab;\n    transform-origin: center center;\n    transition: none; \/* \u7531 JS \u63a7\u5236 *\/\n  }\n  \n  .photo:active {\n    cursor: grabbing;\n  }\n  \n  .photo img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    border-radius: 16px;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u5f53\u524d\u663e\u793a\u7684\u7167\u7247\uff08\u5c45\u4e2d\uff09 ===== *\/\n  .photo.active {\n    transform: translate(0, 0) rotate(0deg) scale(1) !important;\n    opacity: 1 !important;\n    z-index: 100 !important;\n    cursor: default;\n    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25), 0 4px 12px rgba(0, 0, 0, 0.1);\n  }\n  \n  \/* ===== \u6c89\u5e95\u72b6\u6001 ===== *\/\n  .photo.settled {\n    opacity: 0.4 !important;\n    z-index: 1 !important;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u63d0\u793a\u6587\u5b57 ===== *\/\n  .stack-hint {\n    text-align: center;\n    margin-top: 16px;\n    color: #999;\n    font-size: 13px;\n    letter-spacing: 2px;\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    opacity: 0.7;\n    animation: pulse-hint 3s ease-in-out infinite;\n  }\n  \n  @keyframes pulse-hint {\n    0%, 100% { opacity: 0.5; }\n    50% { opacity: 1; }\n  }\n  \n  \/* ===== shake \u52a8\u753b\uff08\u8fb9\u754c\u63d0\u793a\uff09 ===== *\/\n  @keyframes shake {\n    0%, 100% { transform: translateX(0); }\n    20% { transform: translateX(-10px); }\n    40% { transform: translateX(10px); }\n    60% { transform: translateX(-6px); }\n    80% { transform: translateX(6px); }\n  }\n  .shake-hint {\n    animation: shake 0.4s ease !important;\n  }\n  \n  \/* ===== \u54cd\u5e94\u5f0f ===== *\/\n  @media (max-width: 480px) {\n    .photo-stack {\n      padding: 10px 4px 30px;\n    }\n    .stack-hint {\n      font-size: 11px;\n      margin-top: 12px;\n    }\n  }\n  \n  \/* ===== \u6df1\u8272\u6a21\u5f0f\u9002\u914d\uff08\u8ddf\u968f body.dark\uff09 ===== *\/\n  body.dark .photo {\n    background: #2a2a3a;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n  }\n  body.dark .photo img {\n    filter: brightness(0.95);\n  }\n  body.dark .stack-hint {\n    color: #666;\n  }\n  <\/style>\n  \n  <!-- ============================================================ -->\n  <!-- ===== JavaScript\uff08\u5168\u5c40\u53ea\u9700\u4e00\u4efd\uff0c\u81ea\u52a8\u9002\u914d\u6240\u6709\u7ec4\u4ef6\uff09 ===== -->\n  <script>\n  (function() {\n    'use strict';\n  \n    \/\/ \u67e5\u627e\u9875\u9762\u4e0a\u6240\u6709\u7684\u7167\u7247\u5806\u53e0\u7ec4\u4ef6\n    const stacks = document.querySelectorAll('.photo-stack');\n  \n    if (stacks.length === 0) return;\n  \n    \/\/ ===== \u5de5\u5177\u51fd\u6570\uff1a\u83b7\u53d6\u5806\u53e0\u504f\u79fb\uff08\u6839\u636e\u7d22\u5f15\u548c\u603b\u6570\u52a8\u6001\u8ba1\u7b97\uff09 =====\n    function getStackTransform(index, total) {\n      if (total <= 1) return 'translate(0, 0) rotate(0deg) scale(1)';\n      const progress = index \/ (total - 1);\n      const angle = 4 * (1 - progress);\n      const tx = 8 * (1 - progress) * (index % 2 === 0 ? 1 : -1);\n      const ty = 6 * (1 - progress);\n      const scale = 0.92 + 0.08 * progress;\n      const rotate = angle * (index % 2 === 0 ? 1 : -1);\n      return `translate(${tx}px, ${ty}px) rotate(${rotate}deg) scale(${scale})`;\n    }\n  \n    \/\/ ===== \u904d\u5386\u6bcf\u4e2a\u7ec4\u4ef6\uff0c\u72ec\u7acb\u521d\u59cb\u5316 =====\n    stacks.forEach(function(stackEl) {\n      const container = stackEl.querySelector('.stack-container');\n      const photos = container.querySelectorAll('.photo');\n      const total = photos.length;\n      if (total === 0) return;\n  \n      let currentIndex = total - 1;\n  \n      \/\/ ===== \u521d\u59cb\u5316\u7167\u7247\uff1a\u5e94\u7528\u5806\u53e0\u504f\u79fb =====\n      function initPhotos() {\n        photos.forEach(function(el, i) {\n          el.style.transform = '';\n          el.style.opacity = '';\n          el.style.zIndex = '';\n          el.style.transition = '';\n          el.classList.remove('active', 'settled');\n          el.style.pointerEvents = 'auto';\n          const transform = getStackTransform(i, total);\n          el.style.transform = transform;\n          el.style.opacity = '1';\n          el.style.zIndex = i + 1;\n        });\n        const topPhoto = photos[total - 1];\n        topPhoto.classList.add('active');\n        topPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        topPhoto.style.opacity = '1';\n        topPhoto.style.zIndex = '100';\n        topPhoto.style.pointerEvents = 'auto';\n        currentIndex = total - 1;\n      }\n  \n      \/\/ ===== \u83b7\u53d6\u4e0b\u4e00\u5f20\u7d22\u5f15\uff08\u5faa\u73af\uff09 =====\n      function getNextIndex() {\n        let next = currentIndex - 1;\n        if (next < 0) next = total - 1;\n        return next;\n      }\n  \n      \/\/ ===== \u9707\u52a8\u63d0\u793a =====\n      function shakeHint() {\n        const hint = stackEl.querySelector('.stack-hint');\n        if (hint) {\n          hint.classList.remove('shake-hint');\n          void hint.offsetHeight;\n          hint.classList.add('shake-hint');\n          setTimeout(function() {\n            hint.classList.remove('shake-hint');\n          }, 500);\n        }\n      }\n  \n      \/\/ ===== \u6267\u884c\u6ed1\u52a8 =====\n      function performSwipe(direction) {\n        const nextIndex = getNextIndex();\n        if (nextIndex === currentIndex) {\n          shakeHint();\n          return;\n        }\n  \n        const currentPhoto = photos[currentIndex];\n        const nextPhoto = photos[nextIndex];\n  \n        const dirSign = direction === 'left' ? -1 : 1;\n        const slideX = dirSign * 120;\n        const rotateAngle = dirSign * 8;\n  \n        currentPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.0, 0.64, 1), opacity 0.35s ease';\n        currentPhoto.style.transform = 'translateX(' + slideX + '%) rotate(' + rotateAngle + 'deg) scale(0.85)';\n        currentPhoto.style.opacity = '0';\n        currentPhoto.style.zIndex = '99';\n        currentPhoto.classList.remove('active');\n  \n        nextPhoto.classList.remove('settled');\n        nextPhoto.style.transition = 'none';\n        nextPhoto.style.transform = '';\n        nextPhoto.style.opacity = '';\n        nextPhoto.style.zIndex = '';\n        nextPhoto.style.pointerEvents = 'auto';\n        void nextPhoto.offsetHeight;\n  \n        nextPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.35s ease';\n        nextPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        nextPhoto.style.opacity = '1';\n        nextPhoto.style.zIndex = '100';\n        nextPhoto.classList.add('active');\n  \n        const oldIndex = currentIndex;\n        currentIndex = nextIndex;\n  \n        setTimeout(function() {\n          const oldPhoto = photos[oldIndex];\n          if (oldIndex !== currentIndex) {\n            oldPhoto.style.transition = 'transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.5s ease';\n            const originalTransform = getStackTransform(oldIndex, total);\n            oldPhoto.style.transform = originalTransform;\n            oldPhoto.style.opacity = '0.4';\n            oldPhoto.style.zIndex = '1';\n            oldPhoto.classList.add('settled');\n            oldPhoto.style.pointerEvents = 'none';\n          }\n        }, 480);\n  \n        setTimeout(function() {\n          let zi = 1;\n          photos.forEach(function(el, i) {\n            if (i === currentIndex) {\n              el.style.zIndex = '100';\n            } else if (!el.classList.contains('settled')) {\n              el.style.zIndex = zi;\n              zi++;\n            } else {\n              el.style.zIndex = '1';\n            }\n          });\n        }, 50);\n      }\n  \n      initPhotos();\n  \n      \/\/ ===== \u4e8b\u4ef6\u7ed1\u5b9a =====\n      let mouseStartX = 0, mouseStartY = 0, isMouseDragging = false;\n  \n      stackEl.addEventListener('mousedown', function(e) {\n        if (e.target.closest('.photo')) {\n          mouseStartX = e.clientX;\n          mouseStartY = e.clientY;\n          isMouseDragging = true;\n        }\n      });\n  \n      document.addEventListener('mousemove', function(e) {\n        if (!isMouseDragging) return;\n        const diffX = e.clientX - mouseStartX;\n        const diffY = e.clientY - mouseStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isMouseDragging = false;\n        }\n      });\n  \n      document.addEventListener('mouseup', function() {\n        isMouseDragging = false;\n      });\n  \n      let touchStartX = 0, touchStartY = 0, isTouching = false;\n  \n      stackEl.addEventListener('touchstart', function(e) {\n        const touch = e.touches[0];\n        touchStartX = touch.clientX;\n        touchStartY = touch.clientY;\n        isTouching = true;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchmove', function(e) {\n        if (!isTouching) return;\n        const touch = e.touches[0];\n        const diffX = touch.clientX - touchStartX;\n        const diffY = touch.clientY - touchStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isTouching = false;\n        }\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchend', function() {\n        isTouching = false;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchcancel', function() {\n        isTouching = false;\n      }, { passive: true });\n    });\n  \n    console.log('\ud83d\udcf8 \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\u52a0\u8f7d\u5b8c\u6210\uff0c\u5171 ' + stacks.length + ' \u4e2a\u7ec4\u4ef6');\n  })();\n  <\/script>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u4e45\uff0c\u6e29\u5ea6\u8d8a\u6765\u8d8a\u70ed\uff0c\u6811\u836b\u5931\u5b88\u4e86\uff0c\u6211\u4eec\u9003\u8fdb\u4e86\u7701\u535a\uff0c\u4ee5\u6b64\u8eb2\u907f\u70ed\u6c14\u3002\u6211\u4eec\u4ece\u9876\u697c\u901b\u8d77\uff0c\u8fdb\u4e86\u8bb8\u591a\u5c55\u9986\uff0c\u770b\u5230\u5de7\u593a\u5929\u5de5\u7684\u9aa8\u96d5\uff0c\u770b\u4e86\u5404\u79cd\u65f6\u4ee3\u9057\u7559\u4e0b\u6765\u7684\u7269\u54c1\u3002\u4ed6\u4eec\u662f\u65e7\u65f6\u4ee3\u7684\u5b88\u5893\u4eba\uff0c\u6bcf\u4e00\u5904\u88c2\u75d5\u90fd\u5411\u6211\u4eec\u8bc9\u8bf4\u7740\u90a3\u4e2a\u65f6\u4ee3\u7684\u8f89\u714c\u3002\u53ef\u60dc\u6211\u4eec\u53ea\u662f\u8d70\u9a6c\u89c2\u82b1\uff0c\u770b\u770b\u6837\u5b50\uff0c\u62cd\u5f20\u7167\u7247\u5c31\u5306\u5306\u8d70\u8fc7\u3002\u4e5f\u8bb8\u4ee5\u540e\u6211\u80fd\u4ece\u7167\u7247\u4e2d\u8bfb\u61c2\u5b83\u4eec\u80cc\u540e\u80cc\u8d1f\u7684\u5386\u53f2\u5427\u3002<\/p>\n\n\n\n<!-- ============================================================ -->\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u5355\u5361\u7247\u7248\uff0c\u53ef\u72ec\u7acb\u590d\u5236\u591a\u4e2a\uff09 ===== -->\n<!-- ============================================================ -->\n\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u53ea\u6709\u8fd9\u4e00\u4e2a\uff09 ===== -->\n<div class=\"photo-stack\" id=\"photoStack2\">\n    <div class=\"stack-container\" id=\"stackContainer2\">\n        <div class=\"photo\" data-index=\"0\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786618232-IMG_20260813_183438-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72471\">\n        <\/div>\n        <div class=\"photo\" data-index=\"1\">\n          <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351303-DSC02098-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72472\">\n        <\/div>\n        <div class=\"photo\" data-index=\"2\">\n          <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786618237-IMG_20260813_184032.jpg\" alt=\"\u65c5\u884c\u7167\u72473\">\n        <\/div>\n        <div class=\"photo\" data-index=\"2\">\n          <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786351273-IMG20260808151453-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72473\">\n        <\/div>\n    <\/div>\n    <div class=\"stack-hint\">\u2190 \u5de6\u53f3\u6ed1\u52a8\u7ffb\u770b \u2192<\/div>\n  <\/div>\n  \n  <!-- ============================================================ -->\n  <!-- ===== CSS \u6837\u5f0f\uff08\u5168\u5c40\uff0c\u53ea\u9700\u4e00\u4efd\uff09 ===== -->\n  <style>\n  \/* ===== \u7167\u7247\u5806\u53e0\u5bb9\u5668 ===== *\/\n  .photo-stack {\n    position: relative;\n    width: 100%;\n    max-width: 600px;\n    margin: 2rem auto;\n    padding: 20px 10px 40px;\n    touch-action: none;\n    user-select: none;\n    -webkit-user-select: none;\n  }\n                        \n  .stack-container {\n    position: relative;\n    width: 100%;\n    padding-bottom: 75%; \/* 4:3 \u6bd4\u4f8b *\/\n    perspective: 1200px;\n  }\n  \n  \/* ===== \u6bcf\u5f20\u7167\u7247 ===== *\/\n  .photo {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 16px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15), 0 1px 4px rgba(0, 0, 0, 0.08);\n    background: #fff;\n    overflow: hidden;\n    will-change: transform, opacity, z-index;\n    cursor: grab;\n    transform-origin: center center;\n    transition: none; \/* \u7531 JS \u63a7\u5236 *\/\n  }\n  \n  .photo:active {\n    cursor: grabbing;\n  }\n  \n  .photo img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    border-radius: 16px;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u5f53\u524d\u663e\u793a\u7684\u7167\u7247\uff08\u5c45\u4e2d\uff09 ===== *\/\n  .photo.active {\n    transform: translate(0, 0) rotate(0deg) scale(1) !important;\n    opacity: 1 !important;\n    z-index: 100 !important;\n    cursor: default;\n    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25), 0 4px 12px rgba(0, 0, 0, 0.1);\n  }\n  \n  \/* ===== \u6c89\u5e95\u72b6\u6001 ===== *\/\n  .photo.settled {\n    opacity: 0.4 !important;\n    z-index: 1 !important;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u63d0\u793a\u6587\u5b57 ===== *\/\n  .stack-hint {\n    text-align: center;\n    margin-top: 16px;\n    color: #999;\n    font-size: 13px;\n    letter-spacing: 2px;\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    opacity: 0.7;\n    animation: pulse-hint 3s ease-in-out infinite;\n  }\n  \n  @keyframes pulse-hint {\n    0%, 100% { opacity: 0.5; }\n    50% { opacity: 1; }\n  }\n  \n  \/* ===== shake \u52a8\u753b\uff08\u8fb9\u754c\u63d0\u793a\uff09 ===== *\/\n  @keyframes shake {\n    0%, 100% { transform: translateX(0); }\n    20% { transform: translateX(-10px); }\n    40% { transform: translateX(10px); }\n    60% { transform: translateX(-6px); }\n    80% { transform: translateX(6px); }\n  }\n  .shake-hint {\n    animation: shake 0.4s ease !important;\n  }\n  \n  \/* ===== \u54cd\u5e94\u5f0f ===== *\/\n  @media (max-width: 480px) {\n    .photo-stack {\n      padding: 10px 4px 30px;\n    }\n    .stack-hint {\n      font-size: 11px;\n      margin-top: 12px;\n    }\n  }\n  \n  \/* ===== \u6df1\u8272\u6a21\u5f0f\u9002\u914d\uff08\u8ddf\u968f body.dark\uff09 ===== *\/\n  body.dark .photo {\n    background: #2a2a3a;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n  }\n  body.dark .photo img {\n    filter: brightness(0.95);\n  }\n  body.dark .stack-hint {\n    color: #666;\n  }\n  <\/style>\n  \n  <!-- ============================================================ -->\n  <!-- ===== JavaScript\uff08\u5168\u5c40\u53ea\u9700\u4e00\u4efd\uff0c\u81ea\u52a8\u9002\u914d\u6240\u6709\u7ec4\u4ef6\uff09 ===== -->\n  <script>\n  (function() {\n    'use strict';\n  \n    \/\/ \u67e5\u627e\u9875\u9762\u4e0a\u6240\u6709\u7684\u7167\u7247\u5806\u53e0\u7ec4\u4ef6\n    const stacks = document.querySelectorAll('.photo-stack');\n  \n    if (stacks.length === 0) return;\n  \n    \/\/ ===== \u5de5\u5177\u51fd\u6570\uff1a\u83b7\u53d6\u5806\u53e0\u504f\u79fb\uff08\u6839\u636e\u7d22\u5f15\u548c\u603b\u6570\u52a8\u6001\u8ba1\u7b97\uff09 =====\n    function getStackTransform(index, total) {\n      if (total <= 1) return 'translate(0, 0) rotate(0deg) scale(1)';\n      const progress = index \/ (total - 1);\n      const angle = 4 * (1 - progress);\n      const tx = 8 * (1 - progress) * (index % 2 === 0 ? 1 : -1);\n      const ty = 6 * (1 - progress);\n      const scale = 0.92 + 0.08 * progress;\n      const rotate = angle * (index % 2 === 0 ? 1 : -1);\n      return `translate(${tx}px, ${ty}px) rotate(${rotate}deg) scale(${scale})`;\n    }\n  \n    \/\/ ===== \u904d\u5386\u6bcf\u4e2a\u7ec4\u4ef6\uff0c\u72ec\u7acb\u521d\u59cb\u5316 =====\n    stacks.forEach(function(stackEl) {\n      const container = stackEl.querySelector('.stack-container');\n      const photos = container.querySelectorAll('.photo');\n      const total = photos.length;\n      if (total === 0) return;\n  \n      let currentIndex = total - 1;\n  \n      \/\/ ===== \u521d\u59cb\u5316\u7167\u7247\uff1a\u5e94\u7528\u5806\u53e0\u504f\u79fb =====\n      function initPhotos() {\n        photos.forEach(function(el, i) {\n          el.style.transform = '';\n          el.style.opacity = '';\n          el.style.zIndex = '';\n          el.style.transition = '';\n          el.classList.remove('active', 'settled');\n          el.style.pointerEvents = 'auto';\n          const transform = getStackTransform(i, total);\n          el.style.transform = transform;\n          el.style.opacity = '1';\n          el.style.zIndex = i + 1;\n        });\n        const topPhoto = photos[total - 1];\n        topPhoto.classList.add('active');\n        topPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        topPhoto.style.opacity = '1';\n        topPhoto.style.zIndex = '100';\n        topPhoto.style.pointerEvents = 'auto';\n        currentIndex = total - 1;\n      }\n  \n      \/\/ ===== \u83b7\u53d6\u4e0b\u4e00\u5f20\u7d22\u5f15\uff08\u5faa\u73af\uff09 =====\n      function getNextIndex() {\n        let next = currentIndex - 1;\n        if (next < 0) next = total - 1;\n        return next;\n      }\n  \n      \/\/ ===== \u9707\u52a8\u63d0\u793a =====\n      function shakeHint() {\n        const hint = stackEl.querySelector('.stack-hint');\n        if (hint) {\n          hint.classList.remove('shake-hint');\n          void hint.offsetHeight;\n          hint.classList.add('shake-hint');\n          setTimeout(function() {\n            hint.classList.remove('shake-hint');\n          }, 500);\n        }\n      }\n  \n      \/\/ ===== \u6267\u884c\u6ed1\u52a8 =====\n      function performSwipe(direction) {\n        const nextIndex = getNextIndex();\n        if (nextIndex === currentIndex) {\n          shakeHint();\n          return;\n        }\n  \n        const currentPhoto = photos[currentIndex];\n        const nextPhoto = photos[nextIndex];\n  \n        const dirSign = direction === 'left' ? -1 : 1;\n        const slideX = dirSign * 120;\n        const rotateAngle = dirSign * 8;\n  \n        currentPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.0, 0.64, 1), opacity 0.35s ease';\n        currentPhoto.style.transform = 'translateX(' + slideX + '%) rotate(' + rotateAngle + 'deg) scale(0.85)';\n        currentPhoto.style.opacity = '0';\n        currentPhoto.style.zIndex = '99';\n        currentPhoto.classList.remove('active');\n  \n        nextPhoto.classList.remove('settled');\n        nextPhoto.style.transition = 'none';\n        nextPhoto.style.transform = '';\n        nextPhoto.style.opacity = '';\n        nextPhoto.style.zIndex = '';\n        nextPhoto.style.pointerEvents = 'auto';\n        void nextPhoto.offsetHeight;\n  \n        nextPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.35s ease';\n        nextPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        nextPhoto.style.opacity = '1';\n        nextPhoto.style.zIndex = '100';\n        nextPhoto.classList.add('active');\n  \n        const oldIndex = currentIndex;\n        currentIndex = nextIndex;\n  \n        setTimeout(function() {\n          const oldPhoto = photos[oldIndex];\n          if (oldIndex !== currentIndex) {\n            oldPhoto.style.transition = 'transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.5s ease';\n            const originalTransform = getStackTransform(oldIndex, total);\n            oldPhoto.style.transform = originalTransform;\n            oldPhoto.style.opacity = '0.4';\n            oldPhoto.style.zIndex = '1';\n            oldPhoto.classList.add('settled');\n            oldPhoto.style.pointerEvents = 'none';\n          }\n        }, 480);\n  \n        setTimeout(function() {\n          let zi = 1;\n          photos.forEach(function(el, i) {\n            if (i === currentIndex) {\n              el.style.zIndex = '100';\n            } else if (!el.classList.contains('settled')) {\n              el.style.zIndex = zi;\n              zi++;\n            } else {\n              el.style.zIndex = '1';\n            }\n          });\n        }, 50);\n      }\n  \n      initPhotos();\n  \n      \/\/ ===== \u4e8b\u4ef6\u7ed1\u5b9a =====\n      let mouseStartX = 0, mouseStartY = 0, isMouseDragging = false;\n  \n      stackEl.addEventListener('mousedown', function(e) {\n        if (e.target.closest('.photo')) {\n          mouseStartX = e.clientX;\n          mouseStartY = e.clientY;\n          isMouseDragging = true;\n        }\n      });\n  \n      document.addEventListener('mousemove', function(e) {\n        if (!isMouseDragging) return;\n        const diffX = e.clientX - mouseStartX;\n        const diffY = e.clientY - mouseStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isMouseDragging = false;\n        }\n      });\n  \n      document.addEventListener('mouseup', function() {\n        isMouseDragging = false;\n      });\n  \n      let touchStartX = 0, touchStartY = 0, isTouching = false;\n  \n      stackEl.addEventListener('touchstart', function(e) {\n        const touch = e.touches[0];\n        touchStartX = touch.clientX;\n        touchStartY = touch.clientY;\n        isTouching = true;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchmove', function(e) {\n        if (!isTouching) return;\n        const touch = e.touches[0];\n        const diffX = touch.clientX - touchStartX;\n        const diffY = touch.clientY - touchStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isTouching = false;\n        }\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchend', function() {\n        isTouching = false;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchcancel', function() {\n        isTouching = false;\n      }, { passive: true });\n    });\n  \n    console.log('\ud83d\udcf8 \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\u52a0\u8f7d\u5b8c\u6210\uff0c\u5171 ' + stacks.length + ' \u4e2a\u7ec4\u4ef6');\n  })();\n  <\/script>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u5348\u5403\u8fc7\u996d\u540e\uff0c\u6211\u4eec\u5230\u5904\u95f2\u901b\uff0c\u53bb\u4e86\u5e7f\u5dde\u5854\u3001\u4e2d\u5c71\u7eaa\u5ff5\u5802\u3001\u5317\u4eac\u8def\u8fd9\u4e9b\u5730\u65b9\u3002\u6211\u4eec\u8d70\u7d2f\u4e86\u5c31\u505c\uff0c\u5750\u4e45\u4e86\u5c31\u8d70\u3002\u8d70\u6709\u8d70\u7684\u597d\u5904\uff0c\u6211\u4eec\u53ef\u4ee5\u52a8\u6001\u5730\u89c2\u5bdf\u57ce\u5e02\u7684\u6837\u5b50\uff0c\u8fdc\u5904\u7684\u5efa\u7b51\u4ece\u8fdc\u5230\u8fd1\u770b\u603b\u662f\u4f1a\u6709\u4e0d\u540c\u7684\u611f\u89c9\u3002\u5750\u4e5f\u6709\u5750\u7684\u597d\u5904\uff0c\u5750\u4e0b\u65f6\u770b\u7740\u6811\u4e0a\u88ab\u98ce\u5439\u5f97\u6447\u6643\u7684\u706f\u7b3c\uff0c\u65e7\u697c\u4e0a\u5916\u56fd\u98ce\u683c\u7684\u96d5\u5851\uff0c\u4ee5\u53ca\u6765\u6765\u5f80\u5f80\u7684\u884c\u4eba\uff0c\u6211\u6709\u4e86\u4e00\u79cd\u964c\u751f\u7684\u611f\u89c9\uff0c\u611f\u89c9\u5230\u81ea\u5df1\u5728\u4e00\u4e2a\u65b0\u7684\u5730\u65b9\u8fc7\u7740\u4e00\u79cd\u964c\u751f\u7684\u751f\u6d3b\uff0c\u8fd9\u4e5f\u8bb8\u662f\u51fa\u6765\u73a9\u7684\u610f\u4e49\u5427\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u508d\u665a\uff0c\u6211\u4eec\u5728\u4e00\u5bb6\u5e76\u4e0d\u597d\u5403\u7684\u81ea\u52a9\u9910\u5e97\u5403\u996d\u3002\u8fd9\u5c31\u662f\u4e00\u573a\u707e\u96be\uff0c\u6211\u6b63\u5728\u54bd\u4e0b\u6211\u81ea\u5df1\u90fd\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u7684\u98df\u7269\u3002\u4e00\u5757\u7ea2\u901a\u901a\u7684\u8089\uff0c\u6254\u8fdb\u9505\u5185\u716e\u4e86\u4e0d\u77e5\u591a\u4e45\u8fd8\u662f\u7ea2\u8272\u7684\u3002\u4e00\u4e2a\u5916\u9762\u7528\u6cb9\u8c46\u8150\uff08\uff1f\uff09\u5305\u8d77\u6765\u7684\u798f\u888b\uff0c\u5728\u540c\u6837\u716e\u4e86\u5f88\u957f\u65f6\u95f4\u540e\uff0c\u635e\u8d77\u6765\uff0c\u54ac\u5f00\uff0c\u91cc\u9762\u662f\u9ecf\u7cca\u7cca\u7684\u8089\u7cdc\u2026\u2026\u5728\u8fd9\u4e4b\u524d\uff0c\u6211\u8fd8\u4ece\u6ca1\u60f3\u8fc7\u5403\u996d\u53ef\u4ee5\u662f\u4e00\u79cd\u6298\u78e8\u3002\u6700\u540e\u4e00\u5757\u201c\u8089\u201d\u4e86\uff0c\u4e09\u4e2a\u4eba\u90fd\u8bf4\u9971\u4e0d\u5403\u4e86\u3002\u6211\u4eec\u51b3\u5b9a\u731c\u62f3\uff0c\u8c01\u8f93\u8c01\u5403\u3002\u5f53\u6700\u540e\u4e00\u6b21\u731c\u62f3\uff0c\u5e03\u548c\u77f3\u5934\u540c\u65f6\u843d\u4e0b\uff0c\u5269\u4e0b\u4e24\u4eba\u7684\u6b22\u547c\u548c\u4e00\u4e2a\u4eba\u7684\u54c0\u53f7\u7ed3\u675f\u4e86\u8fd9\u4e2a\u665a\u996d\u3002<\/p>\n\n\n\n<!-- ============================================================ -->\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u5355\u5361\u7247\u7248\uff0c\u53ef\u72ec\u7acb\u590d\u5236\u591a\u4e2a\uff09 ===== -->\n<!-- ============================================================ -->\n\n<!-- ===== \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\uff08\u53ea\u6709\u8fd9\u4e00\u4e2a\uff09 ===== -->\n<div class=\"photo-stack\" id=\"photoStack2\">\n    <div class=\"stack-container\" id=\"stackContainer2\">\n        <div class=\"photo\" data-index=\"0\">\n            <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786618227-IMG_20260813_184457-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72471\">\n        <\/div>\n        <div class=\"photo\" data-index=\"1\">\n          <img decoding=\"async\" src=\"http:\/\/supersrui.top\/wp-content\/uploads\/2026\/08\/1786618218-IMG_20260813_184730-scaled.jpg\" alt=\"\u65c5\u884c\u7167\u72472\">\n        <\/div>\n        \n    <\/div>\n    <div class=\"stack-hint\">\u2190 \u5de6\u53f3\u6ed1\u52a8\u7ffb\u770b \u2192<\/div>\n  <\/div>\n  \n  <!-- ============================================================ -->\n  <!-- ===== CSS \u6837\u5f0f\uff08\u5168\u5c40\uff0c\u53ea\u9700\u4e00\u4efd\uff09 ===== -->\n  <style>\n  \/* ===== \u7167\u7247\u5806\u53e0\u5bb9\u5668 ===== *\/\n  .photo-stack {\n    position: relative;\n    width: 100%;\n    max-width: 600px;\n    margin: 2rem auto;\n    padding: 20px 10px 40px;\n    touch-action: none;\n    user-select: none;\n    -webkit-user-select: none;\n  }\n                        \n  .stack-container {\n    position: relative;\n    width: 100%;\n    padding-bottom: 75%; \/* 4:3 \u6bd4\u4f8b *\/\n    perspective: 1200px;\n  }\n  \n  \/* ===== \u6bcf\u5f20\u7167\u7247 ===== *\/\n  .photo {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border-radius: 16px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15), 0 1px 4px rgba(0, 0, 0, 0.08);\n    background: #fff;\n    overflow: hidden;\n    will-change: transform, opacity, z-index;\n    cursor: grab;\n    transform-origin: center center;\n    transition: none; \/* \u7531 JS \u63a7\u5236 *\/\n  }\n  \n  .photo:active {\n    cursor: grabbing;\n  }\n  \n  .photo img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    border-radius: 16px;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u5f53\u524d\u663e\u793a\u7684\u7167\u7247\uff08\u5c45\u4e2d\uff09 ===== *\/\n  .photo.active {\n    transform: translate(0, 0) rotate(0deg) scale(1) !important;\n    opacity: 1 !important;\n    z-index: 100 !important;\n    cursor: default;\n    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25), 0 4px 12px rgba(0, 0, 0, 0.1);\n  }\n  \n  \/* ===== \u6c89\u5e95\u72b6\u6001 ===== *\/\n  .photo.settled {\n    opacity: 0.4 !important;\n    z-index: 1 !important;\n    pointer-events: none;\n  }\n  \n  \/* ===== \u63d0\u793a\u6587\u5b57 ===== *\/\n  .stack-hint {\n    text-align: center;\n    margin-top: 16px;\n    color: #999;\n    font-size: 13px;\n    letter-spacing: 2px;\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    opacity: 0.7;\n    animation: pulse-hint 3s ease-in-out infinite;\n  }\n  \n  @keyframes pulse-hint {\n    0%, 100% { opacity: 0.5; }\n    50% { opacity: 1; }\n  }\n  \n  \/* ===== shake \u52a8\u753b\uff08\u8fb9\u754c\u63d0\u793a\uff09 ===== *\/\n  @keyframes shake {\n    0%, 100% { transform: translateX(0); }\n    20% { transform: translateX(-10px); }\n    40% { transform: translateX(10px); }\n    60% { transform: translateX(-6px); }\n    80% { transform: translateX(6px); }\n  }\n  .shake-hint {\n    animation: shake 0.4s ease !important;\n  }\n  \n  \/* ===== \u54cd\u5e94\u5f0f ===== *\/\n  @media (max-width: 480px) {\n    .photo-stack {\n      padding: 10px 4px 30px;\n    }\n    .stack-hint {\n      font-size: 11px;\n      margin-top: 12px;\n    }\n  }\n  \n  \/* ===== \u6df1\u8272\u6a21\u5f0f\u9002\u914d\uff08\u8ddf\u968f body.dark\uff09 ===== *\/\n  body.dark .photo {\n    background: #2a2a3a;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n  }\n  body.dark .photo img {\n    filter: brightness(0.95);\n  }\n  body.dark .stack-hint {\n    color: #666;\n  }\n  <\/style>\n  \n  <!-- ============================================================ -->\n  <!-- ===== JavaScript\uff08\u5168\u5c40\u53ea\u9700\u4e00\u4efd\uff0c\u81ea\u52a8\u9002\u914d\u6240\u6709\u7ec4\u4ef6\uff09 ===== -->\n  <script>\n  (function() {\n    'use strict';\n  \n    \/\/ \u67e5\u627e\u9875\u9762\u4e0a\u6240\u6709\u7684\u7167\u7247\u5806\u53e0\u7ec4\u4ef6\n    const stacks = document.querySelectorAll('.photo-stack');\n  \n    if (stacks.length === 0) return;\n  \n    \/\/ ===== \u5de5\u5177\u51fd\u6570\uff1a\u83b7\u53d6\u5806\u53e0\u504f\u79fb\uff08\u6839\u636e\u7d22\u5f15\u548c\u603b\u6570\u52a8\u6001\u8ba1\u7b97\uff09 =====\n    function getStackTransform(index, total) {\n      if (total <= 1) return 'translate(0, 0) rotate(0deg) scale(1)';\n      const progress = index \/ (total - 1);\n      const angle = 4 * (1 - progress);\n      const tx = 8 * (1 - progress) * (index % 2 === 0 ? 1 : -1);\n      const ty = 6 * (1 - progress);\n      const scale = 0.92 + 0.08 * progress;\n      const rotate = angle * (index % 2 === 0 ? 1 : -1);\n      return `translate(${tx}px, ${ty}px) rotate(${rotate}deg) scale(${scale})`;\n    }\n  \n    \/\/ ===== \u904d\u5386\u6bcf\u4e2a\u7ec4\u4ef6\uff0c\u72ec\u7acb\u521d\u59cb\u5316 =====\n    stacks.forEach(function(stackEl) {\n      const container = stackEl.querySelector('.stack-container');\n      const photos = container.querySelectorAll('.photo');\n      const total = photos.length;\n      if (total === 0) return;\n  \n      let currentIndex = total - 1;\n  \n      \/\/ ===== \u521d\u59cb\u5316\u7167\u7247\uff1a\u5e94\u7528\u5806\u53e0\u504f\u79fb =====\n      function initPhotos() {\n        photos.forEach(function(el, i) {\n          el.style.transform = '';\n          el.style.opacity = '';\n          el.style.zIndex = '';\n          el.style.transition = '';\n          el.classList.remove('active', 'settled');\n          el.style.pointerEvents = 'auto';\n          const transform = getStackTransform(i, total);\n          el.style.transform = transform;\n          el.style.opacity = '1';\n          el.style.zIndex = i + 1;\n        });\n        const topPhoto = photos[total - 1];\n        topPhoto.classList.add('active');\n        topPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        topPhoto.style.opacity = '1';\n        topPhoto.style.zIndex = '100';\n        topPhoto.style.pointerEvents = 'auto';\n        currentIndex = total - 1;\n      }\n  \n      \/\/ ===== \u83b7\u53d6\u4e0b\u4e00\u5f20\u7d22\u5f15\uff08\u5faa\u73af\uff09 =====\n      function getNextIndex() {\n        let next = currentIndex - 1;\n        if (next < 0) next = total - 1;\n        return next;\n      }\n  \n      \/\/ ===== \u9707\u52a8\u63d0\u793a =====\n      function shakeHint() {\n        const hint = stackEl.querySelector('.stack-hint');\n        if (hint) {\n          hint.classList.remove('shake-hint');\n          void hint.offsetHeight;\n          hint.classList.add('shake-hint');\n          setTimeout(function() {\n            hint.classList.remove('shake-hint');\n          }, 500);\n        }\n      }\n  \n      \/\/ ===== \u6267\u884c\u6ed1\u52a8 =====\n      function performSwipe(direction) {\n        const nextIndex = getNextIndex();\n        if (nextIndex === currentIndex) {\n          shakeHint();\n          return;\n        }\n  \n        const currentPhoto = photos[currentIndex];\n        const nextPhoto = photos[nextIndex];\n  \n        const dirSign = direction === 'left' ? -1 : 1;\n        const slideX = dirSign * 120;\n        const rotateAngle = dirSign * 8;\n  \n        currentPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.0, 0.64, 1), opacity 0.35s ease';\n        currentPhoto.style.transform = 'translateX(' + slideX + '%) rotate(' + rotateAngle + 'deg) scale(0.85)';\n        currentPhoto.style.opacity = '0';\n        currentPhoto.style.zIndex = '99';\n        currentPhoto.classList.remove('active');\n  \n        nextPhoto.classList.remove('settled');\n        nextPhoto.style.transition = 'none';\n        nextPhoto.style.transform = '';\n        nextPhoto.style.opacity = '';\n        nextPhoto.style.zIndex = '';\n        nextPhoto.style.pointerEvents = 'auto';\n        void nextPhoto.offsetHeight;\n  \n        nextPhoto.style.transition = 'transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.35s ease';\n        nextPhoto.style.transform = 'translate(0, 0) rotate(0deg) scale(1)';\n        nextPhoto.style.opacity = '1';\n        nextPhoto.style.zIndex = '100';\n        nextPhoto.classList.add('active');\n  \n        const oldIndex = currentIndex;\n        currentIndex = nextIndex;\n  \n        setTimeout(function() {\n          const oldPhoto = photos[oldIndex];\n          if (oldIndex !== currentIndex) {\n            oldPhoto.style.transition = 'transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.5s ease';\n            const originalTransform = getStackTransform(oldIndex, total);\n            oldPhoto.style.transform = originalTransform;\n            oldPhoto.style.opacity = '0.4';\n            oldPhoto.style.zIndex = '1';\n            oldPhoto.classList.add('settled');\n            oldPhoto.style.pointerEvents = 'none';\n          }\n        }, 480);\n  \n        setTimeout(function() {\n          let zi = 1;\n          photos.forEach(function(el, i) {\n            if (i === currentIndex) {\n              el.style.zIndex = '100';\n            } else if (!el.classList.contains('settled')) {\n              el.style.zIndex = zi;\n              zi++;\n            } else {\n              el.style.zIndex = '1';\n            }\n          });\n        }, 50);\n      }\n  \n      initPhotos();\n  \n      \/\/ ===== \u4e8b\u4ef6\u7ed1\u5b9a =====\n      let mouseStartX = 0, mouseStartY = 0, isMouseDragging = false;\n  \n      stackEl.addEventListener('mousedown', function(e) {\n        if (e.target.closest('.photo')) {\n          mouseStartX = e.clientX;\n          mouseStartY = e.clientY;\n          isMouseDragging = true;\n        }\n      });\n  \n      document.addEventListener('mousemove', function(e) {\n        if (!isMouseDragging) return;\n        const diffX = e.clientX - mouseStartX;\n        const diffY = e.clientY - mouseStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isMouseDragging = false;\n        }\n      });\n  \n      document.addEventListener('mouseup', function() {\n        isMouseDragging = false;\n      });\n  \n      let touchStartX = 0, touchStartY = 0, isTouching = false;\n  \n      stackEl.addEventListener('touchstart', function(e) {\n        const touch = e.touches[0];\n        touchStartX = touch.clientX;\n        touchStartY = touch.clientY;\n        isTouching = true;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchmove', function(e) {\n        if (!isTouching) return;\n        const touch = e.touches[0];\n        const diffX = touch.clientX - touchStartX;\n        const diffY = touch.clientY - touchStartY;\n        if (Math.abs(diffX) > 30 && Math.abs(diffX) > Math.abs(diffY) * 1.5) {\n          const direction = diffX > 0 ? 'right' : 'left';\n          performSwipe(direction);\n          isTouching = false;\n        }\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchend', function() {\n        isTouching = false;\n      }, { passive: true });\n  \n      stackEl.addEventListener('touchcancel', function() {\n        isTouching = false;\n      }, { passive: true });\n    });\n  \n    console.log('\ud83d\udcf8 \u7167\u7247\u5806\u53e0\u7ec4\u4ef6\u52a0\u8f7d\u5b8c\u6210\uff0c\u5171 ' + stacks.length + ' \u4e2a\u7ec4\u4ef6');\n  })();\n  <\/script>\n\n\n\n<p class=\"wp-block-paragraph\">\u508d\u665a\uff0c\u6211\u4eec\u5728\u4e00\u5bb6\u5e76\u4e0d\u597d\u5403\u7684\u81ea\u52a9\u9910\u5e97\u5403\u996d\u3002\u8fd9\u5c31\u662f\u4e00\u573a\u707e\u96be\uff0c\u6211\u6b63\u5728\u54bd\u4e0b\u6211\u81ea\u5df1\u90fd\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u7684\u98df\u7269\u3002\u4e00\u5757\u7ea2\u901a\u901a\u7684\u8089\uff0c\u6254\u8fdb\u9505\u5185\u716e\u4e86\u4e0d\u77e5\u591a\u4e45\u8fd8\u662f\u7ea2\u8272\u7684\u3002\u4e00\u4e2a\u5916\u9762\u7528\u6cb9\u8c46\u8150\u5305\u8d77\u6765\u7684\u798f\u888b\uff0c\u5728\u540c\u6837\u716e\u4e86\u5f88\u957f\u65f6\u95f4\u540e\uff0c\u635e\u8d77\u6765\uff0c\u54ac\u5f00\uff0c\u91cc\u9762\u662f\u9ecf\u7cca\u7cca\u7684\u8089\u7cdc\u2026\u2026\u5728\u8fd9\u4e4b\u524d\uff0c\u6211\u8fd8\u4ece\u6ca1\u60f3\u8fc7\u5403\u996d\u53ef\u4ee5\u662f\u4e00\u79cd\u6298\u78e8\u3002\u6700\u540e\u4e00\u5757\u201c\u8089\u201d\u4e86\uff0c\u4e09\u4e2a\u4eba\u90fd\u8bf4\u9971\u4e0d\u5403\u4e86\u3002\u6211\u4eec\u9009\u62e9\u731c\u62f3\u6765\u51b3\u5b9a\u3002\u5f53\u6700\u540e\u4e00\u6b21\u731c\u62f3\u5e03\u548c\u77f3\u5934\u540c\u65f6\u843d\u4e0b\uff0c\u5269\u4e0b\u4e24\u4eba\u7684\u6b22\u547c\u548c\u4e00\u4e2a\u4eba\u7684\u54c0\u53f7\u7ed3\u675f\u4e86\u8fd9\u573a\u6298\u78e8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8e\u65f6\u95f4\u7d27\u6025\uff0c\u6211\u4eec\u5728\u8def\u4e0a\u5411\u7740\u5730\u94c1\u7ad9\u7684\u65b9\u5411\u72c2\u5954\u3002\u8dd1\u7d2f\u4e86\uff0c\u4e09\u4e2a\u4eba\u5598\u7740\u7c97\u6c14\uff0c\u6162\u6162\u8d70\u7740\u3002\u62ac\u5934\uff0c\u8857\u65c1\u7684\u53e4\u6811\u6302\u7740\u4e00\u4e32\u4e32\u7684\u706f\u7b3c\uff0c\u706f\u7b3c\u6a59\u8272\u7684\u5916\u8868\u6321\u4e0d\u4f4f\u91cc\u9762\u9ec4\u8272\u7684\u5149\uff0c\u5448\u73b0\u51fa\u4e00\u79cd\u7531\u6a59\u5230\u9ec4\u7684\u6e10\u53d8\u989c\u8272\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u8d70\u4e86\uff0c\u4f46\u8fd9\u91cc\u7684\u706f\u7b3c\u4f1a\u4eae\u5230\u5f88\u665a\u5f88\u665a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u524d\u5f80\u5e7f\u5dde\u7684\u8f66\u4e0a\uff0c\u6211\u770b\u5411\u7a97\u5916\uff0c\u96f6\u661f\u7684\u51e0\u7247\u4e91\u6f02\u6d6e\u5728\u6e5b\u84dd\u7684\u6d77\u6d0b\uff0c\u65e9\u5df2\u5347\u8d77\u7684\u592a\u9633\u7f13\u7f13\u5730\u53d1\u51fa\u5149\u8292\uff1b\u8fd1\u5904\uff0c\u6c34\u6ce5\u6784\u5efa\u7684\u68ee\u6797\u50cf\u8d70\u9a6c\u706f\u4e0a\u7684\u753b\u50cf\uff0c\u4e00 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":171,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/posts\/115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/comments?post=115"}],"version-history":[{"count":15,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"predecessor-version":[{"id":175,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/posts\/115\/revisions\/175"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/media\/171"}],"wp:attachment":[{"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/supersrui.top\/index.php\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}