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

Đá bếp đẹp, phân biệt các loại đá

Các loại đá hiện có trên thị trường và công năng của nó Đá ốp...

Phong cách Minimalism

Phong cách tối giản (Minimalism) Xu hướng thiết kế mới cho những căn hộ hiện...

Những xu hướng thiết kế năm 2023

Xu hướng thiết kế thay đổi trong năm 2023 Những thiết kế nội thất màu...

Chống thấm sàn mái, sàn nhà vệ sinh trong thi công

Chống thấm trong công trình Chống thấm sàn mái hay chống thấm nhà vệ sinh...

VIVA MAGENTA – MÀU SẮC CỦA NĂM 2023

MÀU CỦA NĂM 2023  DÉCOR gửi đến bạn màu sắc được lựa chọn là màu...

CUỐI NĂM RỘN RÀNG – DÉCOR KIẾN TẠO TỔ ẤM

DÉCOR KIẾN TẠO TỔ ẤM – TRAO TẶNG KHÁCH HÀNG THIẾT KẾ THI CÔNG NỘI...

NHỮNG YẾU TỐ QUAN TRỌNG TRONG THIẾT KẾ NỘI THẤT

CÁC YẾU TỐ TRONG THIẾT KẾ Trong một ngôi nhà có rất nhiều điểm nhấn,...

Quang hiệu ánh sáng

QUANG HIỆU ÁNH SÁNG – MỘT GÓC NHÌN KHÁC. Quang hiệu ánh sáng là gì...

CÁC PHONG CÁCH THIẾT KẾ NỘI THẤT ĐƯỢC ƯA CHUỘNG NĂM 2022

CHÚNG TA CÙNG TÌM HIỂU VỀ TÍNH CHẤT TẠO NÊN ĐIỂM KHÁC BIỆT CỦA CÁC...

Độ rọi ánh sáng nhân tạo trong thiết kế

ĐỘ RỌI- NHÂN TỐ CỦA ÁNH SÁNG NHÂN TẠO Tại sao lựa chọn ánh sáng...

Quang thông ánh sáng trong thiết kế không gian

Quang thông ánh sáng trong thiết kế không gian Có bao giờ bạn nhận thấy...

NHỮNG XU HƯỚNG THIẾT KẾ NĂM 2022

NHỮNG XU HƯỚNG THIẾT KẾ NỘI THẤT ĐƯỢC DỰ ĐOÁN NỔI TRỘI VÀO NĂM 2022...

(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); })();