Chic Casual Black Stripe Linen Blend Boat-Neck Sleeveless Tailored-Waist Loose-Fit Romper

const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '67c18b2a-44a9-40a1-bcb2-6d9afeef6f9b'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '1f0e2148-8706-4d5a-afb1-4f6b9b266e2d'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '1f0e2148-8706-4d5a-afb1-4f6b9b266e2d' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '1f0e2148-8706-4d5a-afb1-4f6b9b266e2d'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
$42.99
Color- Black
Size- XS
Quantity
Support returns
Sustainably made
Secure payments
people are viewing this right now
Vendor by: mysite
SKU: EOZ0892D2M_Black||XS||YU
Description

Product description

This romper combines effortless summer comfort with a refined silhouette. Crafted from a breathable linen-blend fabric, it features a timeless black stripe pattern, a flattering boat neckline, and sleeveless cut for warm-weather ease. The tailored waist defines your shape while the loose-fit torso and relaxed short hem offer movement and casual charm—ideal for everyday wear or relaxed weekend outings.

Key features

  • Linen-blend fabric: lightweight, breathable and great for warm climates while retaining a softly textured, natural look.
  • Black stripe design: versatile, classic vertical/linear stripe that adds subtle visual interest and elongates the silhouette.
  • Boat neckline: clean, elegant neckline that balances the sleeveless cut and works well with simple jewelry.
  • Tailored waist: gently cinched waist for a polished shape without sacrificing comfort.
  • Loose-fit romper: relaxed top and short-length bottom for an easy, contemporary feel that moves with you.
  • Easy care: low-maintenance fabric blend that washes quickly and wears well season after season.

Styling and pairing suggestions

  • Daytime casual: pair with white canvas sneakers or espadrilles, a straw tote, and sunglasses for an effortless daytime look.
  • Smart-casual: add a lightweight blazer or denim jacket, block-heel sandals, and minimal gold jewelry to transition to a relaxed evening or brunch.
  • Beach-ready: slip on leather sandals, a wide-brim hat, and a woven bag for coastal vibes.
  • Accessories: a slim belt at the waist for added definition, hoop earrings, or layered delicate necklaces complement the boat neckline.
  • Weather layering: throw on a soft cardigan or linen shirt tied at the waist for cooler nights.

Fit and care tips

  • Fit: designed as a relaxed, loose-fit romper with a tailored waist—consider your usual size for a balanced fit or size up for an extra relaxed silhouette.
  • Care: machine wash cold on gentle cycle or hand wash; reshape and dry flat to preserve the linen texture. Avoid bleach and high heat drying.

Summary

The Black Stripe Linen Blend Romper is a versatile wardrobe staple that blends casual comfort with a clean, tailored look. Its breathable linen blend, classic stripe pattern, and flattering boat-neck silhouette make it perfect for everyday adventures, weekend getaways, or easy summer evenings. Simple to style and easy to wear, it’s a go-to piece for a chic, low-effort outfit.

Size Chart

Size Bust (cm) Bust (inch) Waist (cm) Waist (inch) Hip (cm) Hip (inch) Length (cm) Length (inch) Shorts Length (cm) Shorts Length (inch)
XS 86 33.86 66 25.98 96 37.80 118 46.46 42 16.54
S 90 35.43 70 27.56 100 39.37 120 47.24 43 16.93
M 94 37.01 74 29.13 104 40.94 122 48.03 44 17.32
L 98 38.58 78 30.71 108 42.52 124 48.82 45 17.72
XL 102 40.16 82 32.28 112 44.09 126 49.61 46 18.11
2XL 106 41.73 86 33.86 116 45.67 128 50.39 47 18.50

You may also like