🔥🔥We Offer Free Shipping Worldwide 🔥🔥
Customized
New Arrivals
Best Sellers
Categories
(FDD+ABD+OAD) Diamond Painting
AB Drill DP
Fairy Dust Drills
Mystery DP
Round Drill
Square Drill
Cartoon
Animal
Abstract
Landscape
Flower
Festival
Portrait
Heart&Love
Mandala
Vehicle
Religion
Building
Others
Artist Zone
Heidis Kreativ Lounge
Lovecraftforever--Nataliya
Slys Diamond Art
DP Hobbyist Kim
Rosa87lie--Cindy
Bianca Diamond Arts
Tina Diamond Art
Marie AI.Kunstwerke
Jhon Whtie Arts
Destiny Diamond Painting
Sophia Diamond Arts
Diamonds & Pictures--Anika
Peggy Diamond Arts
Amelia Art
R.Rigar Diamond Art
Kimmy Diamond Art
Kristie Kenefick Art
Andy Diamond Art
Mezmerizing Diamond Art
Marimenchu Dimond Art
Finisias Magic Diamond Artwork
Enchanted Hues™ by Kristie Kenefick
Tommy Diamond Art
Chuck Diamond Art
Sheena Art
Stephanie Art
Macarena Diamod Art
Joseph Art
Susan Art
Lyra Art
Lola Art
Fonsindiamond Art
Gran Annie Art
Alicia Art
Velvet Thorn Studio Art
Amy Art
Randal Art
Kayomi Art
Star Art
Carlson Art
Olo Polo Art
Percie Art
Lyubomudrova Art
Haff Camp Art
Leire Diamond Art
Diamondpiu Art
Jordan Art
Morales Art
Holly Art
Denye Art
Bukhari Art
Grove Art
Theresa Art
Lyer Ligi Art
Suntech Art
Milli Kaye Designs
Geneva Art
Maryline Art
Leon Art
Brown Art
Mugg Art
Riou Kula Art
Diamondbykelly Art
Malawi Art
Nikitopouloue Art
MacPetri Art
Ekaterina Art
Jaimes Art
Alissa Art
Artifey Art
Gemma Art
Deli Art
Toni Art
Beta Art
Monty Ann Art
Jeremy Art
Kinkade Art
Ketner Art
Harai Art
Dona Art
Isabella Art
Nikki Diamond Art
Katharina Art
Justice Art
Ondo Art
Olivia Art
Charlotte Art
Collection
Owl
Tiger
Dragon
Christmas
Snow
Skull
Doll
Stained Glass DP
Saying
Halloween
Colorful
Bear
Wolf
Cat
Dog
Sunflower
Rose
Affiliate
Login
Register
Login
Register
New Arrivals
21383 Products
Sort by
Recommend
Price,low to high
Price,high to low
Newest in
Total sales, high to low
Purchases,high to low
Pageviews,high to low
Quick View
©Alicia Art – Peaceful Countryside Swing by the Water Landscape (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Alicia Art – Gothic Flower Girl (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Girl from a Colorful Fairytale Village (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Goddess with Long Golden Hair (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Colorful Flowers Landscape (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Tree Spirit (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Pop Girl (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Guitar Beauty (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Cowgirl Beauty (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Colorful Butterfly (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art - Cute Penguin (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Celtic Triquetra Symbol (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art - Cute Girl (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Four Cute Girls (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Beauty Wearing a Floral Wreath (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Blue-Haired Girl (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art – Boy with an Umbrella in the Rainbow Rain (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art- The Girl Who Kisses the Moon (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art-Stained Glass Girl (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art-Stained Glass Enchanting Mermaid (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Alicia Art- Anthropomorphic Corn Demon (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Sylvia- Little Dinosaur (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Sylvia- Little Dinosaur (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Sylvia - Girl and Dog (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Sylvia - Winter Beauty and Animals (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Sylvia - Winter Little Girl and Deer (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Sylvia - Winter Girl and Rabbit (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting – Teapot Fairy Tale Cottage (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting – Royal Palace and Magnificent Garden Scenery (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting – Wild Beach Life (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£18.99
Quick View
©Ruben Diamond Painting - Colorful Dog (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting – Ships Sailing on Rough Seas (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting - Train Scenery (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting – Japanese Cherry Blossoms and Mount Fuji Landscape (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting-Sunset Scenery at Rio Tinto Pier (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting-Beauty in Traditional Attire (Velvet Cloth) full drill (FDD+ABD+OAD) diamond painting
£12.99
Quick View
©Ruben Diamond Painting – Castle Landscape (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£13.99
Quick View
©Ruben Diamond Painting – Girl Painting the Sea from a Balcony (velvet cloth) full drill (FDD+ABD+OAD) round/square diamond painting
£15.99
Quick View
©Chuck Art -Handsome Kittens Gathering (Velvet Cloth) full round or square drill diamond painting
£12.99
Quick View
©Chuck Art -Cow in the Meadow (Velvet Cloth) full round or square drill diamond painting
£12.99
Quick View
©Chuck Art -Girl And Cat (Velvet Cloth) full round or square drill diamond painting
£12.99
const TAG = "spz-custom-announcement"; const DISPLAY_TYPE = { ANNOUNCEMENT: "PTT_BANNER" // 公告栏 }; const API = { LIST: `/api/storefront/promotion/placement/list`, // 获取公告栏列表 REPORT: `/api/storefront/promotion/placement/data/report` // 上报数据 }; const DISPLAY_DEVICE = { PC_AND_MOBILE: "PD_PC_MOBILE", // PC和移动端 PC: "PD_PC", // PC MOBILE: "PD_MOBILE" // 移动端 }; const REPORT_EVENT = { CLICK: "PE_CLICK", // 点击事件 IMPRESSION: "PE_IMPRESSION" // 曝光事件 }; const POSITION = { TOP: "PP_TOP", // 顶部 BOTTOM: "PP_BOTTOM" // 底部 } const MODE = { FIXED: "PM_FIXED", // 固定 NORMAL: "PM_SCROLLING" // 滚动 } const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name; class SpzCustomAnnouncement extends SPZ.BaseElement { constructor(element) { super(element); this.announcementList_ = []; // 公告栏数据 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.fetchData_(); this.createAnnouncementDom_(); this.listenCartChange_(); } fetchData_(type = '') { const id = window.SHOPLAZZA.meta.page.template_type === 51 ? window.SHOPLAZZA.meta.page.resource_id : 0; return this.xhr_.fetchJson(API.LIST, { method: 'POST', body: { page_id: window.SHOPLAZZA.meta.page.template_type, placement_type: DISPLAY_TYPE.ANNOUNCEMENT, discount_id: id } }).then((res) => { this.announcementList_ = res.list || []; if (this.announcementList_.length > 0) { this.announcementList_.forEach((item) => { item.config = JSON.parse(item.config); }); } if(type === 'cartChange') { this.announcementList_.forEach((item) => { this.updateText_(item); }); } else { this.doRender_(this.announcementList_); } }).catch((error) => { console.error(error); }) } doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, { list: this.announcementList_ }) .then((el) => { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); this.element.appendChild(el); }) .then(() => { this.announcementList_.forEach((item) => { this.showAnnouncement_(item); }); }).then(() => { this.handleThemeCompatibility_(); }); } // 更新文案 updateText_(item) { const announcement = document.querySelector(`#announcement-${item.id}`); const announcementText = announcement.querySelectorAll('.announcement_text'); const textArr = item.config.text_discount.replace_texts; const textDom = textArr.map((text) => { return `
${text}
`; }).join(','); announcementText.forEach((text) => { text.innerHTML = textDom; }); } // 创建公告栏dom createAnnouncementDom_() { const isHero = /Hero/.test(THEME_NAME); const isEva = /Eva/.test(THEME_NAME); const headerEl = document.querySelector('[data-section-type="header"]'); const headerSticky = headerEl && SPZCore.Dom.computedStyle(this.win, headerEl).position === 'sticky'; // 创建滚动的底部公告栏 const announcementBottomContainer = document.createElement('div'); announcementBottomContainer.className = 'announcement__container_bottom bootstrap'; document.body.appendChild(announcementBottomContainer); // 创建固定的底部公告栏 const announcementBottomSticky = document.createElement('ljs-sticky'); announcementBottomSticky.className = 'announcement__container_bottom-sticky'; announcementBottomSticky.setAttribute('layout', 'container'); announcementBottomSticky.setAttribute('position', 'bottom'); announcementBottomSticky.style.position = 'fixed'; announcementBottomSticky.style.bottom = '0'; announcementBottomSticky.style.left = '0'; announcementBottomSticky.style.right = '0'; announcementBottomSticky.style.zIndex = '1030'; document.body.appendChild(announcementBottomSticky); const announcementTopContainer = document.createElement('div'); announcementTopContainer.classList.add('announcement__container_top'); if (isHero) { announcementTopContainer.classList.add('announcement__container_top_zIndex_1030'); } announcementTopContainer.classList.add('bootstrap'); document.body.insertBefore(announcementTopContainer, document.body.children[0]); const announcementTopFixedContainer = document.createElement('div'); announcementTopFixedContainer.classList.add('announcement__container_top-fixed'); if (isHero) { announcementTopFixedContainer.classList.add('announcement__container_top_zIndex_1030'); } announcementTopFixedContainer.classList.add('bootstrap'); const insertBeforeElement = headerSticky ? headerEl : document.body; insertBeforeElement.insertBefore(announcementTopFixedContainer, insertBeforeElement.children[0]); if (isEva) { const evaHeader = document.querySelector('header.header'); const isEvaMaskHeader = evaHeader && SPZCore.Dom.computedStyle(this.win, evaHeader).position === 'absolute'; let fixedBannerTopContainer = document.querySelector('.announcement__container_top-fixed'); if (isEvaMaskHeader) { if (fixedBannerTopContainer) { fixedBannerTopContainer.remove(); } const newBanner = document.createElement('div'); newBanner.className = 'announcement__container_top-fixed bootstrap'; document.body.insertBefore(newBanner, document.body.firstChild); fixedBannerTopContainer = newBanner; } else { if (!headerEl) return; const observer = new MutationObserver(() => { const isSticky = SPZCore.Dom.computedStyle(this.win, headerEl).position === 'sticky'; if (!isSticky) return; const isTopFixedAnnouncementInHeader = headerEl.querySelector('.announcement__container_top-fixed'); if (isTopFixedAnnouncementInHeader) return; const announcementTopFixedContainer = document.querySelector('.announcement__container_top-fixed'); if (announcementTopFixedContainer) { announcementTopFixedContainer.remove(); headerEl.insertBefore(announcementTopFixedContainer, headerEl.children[0]); observer.disconnect(); } }); observer.observe(headerEl, { attributes: true, attributeFilter: ['style', 'class'] }); } if (headerSticky && !isEvaMaskHeader && fixedBannerTopContainer) { fixedBannerTopContainer.style.position = 'relative'; fixedBannerTopContainer.style.zIndex = '29'; } } } // 展示公告栏 showAnnouncement_(item) { const announcement = document.querySelector(`#announcement-${item.id}`); const announcementBottomContainer = document.querySelector('.announcement__container_bottom'); const announcementBottomSticky = document.querySelector('.announcement__container_bottom-sticky'); const announcementTopContainer = document.querySelector('.announcement__container_top'); const announcementTopFixedContainer = document.querySelector('.announcement__container_top-fixed'); const isPC = this.viewport_.getWidth() >= 960; const isMobile = this.viewport_.getWidth() < 960; const isMatchPCDevice = item.device === DISPLAY_DEVICE.PC_AND_MOBILE || item.device === DISPLAY_DEVICE.PC; const isMatchMobileDevice = item.device == DISPLAY_DEVICE.PC_AND_MOBILE || item.device === DISPLAY_DEVICE.MOBILE; if((isPC && isMatchPCDevice) || (isMobile && isMatchMobileDevice)) { if (item.position === POSITION.BOTTOM) { if(item.mode === MODE.FIXED) { announcementBottomSticky && announcementBottomSticky.appendChild(announcement); } else { announcementBottomContainer && announcementBottomContainer.appendChild(announcement); } } else { if (item.mode === MODE.FIXED) { announcementTopFixedContainer && announcementTopFixedContainer.appendChild(announcement); } else { announcementTopContainer && announcementTopContainer.appendChild(announcement); } } this.reportData({ placement_id: item.id, event: REPORT_EVENT.IMPRESSION }); } } // 处理主题兼容 handleThemeCompatibility_() { try { const isBoost = /Boost/.test(THEME_NAME); const isHyde = /Hyde/.test(THEME_NAME); const isEva = /Eva/.test(THEME_NAME); const boostHeader = document.querySelector('.boost-header'); const fixedBannerTopContainer = document.querySelector('.announcement__container_top-fixed'); const notFixedBannerTopContainer = document.querySelector('.announcement__container_top'); const headerEl = document.querySelector('[data-section-type="header"]'); const headerSticky = headerEl && SPZCore.Dom.computedStyle(this.win, headerEl).position === 'sticky'; const header = document.querySelector('.header__fixed') || document.querySelector('.header__wrapper'); const headerFixed = header && SPZCore.Dom.computedStyle(this.win, header).position === 'fixed'; const handleScroll = SPZCore.Types.throttle(this.win, () => { if (isHyde) { if (header && headerSticky) { header.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } else { notFixedBannerTopContainer.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } } if (isEva) { const evaHeader = document.querySelector('header.header'); const isEvaMaskHeader = evaHeader && SPZCore.Dom.computedStyle(this.win, evaHeader).position === 'absolute'; if (!isEvaMaskHeader) return; if (evaHeader.classList.contains('header__fixed')) { evaHeader.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } else { notFixedBannerTopContainer.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } if(document.documentElement.scrollTop === 0) { evaHeader.style.marginTop = '0'; } } if (headerSticky) return; if (headerFixed) { header.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } else { const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList' && fixedBannerTopContainer.childElementCount > 0) { notFixedBannerTopContainer.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; observer.disconnect(); // 停止观察 break; } } }); // 开始观察 fixedBannerTopContainer 的子节点变化 observer.observe(fixedBannerTopContainer, { childList: true, subtree: true }); // 初始检查 if (fixedBannerTopContainer.childElementCount > 0) { notFixedBannerTopContainer.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } if(header) { header.style.marginTop = '0'; } } if (isBoost) { fixedBannerTopContainer.style.zIndex = '1031'; if (boostHeader && boostHeader.classList.contains('header__fixed')) { boostHeader.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } else { notFixedBannerTopContainer.style.marginTop = `${fixedBannerTopContainer.offsetHeight}px`; } } }, 16); window.addEventListener('scroll', handleScroll); window.dispatchEvent(new Event('scroll')); } catch (error) { console.error('error', error); } } // 上报数据 async reportData(data) { // 如果是主题编辑器则不用处理 if(window.top !== window.self) { return; } this.xhr_.fetchJson(API.REPORT, { method: "POST", body: { placement_id: data.placement_id, event: data.event } }); } // 监听购物车变化事件dj.cartChange listenCartChange_() { SPZUtils.Event.listen(document, 'dj.cartChange', (event) => { this.fetchData_('cartChange'); }); } setupAction_() { this.registerAction('handleClose', (invocation) => { const data = invocation.args; const id = data.id; const announcement = document.querySelector(`#announcement-${id}`); announcement && SPZCore.Dom.removeElement(announcement); window.dispatchEvent(new Event('scroll')); }); this.registerAction('handleJumpLink', (invocation) => { const data = invocation.args; if(!data.show_url) return; data.url && window.open(data.url, data.open_new_window ? '_blank' : '_self'); this.reportData({ placement_id: data.id, event: REPORT_EVENT.CLICK }); }); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomAnnouncement);
${function() { return data.originData.list.map((item) => { const background = item.config.background; const interactive = item.config.interactive; const textArr = item.config.text_discount.replace_texts; const textColor = item.config.text_discount.color; const backgroundSize = background.presentation_rule === 'fill' ? 'cover' : 'contain'; const pcImage = (background.url && background.upload) ? background.url : ''; const mobileImage = (background.mobile_url && background.upload) ? background.mobile_url : ''; const color1 = background.color; const color2 = background.color2 || background.color; const backgroundStyle = `background: url(//img.staticdj.com/${pcImage}) center / ${backgroundSize} no-repeat, linear-gradient(to right, ${color1}, ${color2});`; const backgroundMobileStyle = `background: url(//img.staticdj.com/${mobileImage}) center / ${backgroundSize} no-repeat, linear-gradient(to right, ${color1}, ${color2});`; return `
${textArr.map((text) => { return `
${text}
` }).join(',')}
${textArr.map((text) => { return `
${text}
` }).join(',')}
` }) }()}