Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
4 / 7
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt
mysite

Men's Cotton Linen Solid Loose Short Sleeve Pocket Simple Casual Shirt

$34.99 $69.99
0 sold
Color
Size
Qty 1000 in stock

Buy 2 Get Extra 10% OFF

Buy 4 Get Extra 15% OFF & FREE SHIPPING

Refresh Your Look And Stay In Fashion!

Applicable Scene: Daily

Sleeve Length: Short

Material: Linen

Applicable Season: Four Seasons

Style: Casual

Item Type: Tops

Tops Type:shirt

Sleeve Style: regular

Hooded: No

Fabric Type: Broadcloth

Gender: MEN

Color: White, black, military green, blue, gray, Apricot Color

Size:S, M, L, XL, 2XL, 3XL

Style: Sport,Fashion

Size Chat

Tag
Size
LengthChestShoulder Width
cm | inchcm | inchcm | inch
S73.0cm | 28''106cm | 41''45.5cm | 18''
M75.0cm | 29''112cm | 44''47cm | 18.5''
L77.0cm | 30''118cm | 46''48.5cm | 19''
XL79.0cm | 31''124cm | 48''50cm | 19.5''
2XL81.0cm | 31''132cm | 51''52cm | 20.5''
3XL83.0cm | 32''140cm | 55''54cm | 21,.5''
You May Also Like Don't Like These?
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);