Extra Discount Code:【xstitch】Free shipping on orders over $59!!

1 / 9
1 / 9

14CT Two Sides Counted Cross Stitch Bookmark -  You're Just As Sane As I Am (18*6CM)

$11.99
$13.99 14% Off
Sku: 552367

HP Girl Bookmarks Needles Thread Cross Stitch Ecological Cotton 11CT 3 Strand Counted Embroidery Kits Canvas DIY Art Needlework Home Decoration Picture Craft 
Feature:
1. A guide graph made up of different numbers and symbols tells you where to draw the grid and which color lines to use. All you have to do is follow the symbols on the paper. Know how to start operating.
2. The natural ecological cotton is soft, colorful and durable, making your cross stitch smooth, vivid and durable.
3. Cross-stitch artworks will bring you a happy time and a sense of accomplishment when you finish your work. Your cross stitch artworks can be used as a home decoration or as a unique, meaningful and irreplaceable gift to your loved ones.
4. The product has two sides. After the positive and negative sides are repaired, they can be sewed together with tassels.

Specification:
Material: Cotton
Size:
Canvas size: 22*8cm
Painting heart size: 18*6cm
Cross stitch cloth type: 14CT 2 strands (canvas without printing)
 
Notes:
There is no border in the product, and both sides of the bookmark have the same pattern.
The color block in the drawing does not represent the color of the embroidery threads. Please carefully identify the symbol or the serial number corresponding to the color block and select the threads number according to the requirements of the serial number.
Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed on the pictures. Thank you!
Please allow 1-2mm measuring deviation due to manual measurement.

Package Include:

1 x Embroidered Cloth
2 x Embroidery Needles
1 x Embroidery Thread Set
1 x Manual

We have put a lot of focus on making sure the items get delivered to our customers as quickly as possible. You will receive your order in 7-25 business days from the date that it is placed.

Verification

A confirmation email will be sent to you once the order is authorized and verified. We begin preparing your order immediately after it is verified. With this sort of time frame, it makes it difficult for us to change or cancel your order, however, we will do our best to support your request.

Processing

It normally takes 3-5 business days for us to process your order(If all items are available). Please note that this does not include holidays and weekends.

Shipping

EAT(estimated arrival time) 7-25 working days

Note: 

Shipping time is estimated and commences from the date of shipping, rather than the date of order, and can take longer than the expected date due to an invalid address, customs clearance procedures, or other causes.

Please submit a ticket within 6 months of shipment if the package does not arrive in time, our representative will get back to you within 24 hours. Note that overdue requests may not be accepted.

* Pls make sure your address info is right, and if you didn't receive our product at your wrong address, we would only refund you half, or you need to pay a shipping fee from us to get the package again.

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