Cash on Delivery to Japan,Taiwan HongKong and Singapore ,Free shipping over USD$59
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
3 / 16
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
Current season men's cotton linen casual long-sleeved shirt
You May Also Like Don't Like These?
mysite

Current season men's cotton linen casual long-sleeved shirt

$29.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!

Cotton

Loose and comfortable fabrics create a stylish and casual look for you.
Ideal for Casual, Daily, Family Days, Lounge Days, etc.

Soft premium cotton for added comfort to keep you comfortable for active and everyday activities.

Classic cut for roomier fit and double needle stitching for extra durability.

Suitable for any season as. Perfect for business, office, workout, running, vacation, weekend, etc.

Easy care : Machine wash in cold water.

With innovative features like moisture wicking and odor control.

With superior comfort in every detail.

There's nothing like the comfort and style of our clothes. Whether you're on the go or just hanging out, we always deliver the fit, style and comfort you need.

If the price is back to $59.99 then our sale has unfortunately ended and we have run out of the discounted shirts!

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