🎁Free Shipping on Orders Over $59🎉
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
1 / 8
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
Multifunction Rearview Mirror Phone Holder
44% OFF
Fnkus

Multifunction Rearview Mirror Phone Holder

$19.99 $35.98
0 sold
Color
Qty 1000 in stock

What can this multi-function phone holder do for you?

Car rearview mirror bracket

First-person perspective bracket

Car rear bracket

Cooking in the kitchen

Table cloud gathering

Chasing drama in bed

Desk Internet Class

It can be used wherever it can be clamped!


MAIN FEATURES

▷ [Adjustable Angle]

The car phone holder can rotate 960° to meet the needs of different sightlines; Meanwhile, it also supports horizontal and vertical screen switching, the navigation angle can be adjusted at will, which is convenient for you to plan your route and drive better.

▷ [Practical Holder]

The car phone mount adopts concealed design, when you using it, just pull the holder out of the rearview mirror; If not needed, you can hide the holder behind the rearview mirror with a light push, does not disturb your sight, and does not affect your driving safety.

▷ [One-hand Operate]

This bracket allows the mobile phone or GPS to be mounted on the rearview mirror, convenient for you to touch the screen with one hand while driving, and you can adjust the navigation route only by one hand, to ensure driving safety and reassure your family.

▷ [Adjustable Width]

50-100mm adjustable width, which applies to various types of mobile phones, you can adjust according to your needs.

▷ [Suitable For Any Occasion]

3-21mm clip width, you can clip the phone holder anywhere. in addition to the rearview mirror, you Can also be installed in car seats, kitchens, bedrooms, which is convenient for you to study, work, and pass the boring time.


SPECIFICATIONS

Color: Black, green

Weight: 139g

Package Includes: 1 x Multifunction Rearview Mirror Phone Holder

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