Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
9 / 13
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
Double-Sided Buckle iPhone Case
41% OFF

Double-Sided Buckle iPhone Case

$19.99 $33.90
1 sold
Color
Model
Qty
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
🏆Payments Via PayPal® and CreditCard.
🙂Handling time>> Ship within 1-3 days after payment.
💯Returns>> Fast refund for any dissatisfaction within 30 days, 100% money-back guarantee.
🚢Shipping>>We'll arrange the fastest shipping for you. Free Shipping On Orders Over $59.99
🔥98.9% Of Customers Are Buying 2 Or More
Double-Sided Buckle iPhone Case

The style is fashionable and beautiful, buy our products to give your mobile phone a safe case!


High-definition transparency, can provide the best natural viewing experience, and has a hydrophobic and oleophobic screen coating.

 

MAIN FEATURES

Our two-sided glass case upgrade comes with a full-cover lens for scratch and wears resistance.No magnetic + straight edge metal design perfectly fits the mobile phone. Compared with the market glass shell hollow-out lens, easy into the ash, easy to scratch.

Newly upgraded double-sided buckle glass shell, self-locking double-sided lock design, how can not be broken open. It is sturdy and efficient to protect your mobile phone from injury. Compared with ordinary glass cases in the market, there is no lock, the broken screen will fly out when the phone is dropped.

 
Double-sided explosion-proof enhancement is 20 times, both sides are made of high-aluminum silicon ion explosion-proof glass, which will not break even if you drop it. High-quality materials can provide unparalleled protection and have higher durability.

 
Support wireless charging without affecting signal transmission. The slim case is perfect for your device, with easy access to all ports, speakers, chargers, and all iPhone functions.

SPECIFICATIONS
PRODUCT WEIGHT 90G
PRODUCT SIZE
(L X W X H)
25 × 20 × 2cm / 9.8 × 7.9 × 0.8inches
PACKAGE CONTENTS Double-Sided Buckle iPhone Case × 1
MATERIAL High-aluminum silicon ion explosion-proof glass+Metal

Ø The mobile phone pictures that appear are only used to display the product

Ø The trademarks of all products on the website belong to their copyright owners, and the website is only used to indicate the objects to which the products are applicable. If there are objections to the use of the copyright owner’s website, you can contact the website for processing.

NOTE

  • Due to manual measurements, please allow slight measurement deviations.
  • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed in the picture.
Shipping
Handling time>> Ship within 1-3 days after payment
PayPal or  Credit Card
Returns>> Fast refund,100% Money Back Guarantee.
Our Guarantee
We truly offer the most stunning, trendy highest-quality products in the world.
We will do WHATEVER it takes with outstanding customer service support to assist everyone as we highly value our customer satisfaction with absolute ZERO risk.
We make sure that every customer is 100% satisfied in every aspect with 24/7/365 FAST SUPPORT!
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);