Premium Beauty Tools & Fashion Accessories

Expert Sourcing Partner for OEM/ODM Solutions.

Product Categories

Explore Our Collections

Beauty Tools
Beauty Tools

Beauty Tools

Makeup brushes, sponges, puffs, eyelash curlers — professional quality, wholesale pricing.

View Collection
Beauty Accessories
Beauty Accessories

Beauty Accessories

Handheld mirrors, vanity mirrors, hair accessories & jewelry — stylish designs for global brands.

View Collection
Gift & Crafts
Gift & Crafts

Gift & Crafts

Keychains, ornaments, promotional gifts — ideal for brand giveaways and retail.

View Collection
Why Choose Zonyin

Your Trusted Partner for Beauty Tools & Accessories

Global Shipping & Logistics

With a fully stocked warehouse and streamlined shipping process, we dispatch orders to over 50 countries — on time, every time.

OEM/ODM Customization

From logo printed to custom packaging design, we turn your brand vision into reality. Low MOQ, fast sampling, and dedicated project support at every step.

Scalable Production Capacity

With access to multiple automated production lines, we handle orders of any size — from small-batch OEM samples to high-volume wholesale shipments, without compromising on quality.

Case Studies

Trusted by Brands Worldwide

From Blank to Brand — Gentle Colors Mirror

A beauty brand needed custom handheld mirrors featuring their signature green-pink logo. We managed the full process — silver metallic finish, precision logo printing, and strict QC — delivering a product that matched their brand identity perfectly.

Full-Service Customization — Mirror + Packaging

A beauty brand came to us with a vision: custom monogram compact mirrors with matching gift packaging. We delivered the product and designed coordinated polka-dot boxes, giving their customers a premium unboxing experience from start to finish.

Complete Acetate Gift Set — Brush, Mirror & Clip

We produced the brush, hand mirror, and hair clip in matching blue marbled acetate, applied custom logo to each piece, and packaged everything in a quilted cotton pouch — delivering a premium, gift-ready collection.

From Design Drawing to Finished Product — ODM Brush Collection

A client provided product design drawings for a complete makeup brush collection. We produced the full 12-piece set with matching handles, rose-gold ferrules, and custom branding, then packaged everything in a coordinated pink cylindrical case — turning their concept into a shelf-ready product.

FAQ

Frequently Asked Questions

Everything you need to know about working with Zonyin.

We support flexible MOQ starting from 100 pieces. Mixed batch loading is also available — you can combine different products in one shipment to meet the minimum.

You provide design drawings or a reference sample. We evaluate feasibility, make molds (7-15 days), produce the first sample (3-5 days), and after your approval, begin mass production (15-20 days). A dedicated project manager guides you through every step.

Yes. For OEM orders, we provide custom samples in 1-3 days. For ODM orders, first samples are ready in 5-7 days after mold making. We iterate until you are 100% satisfied.

We accept T/T, L/C, PayPal, Western Union, MoneyGram, and credit card. Standard terms: 30% deposit to start production, 70% balance before shipment.

Every batch undergoes pre-shipment inspection — we check material, finish, logo quality, and function. We maintain a 99% customer satisfaction rate and fully support any issues that arise.

We ship worldwide — including North America, Europe, Middle East, Southeast Asia, and beyond. Delivery options include DHL, FedEx, sea freight, and air freight. We provide full export documentation and support DDP/DDU terms.

