🎁Free Shipping on Orders Over $59🎉
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
1 / 10
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
Reflective Light Bulb Magnet Decoration Set
41% OFF
Fnkus

Reflective Light Bulb Magnet Decoration Set

$9.99 $16.99
0 sold
1 Set 10 Pcs
Qty 1000 in stock

😘So very cute! ❤️This is a fun way to dress up a car for the holidays.🎁

Made of reflective film and magnetic back. These reflective Christmas bulb magnets seem to light up when the headlights are illuminated. They shine like real light bulbs in the sun or light. 

These magnets can stay in the car well in rain, wind and snow or when driving at high speed. Before pasting, please make sure the surface is clean and dry.

Suitable for any surface. Suitable for your cars, vehicles, jeeps, trucks, trucks, garage doors, refrigerators, mailboxes, etc.

Easy to apply, adjust and remove-they can be adjusted and removed without leaving any residue. The holidays are super festive.

SIZE:

Christmas Bulb

Christmas Patches

FeedBack

Mikaela Olsen

In my opinion these were really great

Barbara J

They are bright and colorful. Very cute for holiday festivities! 🥰

Andrea F

I love them!! They are so useful! 

Kat

I put them on my Gladiator and they look good! The reflectivness is really nice!

Jando92

I've used them for about 2 weeks. They've held up well and they reflect very well

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