Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
1/2
Christmas Book Tree Ornament, Book Lover Christmas Ornament
Christmas Book Tree Ornament, Book Lover Christmas Ornament
1/2

Christmas Book Tree Ornament, Book Lover Christmas Ornament

$17.99
$29.99
Save $12.00
It's been recommended by 683 people on Facebook, Twitter and Instagram
Style
Please select a style
Quantity
/** @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);
Weight: 0kg
Barcode:

🔎Still choosing Christmas ornaments?

🔥Hanging this unique ornament on your Christmas tree or sending it to families and friends as a holiday gift will be a perfect way to create lasting, loving memories.

Product Features:
  • Made of acrylic one is made from acrylic plexiglass.
  • Size: 8 cm diameter and 3 mm thickness.
  • Double sides, dye-sublimation printing;
  • The printed design is clear to ensure no color is faded;
  • Includes 1x ornaments, 1x ribbon, which can be hung on Christmas trees, refrigerators, doors, windows, walls, or anywhere you want as decorations.  

Ornament is used to display as home decoration or meaningful gifts for friends and relatives on special occasions such as 🎅Christmas, 🌹Valentine's, 🎂birthday, etc. It is also suitable for expressing your personality.

Note:

⚠All products are made to order and printed to the best standards available. They do not include embellishments, such as rhinestones or glitter. 2D Effect. P/S: There are no real lights.

🛒Click ADD TO CART To Order Yours Now!

Men's Wear