Spécialiste des façades, de l'humidité et des toits
Pour bricoleurs & entrepreneurs
Gratis verzending vanaf €500*
Demander un devis
0
0
  • Incl.Excl.
    TVA
  • Spécialiste des façades, de l'humidité et des toits
    Pour bricoleurs & entrepreneurs
    Gratis verzending vanaf €500*
    Filtres

    Mots-clés

      Marques

      Produits associés au mot-clé Dakverf

      Filter
      4 produits
      Do it Pro Products ROOFCOAT NANO
      Do it Pro ProductsROOFCOAT NANO

      Peinture de toit de haute qualité avec nanotechnologie, en anthracite pour supports poreux, par exemple ardoises artificielles, tuiles en béton,...

      Deliverytime

      €209,00 Incl. TVA
      Do it Pro Products ROOFCOAT CT
      Do it Pro ProductsROOFCOAT CT

      Revêtement hydrophobe durable pour les toitures poreuses telles que les tuiles en béton.

      Deliverytime

      €459,00 Incl. TVA
      Do it Pro Products ROOFCOAT PLUS
      Do it Pro ProductsROOFCOAT PLUS

      Revêtement de toiture protecteur et décoratif à base d’eau, prolongeant la durée de vie du toit, résistant aux intempéries et salissures, séchant rapidement et facile à appliquer grâce à sa texture thixotrope.

      Deliverytime

      €389,00 Incl. TVA
      Do it Pro Products ROOFCOAT CT Échantillon de couleur
      Do it Pro ProductsROOFCOAT CT Échantillon de couleur

      échantillon humide de la couleur souhaitée de roofcoat CT, choix de 7 couleurs

      Deliverytime

      €15,00 Incl. TVA

      Overige categorieën in Mots-clés

      /* Do it Pro – Universele Rekenhulp (simplified) */ /* 0) Token -> marker shim (zorgt dat [[calc-enable: …]] omgezet wordt naar een onzichtbare ) */ (function(){ function parsePairs(s){ const out = {}; (s||"").split(";").forEach(pair=>{ const p = pair.trim(); if(!p) return; const m = p.match(/^([a-z0-9_-]+)\s*=\s*"(.*)"$|^([a-z0-9_-]+)\s*=\s*([^"]+)$/i); if(!m) return; const k = (m[1]||m[3]||"").trim(); const v = (m[2]||m[4]||"").trim(); if(k) out[k] = v; }); return out; } function tokenToMarker(root){ try{ const walker = document.createTreeWalker(root||document.body, NodeFilter.SHOW_TEXT, null, false); const nodes = []; while (walker.nextNode()) { const t = walker.currentNode.nodeValue; if (t && /\[\[\s*calc-enable\s*:\s*.+\]\]/i.test(t)) nodes.push(walker.currentNode); } nodes.forEach(node=>{ const txt = node.nodeValue; const m = txt.match(/\[\[\s*calc-enable\s*:\s*(.+?)\s*\]\]/i); if (!m) return; const cfg = parsePairs(m[1]); const span = document.createElement("span"); span.className = "calc-enable"; span.style.display = "none"; Object.keys(cfg).forEach(k=>{ const camel = k.replace(/-([a-z])/g, (_,c)=>c.toUpperCase()); span.dataset[camel] = cfg[k]; }); node.parentNode.insertBefore(span, node); node.nodeValue = txt.replace(m[0], ""); // token weghalen uit zichtbare tekst }); }catch(e){} } function bootShim(){ tokenToMarker(document.body); const obs = new MutationObserver(()=>tokenToMarker(document.body)); obs.observe(document.body, {childList:true, subtree:true}); } if (document.readyState==='loading') document.addEventListener('DOMContentLoaded', bootShim); else bootShim(); })(); /* 1) Styles */ (function(){ if (document.getElementById("calc-global-styles")) return; const style = document.createElement("style"); style.id = "calc-global-styles"; style.textContent = ` .calc-card { background:#EFEFEF; border:1px solid #e0e0e0; border-radius:10px; padding:12px; margin:0 0 10px; max-width:560px; font-family:inherit; } .calc-title { margin:0 0 6px; font-size:15px; font-weight:700; line-height:1.2; } .calc-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; } .calc-field { display:flex; flex-direction:column; gap:3px; } .calc-label { font-size:13px; color:#222; line-height:1.1; margin:0; } .calc-label::after { content: ":"; margin-left:3px; } .calc-input, .calc-select { padding:8px 10px; border:1px solid #d2d2d2; border-radius:8px; font:inherit; height:36px; width:100%; box-sizing:border-box; background:#fff; line-height:1.2; } .calc-input:focus, .calc-select:focus { border-color:#4FB1DE; box-shadow:0 0 0 2px rgba(79,177,222,0.15); outline:none; } .calc-btn { margin-top:8px; padding:10px 12px; border:0; border-radius:8px; cursor:pointer; font-weight:700; width:100%; color:#fff; background:#4FB1DE; transition:filter .15s ease; height:40px; } .calc-btn:hover { filter:brightness(0.97); } .calc-result { margin-top:8px; } .calc-resgrid { display:grid; grid-template-columns: repeat(2, minmax(180px, 1fr)); gap:8px; } .calc-pill { background:#fff; border:1px solid #dcdcdc; border-radius:8px; padding:8px 10px; display:flex; align-items:center; justify-content:space-between; font-size:13px; font-weight:600; } .calc-pill span, .calc-pill b { line-height:1; display:inline-block; } .calc-pill b { color:#d35400; margin-left:8px; } .calc-note { margin-top:6px; font-size:11px; color:#666; line-height:1.2; } @media (max-width:560px){ .calc-grid { grid-template-columns:1fr; } .calc-resgrid { grid-template-columns:1fr; } } `; document.head.appendChild(style); })(); /* 2) Calculator */ (function(){ const HOST_SELECTORS = ".product__buy, .product-actions, #product-actions, .product__purchase, .buy-block, .product-info__buy, form[action*='cart']"; const OPTIONS_ANCHOR_SELECTORS = [ ".product__options", ".product-variants", ".product-form__options", ".product__choices", ".product-configurator", ".product-custom-fields", "[data-product-options]", "[id*='product-options']" ]; const toNumber = (v) => { if (typeof v !== "string") v = (v||0).toString(); v = v.trim().replace(/\s/g,'').replace(',', '.'); const n = parseFloat(v); return isNaN(n) ? 0 : n; }; const pctFactor = (pct) => 1 + ((parseInt(pct||"0",10)||0)/100); const detectLang = (forced)=>{ if (forced === "nl" || forced === "fr") return forced; const htmlLang = (document.documentElement.lang || "").toLowerCase(); const href = location.href.toLowerCase(); if (htmlLang.startsWith("fr") || /\/fr(\/|[-_])/.test(href) || /[-_.]fr\./.test(href)) return "fr"; return "nl"; }; const STR = (L)=>({ nl:{ t:{strips:"Rekenhulp: steenstrips",boards:"Rekenhulp: stuks per m²",coverage:"Rekenhulp: verbruik",range:"Rekenhulp: verbruik (min–max)"}, f:{m2:"Oppervlakte (m²)", lm:"Buitenhoeken (lm)", placing:"Plaatsing", with:"Met voeg", without:(f)=>`Zonder voeg (${f>=1?"+":"−"}${Math.round(Math.abs((f-1)*100))}%)`, waste:"Reserve"}, b:"Bereken", o:{flat:"Vlakke stenen", corner:"Hoekstenen", boxes:"dozen", noteStrips:(a,c,f,aj,jm)=> aj?(jm==="normal"?`* Vlak: ${a} m²/doos • Hoek: ${c} lm/doos • Zonder voeg = +${Math.round((f-1)*100)}%`:`* Vlak: ${a} m²/doos • Hoek: ${c} lm/doos • Met voeg = −${Math.round((1-f)*100)}%`):`* Vlak: ${a} m²/doos • Hoek: ${c} lm/doos • Plaatsing zonder voeg`} }, fr:{ t:{strips:"Calculateur : parement",boards:"Calculateur : pièces par m²",coverage:"Calculateur : consommation",range:"Calculateur : consommation (min–max)"}, f:{m2:"Surface (m²)", lm:"Angles extérieurs (ml)", placing:"Pose", with:"Avec joint", without:(f)=>`Sans joint (${f>=1?"+":"−"}${Math.round(Math.abs((f-1)*100))}%)`, waste:"Réserve"}, b:"Calculer", o:{flat:"Pierres plates", corner:"Pierres d’angle", boxes:"boîtes", noteStrips:(a,c,f,aj,jm)=> aj?(jm==="normal"?`* Face : ${a} m²/boîte • Angle : ${c} ml/boîte • Sans joint = +${Math.round((f-1)*100)}%`:`* Face : ${a} m²/boîte • Angle : ${c} ml/boîte • Avec joint = −${Math.round((1-f)*100)}%`):`* Face : ${a} m²/boîte • Angle : ${c} ml/boîte • Pose sans joint`} } })[L]; function buildStrips(marker, host){ const ds = marker.dataset; const LANG = detectLang((ds.lang||"").toLowerCase()); const T = STR(LANG); const areaPerBox = parseFloat(ds.areaPerBox||0.5); const cornerPerBox = parseFloat(ds.cornerPerBox||1); const allowJoint = (ds.allowJoint||"true").toLowerCase() !== "false"; const noJointFactor= parseFloat(ds.nojointFactor||1.2); const jointMode = (ds.jointMode||"normal").toLowerCase(); const reserveOpts = (ds.reserve||"0,5,10,15,20").split(",").map(s=>s.trim()).filter(Boolean); let optionsAnchor = null; for (const sel of OPTIONS_ANCHOR_SELECTORS) { const el = host.querySelector(sel); if (el) { optionsAnchor = el; break; } } const placing = allowJoint ? (jointMode==="normal" ? `` : ``) : `
      ${T.f.without(noJointFactor)}
      `; const waste = ``; const html = `

      ${T.t.strips}

      ${placing}
      ${waste}
      ${T.o.noteStrips(areaPerBox, cornerPerBox, noJointFactor, allowJoint, jointMode)}
      `; const wrap = document.createElement("div"); wrap.innerHTML = html; const card = wrap.firstElementChild; if (optionsAnchor && optionsAnchor.parentNode) optionsAnchor.parentNode.insertBefore(card, optionsAnchor); else host.insertBefore(card, host.firstChild); function setResults(pills){ const grid = document.getElementById("calc-resgrid"); grid.style.display = "grid"; grid.innerHTML = pills.map(p=>`
      ${p.label}${p.value}
      `).join(""); } function calc(){ const m2 = toNumber(document.getElementById("calc-m2").value); const lm = toNumber(document.getElementById("calc-lm").value); const reservePct = parseInt(document.getElementById("calc-reserve").value||"0",10); const rF = pctFactor(reservePct); let f = 1; if (allowJoint) f = parseFloat(document.getElementById("calc-place").value)||1; else f = parseFloat(document.getElementById("calc-place").getAttribute("data-fixed"))||1; const boxesFlat = Math.ceil(((m2 * f) / areaPerBox) * rF); const boxesCorner = lm>0 ? Math.ceil(((lm * f) / cornerPerBox) * rF) : 0; const out = [{label:T.o.flat, value:`${boxesFlat} ${T.o.boxes}`}]; if (lm>0) out.push({label:T.o.corner, value:`${boxesCorner} ${T.o.boxes}`}); setResults(out); } document.getElementById("calc-btn").addEventListener("click", calc); } function init(){ const host = document.querySelector(HOST_SELECTORS); const marker = document.querySelector(".calc-enable"); if (!host || !marker) return; const type = (marker.dataset.calcType||"").toLowerCase(); if (type === "strips") buildStrips(marker, host); // (Andere types kun je later inschakelen—dit houdt het nu simpel en stabiel) } function boot(){ init(); const obs = new MutationObserver(()=>init()); obs.observe(document.body, {childList:true, subtree:true}); } if (document.readyState==='loading') document.addEventListener('DOMContentLoaded', boot); else boot(); })();