{"product_id":"iw8-handheld-garment-steamer","title":"IW8 Handheld Garment Steamer - 2600W, 30g\/min Steam, 260mL Tank","description":"\u003cdiv class=\"shopify-image-block-unique\" id=\"shopify-image-block-unique\"\u003e\n  \u003cdiv class=\"shopify-image-toolbar\"\u003e\n    \u003cbutton type=\"button\" class=\"shopify-image-zoom-btn\" id=\"shopify-image-zoom-btn\"\u003e1:1\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/IW8.jpg?v=1772693006\u0026amp;width=2400\" srcset=\"\n      https:\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/IW8.jpg?v=1772693006\u0026amp;width=1200 1200w,\n      https:\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/IW8.jpg?v=1772693006\u0026amp;width=1600 1600w,\n      https:\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/IW8.jpg?v=1772693006\u0026amp;width=2000 2000w,\n      https:\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/IW8.jpg?v=1772693006\u0026amp;width=2400 2400w\n    \" sizes=\"90vw\" alt=\"商品图片\" class=\"shopify-image-block-img\" id=\"shopify-image-block-img\" draggable=\"false\" loading=\"eager\" decoding=\"async\"\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .shopify-image-block-unique{\n    position: relative;\n    border-radius: 20px;\n    overflow: auto;\n    max-width: 90vw;\n    max-height: 80vh;\n    background: #fff;\n    box-shadow: 0 4px 24px rgba(0,0,0,0.07);\n    margin: auto;\n    border: 1px solid rgba(0,0,0,0.06);\n    -webkit-overflow-scrolling: touch;\n    overscroll-behavior: contain;\n    cursor: grab;\n    user-select: none;\n    scrollbar-gutter: stable both-edges;\n  }\n\n  .shopify-image-block-unique:active{\n    cursor: grabbing;\n  }\n\n  .shopify-image-toolbar{\n    position: sticky;\n    top: 10px;\n    right: 10px;\n    z-index: 5;\n    display: flex;\n    justify-content: flex-end;\n    padding: 10px 10px 0;\n    pointer-events: none;\n  }\n\n  .shopify-image-zoom-btn{\n    pointer-events: auto;\n    appearance: none;\n    border: 1px solid rgba(0,0,0,0.08);\n    background: rgba(255,255,255,0.92);\n    color: #111;\n    border-radius: 999px;\n    padding: 8px 14px;\n    font-size: 13px;\n    line-height: 1;\n    cursor: pointer;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.06);\n    backdrop-filter: blur(6px);\n  }\n\n  .shopify-image-zoom-btn:hover{\n    background: #fff;\n  }\n\n  .shopify-image-block-img{\n    display: block;\n    height: auto;\n    border-radius: 20px;\n    object-fit: contain;\n    background: #fff;\n    margin: 0 auto;\n    transform: translateZ(0);\n    backface-visibility: hidden;\n    image-rendering: auto;\n  }\n\n  \/* 默认适应容器 *\/\n  .shopify-image-block-img.is-fit{\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n    max-height: none;\n  }\n\n  \/* 1:1 原图模式 *\/\n  .shopify-image-block-img.is-native{\n    width: auto;\n    max-width: none;\n    min-width: 0;\n    max-height: none;\n  }\n\n  \/* 保留滚动条并美化 *\/\n  .shopify-image-block-unique::-webkit-scrollbar{\n    width: 12px;\n    height: 12px;\n  }\n\n  .shopify-image-block-unique::-webkit-scrollbar-track{\n    background: rgba(0,0,0,0.06);\n    border-radius: 999px;\n  }\n\n  .shopify-image-block-unique::-webkit-scrollbar-thumb{\n    background: rgba(0,0,0,0.28);\n    border-radius: 999px;\n    border: 2px solid rgba(255,255,255,0.9);\n  }\n\n  .shopify-image-block-unique::-webkit-scrollbar-thumb:hover{\n    background: rgba(0,0,0,0.40);\n  }\n\n  .shopify-image-block-unique{\n    scrollbar-width: auto;\n    scrollbar-color: rgba(0,0,0,0.28) rgba(0,0,0,0.06);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function(){\n  var container = document.getElementById('shopify-image-block-unique');\n  var img = document.getElementById('shopify-image-block-img');\n  var zoomBtn = document.getElementById('shopify-image-zoom-btn');\n  if (!container || !img || !zoomBtn) return;\n\n  var isDown = false;\n  var startX = 0, startY = 0, scrollLeft = 0, scrollTop = 0;\n  var isNative = false;\n\n  function setFitMode() {\n    isNative = false;\n    img.classList.remove('is-native');\n    img.classList.add('is-fit');\n    img.style.width = '100%';\n    img.style.maxWidth = '100%';\n    zoomBtn.textContent = '1:1';\n    container.scrollLeft = 0;\n    container.scrollTop = 0;\n  }\n\n  function setNativeMode() {\n    isNative = true;\n    img.classList.remove('is-fit');\n    img.classList.add('is-native');\n    img.style.width = (img.naturalWidth || img.width) + 'px';\n    img.style.maxWidth = 'none';\n    zoomBtn.textContent = '适应';\n  }\n\n  function toggleMode() {\n    if (isNative) {\n      setFitMode();\n    } else {\n      setNativeMode();\n    }\n  }\n\n  if (img.complete) {\n    setFitMode();\n  } else {\n    img.addEventListener('load', setFitMode);\n  }\n\n  zoomBtn.addEventListener('click', function(e){\n    e.preventDefault();\n    e.stopPropagation();\n    toggleMode();\n  });\n\n  img.addEventListener('dblclick', function(e){\n    e.preventDefault();\n    toggleMode();\n  });\n\n  container.addEventListener('mousedown', function(e) {\n    if (e.button !== 0) return;\n    isDown = true;\n    startX = e.pageX - container.offsetLeft;\n    startY = e.pageY - container.offsetTop;\n    scrollLeft = container.scrollLeft;\n    scrollTop = container.scrollTop;\n  });\n\n  window.addEventListener('mouseup', function() {\n    isDown = false;\n  });\n\n  container.addEventListener('mouseleave', function() {\n    isDown = false;\n  });\n\n  container.addEventListener('mousemove', function(e) {\n    if (!isDown) return;\n    e.preventDefault();\n    var x = e.pageX - container.offsetLeft;\n    var y = e.pageY - container.offsetTop;\n    container.scrollLeft = scrollLeft - (x - startX);\n    container.scrollTop = scrollTop - (y - startY);\n  });\n\n  var touchStartX = 0, touchStartY = 0, touchScrollLeft = 0, touchScrollTop = 0;\n  var touchDown = false;\n\n  container.addEventListener('touchstart', function(e){\n    if (!e.touches || !e.touches[0]) return;\n    touchDown = true;\n    var t = e.touches[0];\n    touchStartX = t.pageX;\n    touchStartY = t.pageY;\n    touchScrollLeft = container.scrollLeft;\n    touchScrollTop = container.scrollTop;\n  }, { passive: true });\n\n  container.addEventListener('touchend', function(){\n    touchDown = false;\n  }, { passive: true });\n\n  container.addEventListener('touchmove', function(e){\n    if (!touchDown || !e.touches || !e.touches[0]) return;\n    var t = e.touches[0];\n    container.scrollLeft = touchScrollLeft - (t.pageX - touchStartX);\n    container.scrollTop = touchScrollTop - (t.pageY - touchStartY);\n  }, { passive: true });\n})();\n\u003c\/script\u003e","brand":"Elegoal","offers":[{"title":"Default Title","offer_id":43828177109080,"sku":"IW8","price":999.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0652\/4469\/2568\/files\/65_bceabf2f-01c1-43a7-8558-a1c568290064.webp?v=1772769743","url":"https:\/\/www.elegoal.com\/products\/iw8-handheld-garment-steamer","provider":"Elegoal","version":"1.0","type":"link"}