Cash on Delivery to Japan,Taiwan HongKong and Singapore ,Free shipping over USD$59
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
5 / 5
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket
You May Also Like Don't Like These?
mysite

Men's Lightweight Long Sleeve Textured Button Down Shirts Casual Jacket

$36.99 $73.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: Long

Material: Cotton

Applicable Season: Four Seasons

Style: Casual

Item Type: Tops

Tops Type: Shirt

Gender: MEN

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

Style: Fashion,Casual

 

Size Chat

Tag
Size
ReferenceReferenceReferenceLengthChestShoulderSleeve
USUKEURcm | inchcm | inchcm | inchcm | inch
S34-3634-3644-4673.5cm | 28.74''115cm | 43.31''47.5cm | 18.70''64cm | 25.20''
M38-4038-4048-5075cm | 29.13''120cm | 45.28''49.0cm | 19.29''65cm | 25.59''
L42425276.5cm | 29.53''125cm | 47.24''50.5cm | 19.88''66cm | 25.98''
XL44445478m | 29.92''130cm | 49.21''52.0cm | 20.47''67cm | 26.38''
2XL46465679.5m | 30.31''135cm | 51.18''53.5cm | 21.06''68cm | 26.77''
3XL48485881m | 30.71''140cm | 53.15''55.0cm | 21.65''69cm | 27.17''
4XL5050 6082.5m | 31.10''145cm | 55.12''56.5cm | 22.24'' 70cm | 27.56''
5XL5252 6284m | 31.50''150cm | 57.09''58.0cm | 22.83'' 71cm | 27.95''

 

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);