Specialist in gevels, vocht & daken
Voor doe-het-zelf & aannemers
Gratis verzending vanaf €500*
Nederlands
Français
Klantenservice
4 / 5
@
Trustpilot
Kenniscentrum
Filmpjes
Zoekresultaten voor '
'
Bekijk alle resultaten
Offerte aanvragen
Inloggen
Maak binnen 1 minuut een account aan
Zowel voor aannemers als particuliere klanten
Bekijk statusupdates van je bestellingen
Inloggen
Nieuw?
Account aanmaken
Verlanglijst
Geen producten op verlanglijst...
Inloggen
Nieuw?
Account aanmaken
0
Kalei
Kalei kant-en-klaar
Kalei kant-en-klaar
Kleurenkaart Kalei Calcic
Inspiratie Kalei
FAQ Kalei
Kalei bescherming
Chipper / Papvoegen
Chipper / Papvoegen
Kleurenkaart Chipper
Verf
Verf
Gevelverf
Kalkverf
Crepi & Stucwerk
Gevelbepleistering
Gevelbepleistering
Lijmmortel
Wapeningsnet
Pleister & Primer
Isolatiepluggen
Profielen & Overige
Opbouwsystemen BGI
Opbouwsystemen BGI
BOLIX systeem
Strikolith systeem
Gevelisolatie
Gevelrenovatie
Ontmossen
Gevelreiniging
Gevelrestauratie
Gevelversteviging
Vochtbestrijding
Opstijgend vocht
Kelderdichting
Kelderdrainage
Doorslaand vocht
Hydrofuge
Gevel impregneren
Dak impregneren
Vloer impregneren
Dakcoating
Kleurenpalet dakcoating
Isolatie
Isolatie per toepassing
Isolatie per toepassing
Buitengevelisolatie
Steenstripisolatie
Perimeter isolatie
Kruipruimte isolatie
Isolatie per materiaal
Isolatie per materiaal
EPS isolatie
XPS isolatie
Gereedschap
Handgereedschap
Handgereedschap
Lijmkammen & Truwelen
Borstels & Verfrollen
Drukspuiten
Pistolen
Bescherming
Bescherming
Folies & Tapes
Werfmateriaal
Werfmateriaal
Emmers & Kuipen
Bouwafvalzak
Tools
Tools
Meetinstrumenten
Kleurenwaaiers
Overige tools
Incl.
Excl.
BTW
Menu
Kenniscentrum
Filmpjes
Offerte aanvragen
Categorieën
Terug naar
Kalei
Kalei kant-en-klaar
Kleurenkaart Kalei Calcic
Inspiratie Kalei
FAQ Kalei
Kalei bescherming
Chipper / Papvoegen
Kleurenkaart Chipper
Verf
Gevelverf
NCS - RAL kleurenkaart
Kalkverf
Kleurenkaart
Crepi & Stucwerk
Gevelbepleistering
Lijmmortel
Wapeningsnet
Pleister & Primer
Isolatiepluggen
Profielen & Overige
Opbouwsystemen BGI
BOLIX systeem
Strikolith systeem
Gevelisolatie
Gevelrenovatie
Ontmossen
Gevelreiniging
Gevelrestauratie
Gevelversteviging
Vochtbestrijding
Opstijgend vocht
Kelderdichting
Kelderdrainage
Doorslaand vocht
Hydrofuge
Gevel impregneren
Dak impregneren
Vloer impregneren
Dakcoating
Kleurenpalet dakcoating
Isolatie
Isolatie per toepassing
Buitengevelisolatie
Steenstripisolatie
Perimeter isolatie
Kruipruimte isolatie
Isolatie per materiaal
EPS isolatie
XPS isolatie
Gereedschap
Handgereedschap
Lijmkammen & Truwelen
Borstels & Verfrollen
Drukspuiten
Pistolen
Bescherming
Folies & Tapes
Werfmateriaal
Emmers & Kuipen
Bouwafvalzak
Tools
Meetinstrumenten
Kleurenwaaiers
Overige tools
Inloggen
Maak binnen 1 minuut een account aan
Zowel voor aannemers als particuliere klanten
Bekijk statusupdates van je bestellingen
Inloggen
Nieuw?
Account aanmaken
Verlanglijst
Geen producten op verlanglijst...
Inloggen
Nieuw?
Account aanmaken
0
Incl.
Excl.
BTW
Specialist in gevels, vocht & daken
Voor doe-het-zelf & aannemers
Gratis verzending vanaf €500*
Terug
Home
Crepi & Stucwerk
Opbouwsystemen BGI
Buitengevelisolatie (BGI) opbouwsystemen per merk
BOLIX systeem
Strikolith systeem
Krijg 10€ korting op je eerste bestelling*
Meld je aan voor onze nieuwsbrief
*Korting enkel geldig voor nieuwe abonnees. We sturen de kortingscode direct toe per email.
E-mailadres
*
Abonneer
* Lees hier de wettelijke beperkingen
/* 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.with}
${T.f.without(noJointFactor)}
` : `
${T.f.without(noJointFactor)}
${T.f.with}
`) : `
${T.f.without(noJointFactor)}
`; const waste = `
${reserveOpts.map(v=>`
${v}%
`).join("")}
`; const html = `
${T.t.strips}
${T.f.m2}
${T.f.lm}
${T.f.placing}
${placing}
${T.f.waste}
${waste}
${T.b}
${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(); })();