window.onload = () => { _waEmbed(wa_btnSetting, wa_widgetSetting); }; Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
6 / 9
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor
mysite

Men's Shorts Linen Shorts Summer Shorts Beach Shorts Pocket Plain Comfort Breathable Outdoor

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

Style: Sports & Leisure

Pant Length: Cropped Trousers

Waist Type: Middle-waisted

Pattern: Solid Color

Error Range: 0.3cm

Fabric Name: Cotton

Content Of Main Fabric Components: Fifty-five

Applicable Scenarios: Sandy Beach

Category: Sports Casual Pants

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