中间的内容,粘贴到 下面标注的「在这里粘贴」处(其余部分已经写好了,不用动)。 装配完成后,整个文件内容粘到 WPCode 插件的 JavaScript 片段里。 以后改产品只改这一个地方,7 个页面全部自动更新。 ============================================================ */ (function () { 'use strict'; // 页面上没有容器 → 什么都不做(所以这个脚本全站加载也不影响其他页面) var root = document.getElementById('zonyin-gallery'); if (!root) return; /* ---------- 1. 页面骨架:侧栏 + 网格 ---------- */ root.innerHTML = [ '
', ' ', '
', '
' ].join('\n'); /* ---------- 2. 网址 → 默认分类(不用改) ---------- */ var __zonyinSlugMap = { 'makeup-mirror': 'mirrors', 'makeup-brushes': 'brushes', 'powder-puffs': 'puffs', 'hair-clips': 'clips', 'combs': 'combs', 'gifts-crafts': 'gifts' }; function __zonyinDefaultCat() { var parts = window.location.pathname.split('/').filter(Boolean); for (var i = parts.length - 1; i >= 0; i--) { if (__zonyinSlugMap[parts[i]]) return __zonyinSlugMap[parts[i]]; } return 'all'; } /* ============================================================ ★★★★★ 在 这 里 粘 贴 ★★★★★ ------------------------------------------------------------ 粘贴内容:原来页面 之间的全部代码 从这一行开始: // ===== 颜色字典(只加不改) ===== 到这一行结束: renderProducts('all'); ⚠️ 不要带 标签 ============================================================ */ /* 在这里粘贴 */ // ===== 颜色字典(只加不改) ===== const colorMap = { '黑色': { hex:'#000000', label:'Black' }, '白色': { hex:'#FFFFFF', label:'White' }, '粉色': { hex:'#E8B4B8', label:'Pink' }, '薄荷绿': { hex:'#BFCCBB', label:'Mint Green' }, '大红色': { hex:'#EA2B1C', label:'Big Red' }, '浅蓝色': { hex:'#C2CBCF', label:'Light Blue' }, '紫色': { hex:'#CDBFEC', label:'Purple' }, '蓝色': { hex:'#B0CBE6', label:'Blue' }, '浅绿色': { hex:'#D8DAD1', label:'Light Green' }, '米色': { hex:'#F5DEB3', label:'Beige' }, '玳瑁色': { hex:'#8B4513', label:'Tortoiseshell' }, '珍珠白': { hex:'#FFF8F0', label:'Pearl White' }, '银色': { hex:'#C0C0C0', label:'Silver' }, '金色': { hex:'#D4AF37', label:'Gold' }, '玫瑰金': { hex:'#E8B4B8', label:'Rose Gold' }, '浅黄色': { hex:'#FFF4C2', label:'Light Yellow' }, '灰色': { hex:'#999999', label:'Gray' }, '橘色': { hex:'#FF8C42', label:'Orange' }, '黄色': { hex:'#F5D442', label:'Yellow' }, // 新增 '香槟金': { hex:'#E9D3A0', label:'Champagne Gold' }, // 新增 }; // 一键转换函数 function expandColors(arr) { return arr.map(c => { if (typeof c === 'string') { const m = colorMap[c]; if (!m) { console.warn('颜色未定义: ' + c); return null; } return { hex: m.hex, label: m.label, image: '' }; } // 兼容旧格式 { name, image } const m = colorMap[c.name]; if (!m) { console.warn('颜色未定义: ' + c.name); return null; } return { hex: m.hex, label: m.label, image: c.image || '' }; }).filter(Boolean); } // ===== 产品数据(只写中文颜色名 + 图片链接) ===== const products = [ { category:'mirrors', name:'Plastic heart-shaped handheld mirror', desc:'Size:10.5*17cm', colors: expandColors([script { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/爱心1粉色.png' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑色款.png' }, { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白色款.png' }, { name:'薄荷绿', image:'https://zonyin.com/wp-content/uploads/2026/07/薄荷绿款.png' } ]) }, { category:'mirrors', name:'Plastic heart-shaped handheld mirror', desc:'Size:13*18cm', colors: expandColors([ { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白.png' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑.png' }, { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉.png' }, { name:'大红色', image:'https://zonyin.com/wp-content/uploads/2026/07/大红.png' }, { name:'浅绿色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅绿.png' }, { name:'浅蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅蓝.png' }, { name:'紫色', image:'https://zonyin.com/wp-content/uploads/2026/07/紫.png' }, { name:'蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/蓝.png' } ]) }, { category:'mirrors', name:'Plastic heart-shaped handheld mirror', desc:'Size:8*12cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉-1.png' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑-1.png' }, { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白-1.png' }, { name:'薄荷绿', image:'https://zonyin.com/wp-content/uploads/2026/07/薄荷绿.png' }, { name:'蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/蓝-1.png' }, { name:'紫色', image:'https://zonyin.com/wp-content/uploads/2026/07/紫-1.png' } ]) }, { category:'mirrors', name:'Electroplated Heart-Shaped Handheld Mirror', desc:'Size:10.5*18cm', colors: expandColors([ { name:'银色', image:'https://zonyin.com/wp-content/uploads/2026/07/银.png' }, { name:'金色', image:'https://zonyin.com/wp-content/uploads/2026/07/金.png' }, { name:'玫瑰金', image:'https://zonyin.com/wp-content/uploads/2026/07/玫瑰金.png' } ]) }, { category:'mirrors', name:'Plastic Square-shaped handheld mirror', desc:'Size:9*16cm 12*21.5cm 15*27cm', colors: expandColors([ { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白.jpg' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑.jpg' }, { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉.jpg' }, { name:'薄荷绿', image:'https://zonyin.com/wp-content/uploads/2026/07/薄荷绿.jpg' }, { name:'蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/蓝.jpg' }, { name:'紫色', image:'https://zonyin.com/wp-content/uploads/2026/07/紫.jpg' } ]) }, { category:'mirrors', name:'Plastic Round-shaped handheld mirror', desc:'size:12*21.5cm', colors: expandColors([ { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白-1.jpg' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑-1.jpg' }, { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉-1.jpg' }, { name:'蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/蓝-1.jpg' }, { name:'浅黄色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅黄.jpg' }, { name:'紫色', image:'https://zonyin.com/wp-content/uploads/2026/07/紫-1.jpg' } ]) }, { category:'mirrors', name:'Plastic Square-shaped handheld mirror', desc:'size:13*23cm', colors: expandColors([ { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/2.jpg' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑-2.jpg' }, { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/3.jpg' }, { name:'大红色', image:'https://zonyin.com/wp-content/uploads/2026/07/4.jpg' }, { name:'浅绿色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅绿.jpg' } ]) }, { category:'mirrors', name:'Candy-colored handheld mirror', desc:'size:11*20cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉-2.jpg' } ]) }, { category:'mirrors', name:'Water Ripple Handheld Mirror', desc:'size:11*16cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/Pink.jpg' }, { name:'银色', image:'https://zonyin.com/wp-content/uploads/2026/07/Silver-scaled.png' } ]) }, { category:'mirrors', name:'Heart-shaped leather mirror', desc:'Size:8*9cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉-2.png' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑.jpeg' }, { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白.jpeg' }, { name:'大红色', image:'https://zonyin.com/wp-content/uploads/2026/07/红.jpeg' }, { name:'黄色', image:'https://zonyin.com/wp-content/uploads/2026/07/黄.jpeg' }, { name:'灰色', image:'https://zonyin.com/wp-content/uploads/2026/07/灰.jpeg' }, { name:'橘色', image:'https://zonyin.com/wp-content/uploads/2026/07/橘.jpeg' }, { name:'米色', image:'https://zonyin.com/wp-content/uploads/2026/07/米色.jpeg' }, { name:'紫色', image:'https://zonyin.com/wp-content/uploads/2026/07/紫.jpeg' }, { name:'香槟金', image:'https://zonyin.com/wp-content/uploads/2026/07/香槟金.jpeg' } ]) }, { category:'mirrors', name:'Round-shaped leather mirror', desc:'Size:8*8cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉.jpeg' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑-1.jpeg' }, { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白-1.jpeg' }, { name:'大红色', image:'https://zonyin.com/wp-content/uploads/2026/07/红-1.jpeg' }, { name:'黄色', image:'https://zonyin.com/wp-content/uploads/2026/07/黄-1.jpeg' }, { name:'灰色', image:'https://zonyin.com/wp-content/uploads/2026/07/灰-1.jpeg' }, { name:'橘色', image:'https://zonyin.com/wp-content/uploads/2026/07/橘-1.jpeg' }, { name:'浅蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅蓝.jpeg' } ]) }, { category:'mirrors', name:'Round-shaped leather mirror', desc:'Size:8*8cm', colors: expandColors([ { name:'粉色', image:'https://zonyin.com/wp-content/uploads/2026/07/粉1.jpeg' }, { name:'黑色', image:'https://zonyin.com/wp-content/uploads/2026/07/黑1.jpeg' }, { name:'白色', image:'https://zonyin.com/wp-content/uploads/2026/07/白1.jpeg' }, { name:'大红色', image:'https://zonyin.com/wp-content/uploads/2026/07/红1.jpeg' }, { name:'黄色', image:'https://zonyin.com/wp-content/uploads/2026/07/黄1.jpeg' }, { name:'灰色', image:'https://zonyin.com/wp-content/uploads/2026/07/灰1.jpeg' }, { name:'橘色', image:'https://zonyin.com/wp-content/uploads/2026/07/橘1.jpeg' }, { name:'浅蓝色', image:'https://zonyin.com/wp-content/uploads/2026/07/浅蓝1.jpeg' } ]) }, // ===== 新增示例:数字切图卡片 ===== // 用法:把 colors 换成 images,数组里直接写图片链接,有几张就显示几个数字按钮 // 下面 3 张暂时用了站内已有图片做演示,请换成这款产品真实的多角度图(或直接删除这条) { category:'mirrors', name:'Square-shaped leather mirror', desc:'Size:8*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/方形钥匙扣.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/方形钥匙扣2.jpg', ] }, { category:'mirrors', name:'Square-shaped leather mirror', desc:'Size:8*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/方形钥匙扣3.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/方形钥匙扣4.jpg', ] }, { category:'mirrors', name:'Star-shaped leather mirror', desc:'Size:8.6*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/星星钥匙扣.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/星星钥匙扣2.jpg', ] }, { category:'mirrors', name:'Star-shaped leather mirror', desc:'Size:8.6*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/星星.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/星星2.jpg', ] }, { category:'mirrors', name:'Flowers-shaped leather mirror', desc:'Size:7.8*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/花朵钥匙扣.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/方形钥匙扣2-1.jpg', ] }, { category:'mirrors', name:'Flowers-shaped leather mirror', desc:'Size:7.8*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/花朵无钥匙扣2.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/花朵无钥匙扣1.jpg', ] }, { category:'mirrors', name:'Apple-shaped leather mirror', desc:'Size:7.5*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/苹果钥匙扣.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/苹果钥匙扣2.jpg', ] }, { category:'mirrors', name:'Apple-shaped leather mirror', desc:'Size:7.5*8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/苹果绳子.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/苹果绳子2.jpg', ] }, { category:'mirrors', name:'Square-shaped Stainless steel leather mirror', desc:'Size:6.8*6.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/方形不锈钢.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/方形不锈钢2.jpg', ] }, { category:'mirrors', name:'Rectangle-shaped Stainless steel leather mirror', desc:'Size:6*7cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/矩形不锈钢.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/矩形不锈钢2.jpg', ] }, { category:'mirrors', name:'Rectangle-shaped fold leather mirror', desc:'Size:7*10.8cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/矩形折叠镜.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/矩形折叠镜2.png', ] }, { category:'mirrors', name:'Round-shaped fold leather mirror', desc:'Size:7.2*7.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/圆形折叠镜2.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/圆形折叠镜.jpg', ] }, { category:'mirrors', name:'Round-shaped fold leather mirror', desc:'Size:7.2*7.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/圆形折叠镜3.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/圆形折叠镜4.jpg', ] }, { category:'mirrors', name:'Fold leather mirror', desc:'Size:7.2*7.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/小飞象皮革镜.jpg', ] }, { category:'mirrors', name:'Metal fold leather mirror', desc:'Size:7*7cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜.png', 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜2.jpg', ] }, { category:'mirrors', name:'Metal fold leather mirror', desc:'Size:6.5*6.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜3.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜4.jpg', ] }, { category:'mirrors', name:'Metal fold leather mirror', desc:'Size:6.5*6.5cm', images: [ 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜5.jpg', 'https://zonyin.com/wp-content/uploads/2026/08/小飞象金属镜6.jpg', ] }, ////////////////////化妆刷///////////////////// { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-02.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-03.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-04.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-05.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-06.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-07.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-08.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-09.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-10.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-11.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-12.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-13.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-14.png', ] }, { category:'brushes', name:'brushes Set', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-15.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-16.png', ] }, { category:'brushes', name:'single brushes', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-18.png', ] }, { category:'brushes', name:'single brushes', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-19.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-20.png', ] }, { category:'brushes', name:'single brushes', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-21.png', ] }, { category:'brushes', name:'single brushes', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-22.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-23.png', ] }, { category:'brushes', name:'Makeup brush case', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-26.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-25.png', ] }, { category:'brushes', name:'Makeup brush case', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-27.png', 'https://zonyin.com/wp-content/uploads/2026/09/Brush-28.png', ] }, { category:'brushes', name:'Makeup brush case', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Brush-29.png', ] }, ///////////////////粉扑////////////////// { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-01.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-25.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-02.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-06.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-05.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-03.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-04.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-19.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-10.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-07.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-08.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-21.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-12.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-09.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-20.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-11.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-17.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-13.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-14.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-13.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-14.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-22.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-18.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-15.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-16.png', ] }, { category:'puffs', name:'Powder puff', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-19.png', 'https://zonyin.com/wp-content/uploads/2026/09/Powder-Buff-23.png', ] }, ////////////////////////发夹/////////////////////// { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-01.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-02.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-03.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-04.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-05.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-06.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-07.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-08.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-09.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-10.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-11.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-12.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-13.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-14.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-15.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-16.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-17.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-18.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-19.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-20.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-21.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-22.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-23.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-24.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-25.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-26.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-27.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-28.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-30.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-29.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-31.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-32.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-34.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-33.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-35.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-36.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-37.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-38.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-39.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-41.png', ] }, { category:'clips', name:'Hair clip', desc:'', images: [ 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-41.png', 'https://zonyin.com/wp-content/uploads/2026/09/Hair-clip-42.png', ] }, ]; // ===== 页面 slug → 分类 映射(分类页默认显示自己的产品)===== const pageSlugMap = { 'makeup-mirror': 'mirrors', 'makeup-brushes': 'brushes', 'powder-puffs': 'puffs', 'hair-clips': 'clips', 'combs': 'combs', 'gifts-crafts': 'gifts' }; // 从当前网址识别默认分类(支持 /es/makeup-mirror/ 这种多语言子目录) function getDefaultCategory() { const parts = window.location.pathname.split('/').filter(Boolean); for (let i = parts.length - 1; i >= 0; i--) { if (pageSlugMap[parts[i]]) return pageSlugMap[parts[i]]; } return 'all'; } const grid = document.getElementById('productGrid'); const list = document.getElementById('categoryList'); function renderProducts(cat) { const filtered = cat === 'all' ? products : products.filter(p => p.category === cat); if (!filtered.length) { grid.innerHTML = '
No products in this category yet.
'; return; } grid.innerHTML = filtered.map((p, pi) => { const pid = 'prod_' + pi + '_' + (cat || 'all'); // 判断卡片类型:有 images 字段 → 数字切图;否则 → 颜色圆点 const useNumbers = Array.isArray(p.images) && p.images.length > 0; const firstImg = useNumbers ? p.images[0] : p.colors[0].image; return `
${p.name}

${p.name}

${p.desc}

${useNumbers ? `
${p.images.map((img, ni) => ` `).join('')}
` : `
${p.colors.map((c, ci) => ` `).join('')}
`}
`; }).join(''); // 颜色圆点点击切换(原有逻辑) document.querySelectorAll('.color-dot').forEach(dot => { dot.addEventListener('click', function(e) { e.stopPropagation(); const pid = this.dataset.prod; const newImg = this.dataset.img; const card = document.getElementById(pid); card.querySelector('.main-img').src = newImg; card.querySelectorAll('.color-dot').forEach(d => d.classList.remove('active')); this.classList.add('active'); }); }); // 数字按钮点击切换(新增) document.querySelectorAll('.num-tab').forEach(tab => { tab.addEventListener('click', function(e) { e.stopPropagation(); const pid = this.dataset.prod; const newImg = this.dataset.img; const card = document.getElementById(pid); card.querySelector('.main-img').src = newImg; card.querySelectorAll('.num-tab').forEach(t => t.classList.remove('active')); this.classList.add('active'); }); }); } function updateCounts() { document.getElementById('count-all').textContent = products.length; ['mirrors','brushes','puffs','clips','combs','gifts'].forEach(cat => { const el = document.getElementById('count-' + cat); if (el) el.textContent = products.filter(p => p.category === cat).length; }); } list.addEventListener('click', e => { const li = e.target.closest('li'); if (!li) return; document.querySelectorAll('.category-list li').forEach(l => l.classList.remove('active')); li.classList.add('active'); renderProducts(li.dataset.category); }); // 按当前页面自动决定默认分类 const defaultCat = getDefaultCategory(); document.querySelectorAll('.category-list li').forEach(l => { l.classList.toggle('active', l.dataset.category === defaultCat); }); updateCounts(); renderProducts(defaultCat); /* ============================================================ ★★★★★ 粘贴结束,以下不用动 ★★★★★ ============================================================ */ // 初始化:按当前网址决定默认显示哪个分类 var __defCat = __zonyinDefaultCat(); document.querySelectorAll('.category-list li').forEach(function (l) { l.classList.toggle('active', l.dataset.category === __defCat); }); updateCounts(); renderProducts(__defCat); })();