Tin tức

Décor chia sẽ những kiến thức sâu rộng, trong từng vấn đề công việc, chia sẽ quá trình thực hiện thi công, chia sẽ chuyên sâu những công việc thực hiện tới khách hàng.

DÉCOR YOUR REFLECTION

Đèn led và điều cần biết về đèn

Đèn led chiếu sáng Đèn led hiện nay khá thông dụng trong cuộc sống hằng...

Nhà không gian mở và ánh sáng

Nhà không gian mở và yếu tố ánh sáng Sẽ thật tuyệt nếu một ngày...

Chống thấm

CHỐNG THẤM TRONG CÔNG TÁC XÂY DỰNG Công tác chống thấm trong xây dựng được...

Vật liệu xây dựng – Gạch không nung

Vật liêu xây dựng – Gạch xây dựng và những lưu ý Các loại gạch...

Vật liệu xây dựng – Gạch đất nung

Vật liêu xây dựng – Gạch xây dựng và những lưu ý Gạch xây dựng...

Phong cách nội thất năm 2023- Nội thất hiện đại

Phong cách nội thất hiện đại Với sự phát triển ngày càng nhanh của khoa...

Nội thất hiện đại- Sàn ECO-Surface

Nội thất hiện đại – Vật liệu mới thân thiện môi trường và độ bền...

Dọn nhà đón tết

Dọn nhà đón tết nhanh và sạch với 6 mẹo đơn giản Dọn nhà đón...

Xu hướng lựa chọn công ty nội thất cao cấp

 Thi công nội thất cao cấp và yếu tố của thiết kế Nội thất cao...

Gạch ốp lát

TẠI SAO PHẢI PHÂN LOẠI GẠCH Một phút để có thêm kiến thức thực tế....

Nội thất cao cấp DÉCOR- Thi công nội thất cao cấp

THI CÔNG NỘI THẤT CAO CẤP DÉCOR “Nội thất cao cấp” cụm từ được sử...

Phong cách Indochine – Bản sắc Đông Dương

Phong cách Indochine – Sự kết hợp hài hoà Phong cách thiết kế indochine Phong...

(function () { function initDecorFloatingToc() { const holder = document.getElementById("decorFloatingToc"); const panel = document.getElementById("decorFloatingTocPanel"); const inner = document.getElementById("decorFloatingTocInner"); const fill = document.getElementById("decorFloatingTocFill"); const thumb = document.getElementById("decorFloatingTocThumb"); const article = document.getElementById("decorArticleMain"); const links = Array.from(document.querySelectorAll(".decor-floating-toc__item")); if (!holder || !panel || !inner || !fill || !thumb || !article || !links.length) return; const items = links.map(link => { const href = link.getAttribute("href"); const target = href ? document.querySelector(href) : null; return { link, target }; }).filter(item => item.target); if (!items.length) return; function syncHolderHeight() { if (window.innerWidth <= 991) { holder.style.minHeight = "0px"; return; } holder.style.minHeight = Math.max(article.offsetHeight, panel.offsetHeight) + "px"; } function moveIndicator(link) { const innerRect = inner.getBoundingClientRect(); const linkRect = link.getBoundingClientRect(); const center = (linkRect.top - innerRect.top) + (linkRect.height / 2); thumb.style.top = center + "px"; fill.style.height = center + "px"; } function setActive(item) { links.forEach(link => link.classList.remove("active")); item.link.classList.add("active"); moveIndicator(item.link); } function getCurrentItem() { const triggerY = window.innerHeight * 0.42; let current = items[0]; for (const item of items) { const rect = item.target.getBoundingClientRect(); if (rect.top <= triggerY) { current = item; } else { break; } } return current; } function updateFloatingPosition() { if (window.innerWidth <= 991) { panel.style.position = "relative"; panel.style.top = "auto"; panel.style.left = "auto"; panel.style.width = "100%"; return; } const holderRect = holder.getBoundingClientRect(); const holderTopDoc = window.scrollY + holderRect.top; const holderBottomDoc = holderTopDoc + holder.offsetHeight; const panelHeight = panel.offsetHeight; const viewportPadding = 28; const preferredTop = (window.innerHeight - panelHeight) / 2; const fixedTop = Math.max( viewportPadding, Math.min(preferredTop, window.innerHeight - panelHeight - viewportPadding) ); const desiredTopDoc = window.scrollY + fixedTop; const maxTopDoc = holderBottomDoc - panelHeight; if (desiredTopDoc <= holderTopDoc) { panel.style.position = "absolute"; panel.style.top = "0px"; panel.style.left = "0px"; panel.style.width = "100%"; } else if (desiredTopDoc >= maxTopDoc) { panel.style.position = "absolute"; panel.style.top = Math.max(0, holder.offsetHeight - panelHeight) + "px"; panel.style.left = "0px"; panel.style.width = "100%"; } else { panel.style.position = "fixed"; panel.style.top = fixedTop + "px"; panel.style.left = holderRect.left + "px"; panel.style.width = holderRect.width + "px"; } } let ticking = false; function updateAll() { syncHolderHeight(); updateFloatingPosition(); setActive(getCurrentItem()); ticking = false; } function requestUpdate() { if (!ticking) { window.requestAnimationFrame(updateAll); ticking = true; } } if (!holder.dataset.decorInit) { window.addEventListener("scroll", requestUpdate, { passive: true }); window.addEventListener("resize", requestUpdate); window.addEventListener("load", requestUpdate); links.forEach(link => { link.addEventListener("click", function () { setTimeout(requestUpdate, 180); }); }); if (document.fonts && document.fonts.ready) { document.fonts.ready.then(requestUpdate); } holder.dataset.decorInit = "true"; } requestUpdate(); } document.addEventListener("DOMContentLoaded", initDecorFloatingToc); document.body.addEventListener("experimental-flatsome-pjax-request-done", initDecorFloatingToc); })();