Sexy Tube Top Cinched Waist Fungus Tassel Dress

$79.00
/** * 优惠码组件模型类 * 处理优惠码的显示和交互逻辑 */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // 复制按钮和内容的类名 this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // 初始化服务 this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * 渲染优惠码组件 * @param {Object} data - 渲染数据 */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // 绑定复制代码功能 this.copyCode(el, data); }); } /** * 获取渲染模板 * @param {Object} data - 渲染数据 */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * 清除DOM内容 */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * 获取默认数据 * @returns {Object} 默认数据对象 */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * 复制优惠码功能 * @param {Element} el - 当前元素 */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // 确保获取正确的元素和内容 const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // 获取纯文本内容 const textToCopy = codeElement.innerText.trim(); // 尝试使用现代API,如果失败则使用备用方案 try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // 显示复制成功提示 this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // 使用备用复制方案 this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // 跳转决策: is_redirection + link(可选覆盖) const setting = { is_redirection: item.dataset["redirection"] === "true", link: item.dataset["link"], }; const landingUrl = `/promotions/discount-default/${discountId}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element)) { this.win.open(finalUrl, '_blank', 'noopener'); } } }) } } /** * 使用 execCommand 的复制方案 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // 设置样式使文本框不可见 textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // 添加 readonly 属性防止移动端虚拟键盘弹出 textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // 显示复制成功提示 this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * 创建 Toast 元素 * @returns {Element} 创建的 Toast 元素 */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * 挂载 Toast 元素到 body * @returns {Element} 挂载的 Toast 元素 */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * 复制成功的提醒 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * 复制优惠码成功后要存一份到本地存储中,购物车使用 * @param {string} codeText - 要复制的文本 */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // 注册自定义元素 SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "b5d7fda9-2d76-4192-ad16-5220eafa843f"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '44175963-6ba5-451b-b9ad-92a11c8aba6c' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "44175963-6ba5-451b-b9ad-92a11c8aba6c", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);
color:  red
Size:  S
Quantity

Description

Size Bust (cm) Waist (cm) Dress Length (Front/Back) (cm)
S 84-90 66-72 90 / 135
M 88-94 70-76 91 / 136
L 92-98 74-80 92 / 137
XL 96-102 78-84 93 / 138
2XL 104-110 86-92 94 / 139
Measurement Notes: Flat measurement, error ±2cm. Velvet fabric with slight stretch, strapless anti-slip design, high-low ruffle hem for elegant movement.

✨ Product Overview

Step into red-carpet glamour with this showstopping red velvet ruffle maxi dress, crafted for the bold woman who wants to exude passion and sophistication. Featuring a sleek strapless sweetheart neckline with crystal trim, a figure-hugging velvet bodice, and a dramatic high-low ruffle skirt with a 3D floral detail, this gown blends timeless elegance with bold allure. The rich ruby red velvet catches the light with every movement, while the asymmetrical hem adds a modern edge—perfect for making an unforgettable entrance at weddings, galas, and any formal occasion where you want to be the center of attention.

🌟 Key Features

  • Romantic Strapless Sweetheart Neckline: Classic sweetheart neckline with delicate crystal trim along the bustline, adding a touch of sparkle and framing your collarbone beautifully while staying securely in place with an anti-slip band.
  • Luxurious Velvet Fabric: Premium red velvet material with a soft, plush texture and subtle sheen, silky smooth against the skin and offering exceptional drape—perfect for fall/winter events and adding a touch of opulence to any look.
  • Figure-Hugging Bodice: Slim-fitting bodice that cinches your waist and sculpts your figure, creating a flawless hourglass silhouette and accentuating your curves in all the right places.
  • Dramatic High-Low Ruffle Skirt: The star feature! A voluminous ruffle skirt with a high-low (front short, back long) design, adding movement and drama to your step while elongating your legs and showing off your shoes. A 3D floral detail at the waist adds a romantic, feminine touch.
  • Rich Ruby Red Hue: A bold, eye-catching red that complements all skin tones, evoking passion, confidence, and timeless glamour—perfect for making a statement at formal events.
  • Crystal Embellishments: Delicate crystal trim along the neckline adds a subtle sparkle, catching the light and elevating the dress to red-carpet-worthy status.

