Hassle-free returns. 30-day postage paid returns
Hassle-free returns. 30-day postage paid returns
hastowl
Search
Log in
Create an account
Home
Hot Sale
Sweatshirts & Hoodies
Pants
Two Piece
Shorts
Jackets
Shoes
New In
More links
Home
Hot Sale
Sweatshirts & Hoodies
Pants
Two Piece
Shorts
Jackets
Shoes
New In
More links
hastowl
Log in
Create an account
Search
Home
Hot Sale
Sweatshirts & Hoodies
Pants
Two Piece
Shorts
Jackets
Shoes
New In
Home
Hot Sale
Sweatshirts & Hoodies
Pants
Two Piece
Shorts
Jackets
Shoes
New In
Log in
Home
/
Stylish Street Style Casual Loose Long Sleeve Hoodie
1/2
1/2
Stylish Street Style Casual Loose Long Sleeve Hoodie
$31.89
$43.00
Color
: 
Pink
Pink
Please select a color
Size
S
M
L
XL
2XL
3XL
Please select a size
Quantity
Add to cart
Buy now
Barcode:
Description
Style : Preppy , Basics , Street , Sporty , Casual , Boyfriend
Color : Red
Season : Spring , Autumn , Winter
Occasion : Fitness , Home , Street , Outdoors
Pattern Type : Print
Sleeve Length : Long Sleeve
Design : Basic
Size Chart
cm
Size
S
M
L
XL
2XL
3XL
Shoulder
45.5
47
48.5
50
51.5
53
Bust
108
113
118
123
128
131
Length
71
72
73
74
75
76
Sleeve Length
60
61
62
63
64
65
inch
Size inch
S
M
L
XL
2XL
3XL
Shoulder
17.9
18.5
19.1
19.7
20.3
20.9
Bust
42.5
44.5
46.5
48.4
50.4
51.6
Length
28.0
28.3
28.7
29.1
29.5
29.9
Sleeve Length
23.6
24.0
24.4
24.8
25.2
25.6
${function(){ const isRTL = originData.isRTL; const isMobile = originData.isMobile; const inProductDetail = originData.inProductDetail; if (!inProductDetail) { return `
Flash sale cannot be displayed here. Please move it to the product detail area. (This prompt will not be displayed on the client-side)
`; } const flashsaleData = originData.flashsaleData; const image_domain = originData.image_domain; const discount_info = flashsaleData.discount_info; const setting = flashsaleData.product_setting; if (!discount_info || !setting) return ``; const displayType = setting.display_type; const banner = setting.banner; const productDisplay = setting.product_display; const bannerConfig = JSON.parse(banner.config); const productDisplayConfig = JSON.parse(productDisplay.config); const colorConfig = productDisplayConfig.color; const countdownConfig = productDisplayConfig.countdown; let titleIcon = ``; let bgImg = ``; const deg = `${isRTL ? -90 : 90}deg`; const { banner_bg_start, banner_bg_end, banner_text } = colorConfig; let bgStyle = `background: linear-gradient(${deg}, ${banner_bg_start} 0%, ${banner_bg_end} 100%);`; let bannerColor = `color: ${banner_text};` if (banner.type === "TYPE_CUSTOM") { const { desktop, mobile, image_render } = bannerConfig; const bgSize = image_render === "fill" ? "background-size: cover;background-position: center;" : "background-position: center;background-size: auto 100%;"; if (isMobile && mobile) { bgStyle = `background: URL(${image_domain + mobile});${bgSize}`; } else if (!isMobile && desktop) { bgStyle = `background: URL(${image_domain + desktop});${bgSize}`; } } else { if (banner.type === "TYPE_ONE") { titleIcon = productDisplay.text ? `
` : ""; bgImg = `
` } if (banner.type === "TYPE_TWO") { titleIcon = productDisplay.text ? `
` : "" } } const { sale_bar_background_color, progress_sale_bar_background_color_start, progress_sale_bar_background_color_end } = colorConfig; const rate = discount_info.discount_sales_rate; const progressBarStyle = `background: linear-gradient(${deg}, ${progress_sale_bar_background_color_start} 0%, ${progress_sale_bar_background_color_end} 100%);`; const saleCount = productDisplay.sales_progress.format === "FORMAT_NUMBER" ? discount_info.discount_sales : `${rate}%`; const progressBarDom = productDisplay.sales_progress.enabled && rate > 0 ? `
${saleCount}
sold
` : ``; const { countdown_bg, countdown_text } = colorConfig; const { end_opened, end_format } = countdownConfig; const tempMap = { "DD_SSS": "DD:HH:mm:ss:SSS", "HH_SSS": "HH:mm:ss:SSS", "DD_ss": "DD:HH:mm:ss", "HH_ss": "HH:mm:ss" } const isShowDD = [tempMap.DD_SSS, tempMap.DD_ss].includes(end_format); const isShowSSS = [tempMap.DD_SSS, tempMap.HH_SSS].includes(end_format); const countdown = discount_info.ends_remaining_seconds; const countdownDom = end_opened ? `
${function() { if (banner.type === "TYPE_TWO") return `
` return ``; }()}
` : ``; const flashSaleDesc = discount_info.limit_user_product_discount > -1 ? `
Promo products limited to ${discount_info.limit_user_product_discount} item per person
` : ""; return `
${bgImg}
${titleIcon}
${productDisplay.text}
${progressBarDom}
${countdownDom}
${flashSaleDesc}
`}()}
${function(){ const dd = data.dd; const hh = data.hh; const mm = data.mm; const ss = data.ss; const sss = data.SSS; const hours = data.d * 24 + data.h; return `
${dd}D
·
${hours}
${hh}
:
${mm}
:
${ss}
.
${sss}
` }()}
class SpzCustomDiscountFlashsale extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting"; this.timer = null; this.variantId = "7a0efcc9-93a6-4667-98af-40a525a2d9f2"; // 促销活动数据 this.flashsaleData = {} } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // 挂载bind函数 解决this指向问题 this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } mountCallback() { // 获取数据 this.getData(); this.element.onclick = (e) => { const cur = this.win.document.querySelector(".app_discount_flashsale_desc"); if (this.flashsaleData.product_setting.is_redirection && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(`/promotions/discount-default/${this.flashsaleData.discount_info.id}`); } } // 绑定 this.viewport_.onResize(this.resize); // 监听子款式切换,重新渲染 this.win.document.addEventListener('dj.variantChange', this.switchVariant); } unmountCallback() { // 解绑 this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { this.render(); }, 200) } switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '46808f7f-6be5-476e-85cd-364caba10f80' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "46808f7f-6be5-476e-85cd-364caba10f80", product_type: "", variant_id: this.variantId } this.flashsaleData = {}; this.win.fetch(this.getFlashSaleApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { this.flashsaleData = await response.json(); this.render(); } else { this.clearDom(); } }).catch(err => { this.clearDom(); }); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } render() { this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), inProductDetail: appDiscountUtils.inProductBody(this.element), flashsaleData: this.flashsaleData, image_domain: this.win.SHOPLAZZA.image_domain, }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) } } SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);