Калькулятор строительных материалов Стены Кровля Утеплитель Расчёт блоков/кирпича Размер блока (мм): Параметры стен (метры): Длина (м) Высота (м) ✕ + Добавить стену Проёмы (окна/двери): + Добавить проём Рассчитать Результаты расчёта: Расчёт кровли Длина ската (м): Ширина здания (м): Количество скатов: 1 скат 2 ската 4 ската Рассчитать Результаты расчёта: Расчёт утеплителя Площадь утепления (м²): Толщина утеплителя (мм): Размер упаковки (мм): Рассчитать Результаты расчёта: // Переключение табов function showTab(tabName) { // Скрываем все табы document.querySelectorAll('.calc-tab').forEach(function(tab) { tab.style.display = 'none'; }); // Сбрасываем стили кнопок document.querySelectorAll('[id^= tab- ]').forEach(function(btn) { btn.style.background = '#f1f1f1'; btn.style.color = '#333'; }); // Показываем нужный таб document.getElementById('content-' + tabName).style.display = 'block'; document.getElementById('tab-' + tabName).style.background = '#0588a6'; document.getElementById('tab-' + tabName).style.color = 'white'; } // Добавление стены function addWall() { var container = document.getElementById('walls-container'); var div = document.createElement('div'); div.className = 'wall-row'; div.style.cssText = 'display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; margin-bottom: 10px; align-items: end;'; div.innerHTML = 'Длина (м)' + 'Высота (м)' + '✕'; container.appendChild(div); } // Удаление стены function removeWall(btn) { btn.parentNode.remove(); } // Добавление проёма function addOpening() { var container = document.getElementById('openings-container'); var div = document.createElement('div'); div.className = 'opening-row'; div.style.cssText = 'display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; margin-bottom: 10px; align-items: end;'; div.innerHTML = 'Ширина (м)' + 'Высота (м)' + '✕'; container.appendChild(div); } // Удаление проёма function removeOpening(btn) { btn.parentNode.remove(); } // Расчёт стен function calculateWalls() { var blockLen = parseFloat(document.getElementById('block-length').value) || 600; var blockHeight = parseFloat(document.getElementById('block-height').value) || 200; var blockWidth = parseFloat(document.getElementById('block-width').value) || 300; // Считаем площадь стен var totalWallArea = 0; var wallLengths = document.querySelectorAll('.wall-length'); var wallHeights = document.querySelectorAll('.wall-height'); for (var i = 0; i < wallLengths.length; i++) { var len = parseFloat(wallLengths[i].value) || 0; var height = parseFloat(wallHeights[i].value) || 0; if (len > 0 && height > 0) { totalWallArea += len * height; } } // Считаем площадь проёмов var totalOpeningArea = 0; var openingWidths = document.querySelectorAll('.opening-width'); var openingHeights = document.querySelectorAll('.opening-height'); for (var i = 0; i < openingWidths.length; i++) { var width = parseFloat(openingWidths[i].value) || 0; var height = parseFloat(openingHeights[i].value) || 0; if (width > 0 && height > 0) { totalOpeningArea += width * height; } } // Чистая площадь var netArea = totalWallArea - totalOpeningArea; // Площадь одного блока var blockArea = (blockHeight / 1000) * (blockLen / 1000); // Количество блоков var blocksCount = Math.ceil(netArea / blockArea); // Объём var blockVolume = (blockLen / 1000) * (blockHeight / 1000) * (blockWidth / 1000); var totalVolume = blocksCount * blockVolume; // Показываем результат var resultDiv = document.getElementById('walls-result'); var resultContent = document.getElementById('walls-result-content'); resultContent.innerHTML = 'Площадь стен: ' + totalWallArea.toFixed(2) + ' м²' + 'Площадь проёмов: ' + totalOpeningArea.toFixed(2) + ' м²' + 'Чистая площадь: ' + netArea.toFixed(2) + ' м²' + 'Количество блоков: ' + blocksCount + ' шт' + 'Объём: ' + totalVolume.toFixed(2) + ' м³'; resultDiv.style.display = 'block'; resultDiv.scrollIntoView({behavior: 'smooth', block: 'nearest'}); } // Расчёт кровли function calculateRoof() { var length = parseFloat(document.getElementById('roof-length').value) || 0; var width = parseFloat(document.getElementById('roof-width').value) || 0; var slopes = parseInt(document.getElementById('roof-slopes').value) || 2; var area = length * width * slopes; var withReserve = area * 1.1; // +10% запас var resultDiv = document.getElementById('roof-result'); var resultContent = document.getElementById('roof-result-content'); resultContent.innerHTML = 'Площадь кровли: ' + area.toFixed(2) + ' м²' + 'С запасом 10%: ' + withReserve.toFixed(2) + ' м²'; resultDiv.style.display = 'block'; resultDiv.scrollIntoView({behavior: 'smooth', block: 'nearest'}); } // Расчёт утеплителя function calculateInsulation() { var area = parseFloat(document.getElementById('insul-area').value) || 0; var thickness = parseFloat(document.getElementById('insul-thickness').value) || 50; var packLen = parseFloat(document.getElementById('insul-pack-length').value) || 1200; var packWidth = parseFloat(document.getElementById('insul-pack-width').value) || 600; var packArea = (packLen / 1000) * (packWidth / 1000); var packsNeeded = Math.ceil(area / packArea); var volume = area * (thickness / 1000); var resultDiv = document.getElementById('insul-result'); var resultContent = document.getElementById('insul-result-content'); resultContent.innerHTML = 'Площадь утепления: ' + area.toFixed(2) + ' м²' + 'Объём: ' + volume.toFixed(2) + ' м³' + 'Упаковок: ' + packsNeeded + ' шт'; resultDiv.style.display = 'block'; resultDiv.scrollIntoView({behavior: 'smooth', block: 'nearest'}); }