Free shipping on orders over $34
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
1 / 6
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
Crystal Jewelry Set for Women Random Color 1 Set  femme brincos e colares Earrings Rings Necklaces bijoux femme tendance
0% OFF

Crystal Jewelry Set for Women Random Color 1 Set femme brincos e colares Earrings Rings Necklaces bijoux femme tendance

$10.74
0 sold
Qty 99996 in stock
Model Number : N122
Shape\pattern : Water Drop
Included Additional Item Description : earrings,necklace
Occasion : Party
Material : Rhinestone
Gender : Women
Style : Bohemia
Jewelry Sets Type : Necklace/Earrings
Metals Type : Zinc alloy
Brand Name : guangtuo

Fine or Fashion : Fashion
Item Type : Jewelry Sets

Notice

If you get broken product or defective products, please feel free to contact us via customer service, we will arrange to resend or refund you asap once we are online.

How to buy different color in one order?

just click one color option picture, then click "+", it will go to your shop cart automatically, then click another color option picture, and click "+", then do it one by one, finally pay for them together




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