Tappeto Bagno – 100% Cotone da 750 gsm – Linea Hotellerie – Qualità professionale per ogni giorno
Acquista a solo 10,90 €
Tappeto Bagno – 100% Cotone da 750 gsm – Linea Hotellerie – Qualità professionale per ogni giorno
1467 disponibili
Tappeto Bagno – 100% Cotone da 750 gsm – Linea Hotellerie – Qualità professionale per ogni giorno
Comfort professionale e qualità senza compromessi con il tappeto bagno della Linea Hotellerie, realizzato in 100% cotone ultra assorbente da 750 gsm.
(function(){
var GALLERY_SEL = “.veb-variation-gallery-slider”;
var TARGET_ID = “var-img-mirror-b6e7fdce-f580-4a0b-837b-807c1c9fbcb3”;
// Trova l’immagine “corrente” della gallery di variante
function getCurrentVariationImgEl() {
var gallery = document.querySelector(GALLERY_SEL);
if (!gallery) return null;
// 1) Preferisci la slide attiva di Slick
var current = gallery.querySelector(‘.slick-current .iwp-single-gallery-image-container img’);
if (current) return current;
// 2) Fallback: prima immagine “vera” nella gallery
var first = gallery.querySelector(‘.iwp-single-gallery-image-container img’);
if (first) return first;
return null;
}
// Copia l’immagine nel target (clona mantenendo srcset/sizes/alt/title/data-*)
function renderMirror() {
var tgt = document.getElementById(TARGET_ID);
if (!tgt) return;
var img = getCurrentVariationImgEl();
if (!img) return;
// Clona shallow (tutti gli attributi restano)
var clone = img.cloneNode(true);
// Pulizia: rimuovi eventuali classi di zoom/slick specifiche
clone.classList.remove(‘zoomImg’);
// Evita width/height “forzati” inline se servisse: scommenta se vuoi
// clone.removeAttribute(‘style’);
// Sostituisci contenuto del target
tgt.innerHTML = ”;
tgt.appendChild(clone);
}
// Debounce leggero per evitare rimbalzi di eventi ravvicinati
var t;
function scheduleRender(delay){
clearTimeout(t);
t = setTimeout(renderMirror, delay || 50);
}
// 1) Al DOM pronto
if (document.readyState !== ‘loading’) scheduleRender(80);
else document.addEventListener(‘DOMContentLoaded’, function(){ scheduleRender(80); });
// 2) Cambio slide di Slick: ascolta gli eventi sul container (se presente jQuery/Slick)
(function bindSlick(){
if (typeof jQuery === ‘undefined’) return;
var $gal = jQuery(GALLERY_SEL);
if (!$gal.length) return;
// afterChange = quando cambia la slide corrente
$gal.on(‘afterChange’, function(){ scheduleRender(30); });
// init/reInit: quando Slick si (ri)inizializza
$gal.on(‘init reInit’, function(){ scheduleRender(30); });
})();
// 3) Cambio variante WooCommerce (form variabile)
(function bindWcVariation(){
if (typeof jQuery === ‘undefined’) return;
var $form = jQuery(‘form.variations_form’);
if (!$form.length) return;
// Quando Woo trova la variante e aggiorna la gallery
$form.on(‘found_variation’, function(){ scheduleRender(120); });
// Quando resetta l’immagine (nessuna variante selezionata)
$form.on(‘reset_image’, function(){ scheduleRender(120); });
// Hook generico di change sui select delle varianti
$form.on(‘change’, ‘select’, function(){ scheduleRender(150); });
})();
// 4) Safety: piccola ripassata dopo pochissimo (per plugin che aggiornano async)
setTimeout(renderMirror, 300);
setTimeout(renderMirror, 800);
})();
(function(){
var GALLERY_SEL = “.veb-variation-gallery-slider”;
var TARGET_ID = “var-img-mirror2-806676f9-7766-44cf-9b8f-5deb01cdd8da”;
// Prende la **seconda** immagine reale della gallery (ignora i cloni di Slick)
function getSecondVariationImgEl() {
var gallery = document.querySelector(GALLERY_SEL);
if (!gallery) return null;
// 1) Se c’è Slick: prendi le immagini NON clonate, nell’ordine
var imgs = Array.from(gallery.querySelectorAll(‘.slick-slide:not(.slick-cloned) .iwp-single-gallery-image-container img’));
if (imgs.length >= 2) return imgs[1];
// 2) Fallback se non c’è Slick: prendi le prime due immagini “pure” nel container
imgs = Array.from(gallery.querySelectorAll(‘.iwp-single-gallery-image-container img’));
if (imgs.length >= 2) return imgs[1];
return null;
}
function renderMirror2() {
var tgt = document.getElementById(TARGET_ID);
if (!tgt) return;
var img = getSecondVariationImgEl();
if (!img) return;
var clone = img.cloneNode(true);
clone.classList.remove(‘zoomImg’);
tgt.innerHTML = ”;
tgt.appendChild(clone);
}
var t;
function scheduleRender(delay){
clearTimeout(t);
t = setTimeout(renderMirror2, delay || 60);
}
// DOM pronto
if (document.readyState !== ‘loading’) scheduleRender(100);
else document.addEventListener(‘DOMContentLoaded’, function(){ scheduleRender(100); });
// Eventi Slick (se presenti)
(function bindSlick(){
if (typeof jQuery === ‘undefined’) return;
var $gal = jQuery(GALLERY_SEL);
if (!$gal.length) return;
$gal.on(‘afterChange init reInit’, function(){ scheduleRender(40); });
})();
// Eventi Woo Variations
(function bindWcVariation(){
if (typeof jQuery === ‘undefined’) return;
var $form = jQuery(‘form.variations_form’);
if (!$form.length) return;
$form.on(‘found_variation reset_image’, function(){ scheduleRender(140); });
$form.on(‘change’, ‘select’, function(){ scheduleRender(160); });
})();
// Safety: due ripassate brevi
setTimeout(renderMirror2, 300);
setTimeout(renderMirror2, 800);
})();












