Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
Black Lace Shorts Attached Swim Bottom
7 / 8

Black Lace Shorts Attached Swim Bottom

Color - Black
Please select a color
Size
Please select a size
Price
$20.99
$19.99

Quantity

/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
Description
Material: 82%Nylon + 18%Spandex    
Pattern:    solid
Decoration:    lace
Style: sexy    
Occasion: beach    
Package Contents:1 x bottom

Detail  
•Embroidered lace shorts covering
•Attached swim briefs for 1-pc styling

•Simple design well received by modern women

•For swimming, paddle boarding,beach volleyball

•Elastic waist and adjustable drawstring for a just-right fit
 

Size Chart (CM)

Sizes

Waist

Bottoms

Relax

Relax

S

73

52

M

78

57

L

88

63

XL

95

66

XXL

103

69

XXXL

111

74

Elasticity

High

Size Chart (INCH)

Sizes

Waist

Bottoms

Relax

Relax

S

28.7

20.5

M

30.7

22.4

L

34.6

24.8

XL

37.4

26.0

XXL

40.6

27.2

XXXL

43.7

29.1

Elasticity

High

Note:

1.There maybe 1-2 cm deviation in different sizes, locations and stretch of fabrics. Size chart is for reference only, there may be a little difference with what you get.

2.There are 3 kinds of elasticity: High Elasticity (two-sided stretched), Medium Elasticity (one-sided stretched) and Nonelastic (can not stretched ).

3.Color may be lighter or darker due to the different PC display.

4.Wash it by hand in 30-degree water, hang to dry in shade, prohibit bleaching.

5.There maybe a slightly difference on detail and pattern.

Delivery

Free shipping worldwide over $79

Receiving time = Processing time + Shipping time

Shipping time:

Expedited Shipping: 5-7 Business Days

Standard Shipping: 7-12 Business Days

Learn More

Return Policy

Our Guarantee:

Return or exchange within 14 days from the delivered date.

Request:

1. Items received within 14 days from the delivered date.

2. Items received unused, undamaged and in original package.

Learn More

1. Hand wash or use a delicate cycle: To keep our products looking their best, it's important to handle them with care. Hand washing is the gentlest way to clean the product, but if you prefer to use a washing machine, be sure to use a delicate cycle.

2. Use mild detergent: Harsh detergents can damage the delicate fabrics used in our products, so it's best to use a mild detergent. Avoid using fabric softeners and bleach, as they can also damage the fabric.

3. Air dry: After washing the product, don't put it in the dryer. Instead, lay it flat or hang it to air dry. Avoid exposing it to direct sunlight, as this can cause the fabric to fade.

4. Store carefully: To prevent our products from getting stretched out of shape, store them carefully. Fold it neatly and store it in a drawer or on a hanger. Avoid storing it in direct sunlight or a humid environment.

5. Replace when necessary: Our products are designed to provide support and contouring for your body, but over time, the fabric may lose its elasticity and effectiveness. Replace the product when it no longer provides the desired support or if it becomes worn or damaged.

Customer Reviews
Here are what our customers say.
Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.