🎁Free Shipping on Orders Over $59🎉
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
15 / 23
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
Christmas LED Holiday Lights
50% OFF
Fnkus

Christmas LED Holiday Lights

$19.96 $39.99
0 sold
Style
Size
Qty 1000 in stock

🎄Simply decorate the Christmas scene and welcome Christmas together

💝Put on the lights full of Christmas elements, And instantly feel the strong festive atmosphere

🎄Every guest who comes to your house will be surprised by this funny Christmas Tree Ornament! Let your friends or family feel the joy of Christmas.

✨Gives off a warm and charming glow. This light creates a romantic atmosphere and is perfect for decorating your yard, garden, room, wedding, Christmas tree and parties.

💡We got creative inspiration from 3D lights and made a series of modifications to make it more suitable for more occasions.

🌈If you are tired of monotonous colorful string lights, this creative 3D Christmas lights will definitely make you enjoy a special Christmas with a difference.

🌟The light board is made of high-quality materials,

with high light transmittance, and the overall look is very transparent and bright after lighting.

🎁The ideal Christmas maker to create more memorable moments in your life.

❤️Patterns include 🎄Christmas tree, 🎅Santa Claus, ❄snowflakes, ⛄snowman, 🦌elk, 🔔bells.

😎The light string on the window adopts laser engraving technology, with clear texture, smooth lines and no burr.

When the light is turned on, it has a three-dimensional effect and is very beautiful

🏡They are specially designed for Christmas and are ideal decorations for homes, bedrooms, windows, curtains, doors, walls, gardens, patios, porches, fences, walkways and passages.

Just set them up and bring light and art into your sweet space.

Soft warm white shimmering lights add warmth and playfulness.

Battery Operated

Our lighted Christmas is battery operated (needs 3 AA batteries, not included), and you can use it anywhere, especially where there are no power supplies.

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