Cash on Delivery to Japan,Taiwan HongKong and Singapore ,Free shipping over USD$59
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
1 / 9
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
Outdoor Waterproof Portable Stowable String Light
You May Also Like Don't Like These?
mysite

Outdoor Waterproof Portable Stowable String Light

$29.99 $59.99
1 sold
Qty 987 in stock

FEATURES

  • ◪Add Warmth: Light up your outdoor adventures and add warmth to your nights with these tent string lights. They can illuminate your tent, create a cozy atmosphere, and combine camping lights and ambient string lights into a compact unit.

  • ◪Catered Camping: These tent string lights offer adaptable illumination, featuring multiple light modes to create the perfect ambiance for any occasion. Choose from warm white, cool white, or flashing modes for diverse outdoor lighting needs. Perfect for crafting a unique camping experience.

  • ◪Magnetic Versatility: Securely attach these camping tent string lights to any iron object and enjoy quick and easy illumination. With a firm grip and a powerful magnet on the back, it provides hands-free lighting that's perfect for any outdoor adventure.

  • ◪Strong Waterproof Effect: Our tent string lights go beyond just being waterproof, they also add to the ambiance of your camping experience. Even during a rainy day, you can use them as regular lighting. Perfect for outdoor use in any weather.

  • ◪Powerful Backup: These tent string lights can turn into a mobile power source in seconds outdoors, with a built-in 2000mAh battery that can work for 5-12 hours after being fully charged. They also have USB power output with TYPE-C fast charging, which can be used to charge your phones and other devices.

SPECIFICATIONS

  • Material: PC+ABS+magnet

  • Size: 

  • Weight: 210 g 

  • Power: 3W

  • Battery life: 5-12h

  • Waterproof grade: IP44

  • Battery capacity: polymer 2000mah

  • Charging method: type-c 5V 1A

  • Output mode: USB output

  • Charging time: about 5 hours

  • Light source type: LED

PACKAGE

  • 1 * Outdoor Waterproof Portable Stowable String Light

NOTE

  • Please allow slight measurement deviations due to manual measurement.

  • Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed in the pictures.

You May Also Like Don't Like These?
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);