Zum Hauptinhalt springen

Kostenloser Versand KOSTENFREIER VERSAND in Deutschland ab 50,-€ | MADE IN GERMANY | SONDERANGEBOTE

bikinis große brüste

Ähnlich wie zuvor, Bikinis geeignet für Frauen mit größerem Busen.

(function () { 'use strict'; var ANZAHL = 8; // Werke im Katalog var SORTIERUNG = 'popularity'; /* Was nicht auf die Startseite gehört: Befestigung und Zubehör */ var RAUS = /(abstand|halter|befestig|schraube|montage|zubeh|klemm|distanz|aufh(ä|ae)ng|spacer|d(ü|ue)bel|adapter|reiniger|pflege|versand|gutschein)/i; function start() { var katalog = document.getElementById('pl-katalog-sec'); var detail = document.getElementById('pl-detail-sec'); if (!katalog && !detail) return; // Seite ohne die Bausteine var url = location.origin + '/wp-json/wc/store/v1/products?per_page=40&orderby=' + SORTIERUNG + '&order=desc'; fetch(url, { credentials: 'same-origin' }) .then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); }) .then(function (daten) { var werke = (daten || []).filter(passt); if (!werke.length) return; if (katalog) { fuelleKatalog(werke.slice(0, ANZAHL), katalog); } if (detail) { fuelleLupe(werke[0], detail); } }) .catch(function () { /* still bleiben, Abschnitte bleiben ausgeblendet */ }); } function passt(p) { if (!p || !p.images || !p.images.length) return false; if (RAUS.test(p.name || '')) return false; var k = (p.categories || []).map(function (c) { return (c.name || '') + ' ' + (c.slug || ''); }).join(' '); return !RAUS.test(k); } function preisText(p) { try { var pr = p.prices; if (!pr || !pr.price) return ''; var e = parseInt(pr.currency_minor_unit || 2, 10); var wert = parseInt(pr.price, 10) / Math.pow(10, e); if (pr.price_range && pr.price_range.min_amount) { var min = parseInt(pr.price_range.min_amount, 10) / Math.pow(10, e); if (min < wert) wert = min; } var sym = pr.currency_symbol || '€'; return 'ab ' + wert.toLocaleString('de-DE', { maximumFractionDigits: 0 }) + ' ' + sym; } catch (e) { return ''; } } /* Künstlername aus den Kategorien: zwei großgeschriebene Wörter */ function kuenstler(p) { var treffer = ''; (p.categories || []).some(function (c) { var n = (c.name || '').trim(); if (/^[A-ZÄÖÜ][\wäöüß'’-]+\s+[A-ZÄÖÜ][\wäöüß'’-]+$/.test(n)) { treffer = n; return true; } return false; }); return treffer; } /* "Kraftvolle Balance 1720128" → "Kraftvolle Balance" */ function titel(t) { return String(t || '').replace(/\s+\d{5,}\s*$/, '').trim(); } function sicher(s) { return String(s || '').replace(/&/g, '&').replace(/"/g, '"') .replace(//g, '>'); } function fuelleKatalog(liste, sektion) { var ziel = document.getElementById('pl-liste'); if (!ziel) return; ziel.innerHTML = liste.map(function (p, i) { var b = p.images[0] || {}; var k = kuenstler(p), preis = preisText(p); var nr = ('0' + (i + 1)).slice(-2); return '
' + '' + '
' + nr + '' + '
' + sicher(b.alt || p.name) + '
' + '
' + '

' + sicher(titel(p.name)) + '

' + (k ? '' + sicher(k) + '' : '') + (preis ? '' + sicher(preis) + '' : '') + '
' + '
'; }).join(''); sektion.classList.add('pl-da'); } function fuelleLupe(p, sektion) { var figur = document.getElementById('pl-glas-figur'); if (!figur) return; var b = p.images[0] || {}; var img = document.createElement('img'); img.src = b.src; img.alt = 'Detailansicht: ' + (b.alt || p.name || ''); figur.insertBefore(img, figur.firstChild); sektion.classList.add('pl-da'); lupeAktivieren(img); } function lupeAktivieren(img) { var glas = document.getElementById('pl-glas'); var linse = document.getElementById('pl-linse'); if (!glas || !linse) return; if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; if (!window.matchMedia('(hover:hover)').matches) return; var zoom = 2.7, gr = 196, figur = img.parentNode; glas.addEventListener('pointermove', function (ev) { var r = figur.getBoundingClientRect(); var x = ev.clientX - r.left, y = ev.clientY - r.top; if (x < 0 || y < 0 || x > r.width || y > r.height) { glas.classList.remove('pl-aktiv'); return; } glas.classList.add('pl-aktiv'); linse.style.left = (x - gr / 2) + 'px'; linse.style.top = (y - gr / 2) + 'px'; linse.style.backgroundImage = 'url("' + (img.currentSrc || img.src) + '")'; linse.style.backgroundSize = (r.width * zoom) + 'px ' + (r.height * zoom) + 'px'; linse.style.backgroundPosition = (-(x * zoom - gr / 2)) + 'px ' + (-(y * zoom - gr / 2)) + 'px'; }); glas.addEventListener('pointerleave', function () { glas.classList.remove('pl-aktiv'); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); } })();