Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
7 / 12
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts
mysite

Men's Cotton Linen Capris Beach Elastic Waist Basic Casual Shorts

$27.99 $49.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!

Pants Type: Summer Shorts, Linen Shorts, Shorts

Style: Fashion, Casual

Occasion: Outdoor, Going out, Daily

Fabric: Linen / Cotton

Design: Pocket

Pattern: Plain

Season: Summer

Fit Type: Regular Fit

Size Chat

Tag
Size
Length HipWaist
cm | inchcm | inchcm | inch
S54cm |21.25''108cm | 42.51''78cm | 30.70''
M55cm |21.65''112cm | 44.09''82cm | 32.28''
L56cm |22.04''117cm |46.06''87cm | 34.25''
XL57cm |22.44''122cm | 48.03''92cm | 36.22''
2XL58cm | 22.83''127cm | 50''97cm | 38.18''
3XL59cm | 23.22''132cm | 51.96''102cm | 40.15''

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