🧵 Product Details

  • Material: 95% Polyester, 5% Spandex (luxury velvet fabric with soft lining)
  • Lining: Full polyester lining for modesty and comfort, preventing sheerness while maintaining the velvet’s plush texture.
  • Closure: Hidden back zipper with hook-and-eye closure for easy wear and a seamless, polished finish.
  • Neckline: Strapless sweetheart neckline with crystal trim and anti-slip band.
  • Sleeves: Sleeveless (strapless design).
  • Skirt: High-low ruffle skirt with 3D floral detail at the waist.
  • Silhouette: Fitted bodice + high-low ruffle maxi skirt (asymmetrical, flowy, and elegant).
  • Length: High-low maxi (front: 90-94cm, back: 135-139cm, varying by size), designed to pair perfectly with heels for a red-carpet-worthy look.
  • Care Instructions: Dry clean recommended / hand wash cold, do not bleach, hang dry, low iron if needed (avoid ironing directly on velvet to preserve texture).

🌆 Usage Scenarios

This versatile red velvet maxi dress is made for every moment you want to feel like a Hollywood star:
  • Wedding Events & Bridal Occasions: The perfect wedding guest dress! Ideal for evening weddings, engagement parties, or rehearsal dinners—pair with diamond drop earrings and a sleek clutch for a sophisticated, elegant ensemble that honors the occasion without overshadowing the bride.
  • Formal Evening Galas & Black-Tie Events: Pair with strappy black heels and a statement necklace for a red-carpet-worthy look at charity galas, award shows, or black-tie dinners—you’ll exude timeless luxury and passion.
  • Prom & Graduation Balls: A stunning option for prom, graduation balls, or milestone celebrations—this dress will make you the belle of the ball, with its velvet texture and ruffle skirt adding fairy-tale charm.
  • Romantic Date Nights & Anniversary Dinners: Wear with delicate gold jewelry and ankle boots for an intimate, head-turning dinner date. The rich red hue and ruffle skirt exude passion and allure, making it the perfect “statement date dress.”
  • Holiday & Festive Events: The ideal Christmas, New Year’s Eve, or Valentine’s Day dress! The bold red hue is perfect for festive celebrations, ensuring you stand out in holiday photos and events.
  • Photo Shoots & Special Occasions: Photogenic design that captures breathtaking photos, making it the ideal dress for engagement shoots, birthday photoshoots, or any moment you want to look timeless and glamorous.

💡 Size & Fit Tips

  • Fit: True to size, with a structured fitted bodice. If you prefer a more relaxed fit through the bodice, we recommend sizing up.
  • Model Info: Model is 175cm/5'9" tall, wearing size S (bust 88cm/35", waist 66cm/26").
  • Measurement Note: All measurements are taken flat, please allow ±2cm error due to manual measurement. The velvet fabric has a gentle stretch, so it will conform to your body while maintaining its structured shape.
  • Length Note: The high-low hem is designed to work with heels; the front hem hits above the knee, while the back hem grazes the floor for a dramatic effect.

🛍️ Why Choose This Dress?

This red velvet strapless ruffle high-low maxi dress isn’t just clothing—it’s a legacy piece. The structured bodice sculpts your figure to perfection, the crystal trim adds subtle sparkle, and the dramatic ruffle skirt creates a regal, unforgettable silhouette. The rich ruby red hue makes it a timeless addition to your formal wardrobe—one you’ll reach for again and again for every special occasion. Whether you’re making a grand entrance or sharing a quiet moment, this dress will make you feel confident, beautiful, and utterly unforgettable. It’s the ultimate statement gown for the woman who wants to stand out in style!