🎁Free Shipping on Orders Over $59🎉
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
2 / 9
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
Outdoor Solar Garden Lights
50% OFF
Fnkus

Outdoor Solar Garden Lights

$14.95 $29.99
0 sold
COLOR
Style
BUY MORE SAVE MORE
Qty 997 in stock



EIGHT LIGHTING MODES: There are 8 different lighting modes for vivid and gorgeous visual effects.

undefined

DIY: You can create a variety of appearances by yourself

RUNS ON SOLAR POWER: Now you can have the warm torch light without ever having to light a match or throw a switch.  Best of all, there are no dangerous flames — LEDs in the light cast a safe, soft, mood-enhancing glow.

HIGH BRIGHTNESS: There are 3 LEDs on each line, and 90leds have 30 lines(Basic model)

WEATHERPROOF IP65 & EASY INSTALLATION: IP65 is Waterproof and Durable, the package comes with screws, and an installation set, no wiring is required, simply install anywhere you want

undefined

LONG WORKING TIME: Charging time: 8 hours on sunny days, the solar panels are enough to charge the battery at full strength. Light up 10 hours in summer and 8 hours in winter after fully charged. High-capacity 600mAh built-in battery

WIDE APPLICATION: The firework light can be installed on your garden, patio, lawn, backyard road, swimming pool, and more places to achieve the desired ambiance.

undefined

PARAMETER

  • Number of LEDs: 90 LEDs/120 LEDs/150 LEDs/200 LEDs
  • Luminous color:  warm white; colorful
  • Length:  36.7‘’
  • Waterproof: IP65
  • Mode: Eight lighting modes
  • Charging method: Outdoor light charging for about 6-8 hours
  • Lighting duration: about 8-10 hours
  • Working mode: Always Bright, Flashing
  • Application: garden, courtyard, lawn, roadside, poolside, etc.

Package Includes

  • Color box packaging
  • 1*Solar Light
  • 1*Solar Panel
  • 1*light stand

SHIPPING

  • We would greatly appreciate your patience and understanding as we work to meet demand while ensuring that every piece meets our high-quality standards.
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);