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

Vách trang trí gạch thuỷ tinh – Vật liệu trang trí xu thế

Gạch thuỷ tinh – xu hướng trang trí nội thất hiện đại và sang trọng...

Gỗ công nghiệp – Tiêu chuẩn an toàn

Gỗ Công Nghiệp – an toàn và đẹp Gỗ công nghiệp là loại gỗ được...

Nội thất tủ bếp hiện đại

Nội thất tủ bếp hiện đại- Giải pháp hoàn hảo cho không gian bếp đẹp...

Thiết kế nội thất căn hộ chung cư đẹp và hiện đại

Thiết kế nội thất căn hộ chung cư tối ưu diện tích: Những điều cần...

Bảng Moodboard trong thiết kế nội thất

Bảng Moodboard trong thiết kế nội thất: Khái niệm, vai trò và cách tạo Bảng...

Thiết kế ánh sáng căn hộ Duplex – Giải pháp tối ưu cho không gian sống đẳng cấp

Căn hộ Duplex là loại hình căn hộ thông tầng cao cấp, rộng rãi và...

Thiết kế căn hộ Duplex phong cách hiện đại

Thiết kế căn hộ Duplex phong cách hiện đại Lựa chọn hoàn hảo cho không...

Tỉ lệ vàng trong thiết kế nội thất

Tỉ lệ vàng trong thiết kế nội thất và tầm quan trọng trong việc kiến...

Đơn vị nội thất uy tín

Đơn vị nội thất uy tín – Lựa chọn thông minh cho không gian sống...

Kinh nghiệm thiết kế nhà chung cư phong cách Modern&Minimalist

Thiết kế nhà chung cư phong cách Modern&Minimalist Phong cách Modern Minimalist là một xu...

Thiết Kế Phòng Khách Phong Cách Hiện Đại

Thiết Kế Phòng Khách Phong Cách Hiện Đại Thiết kế phòng khách phong cách hiện...

Kinh nghiệm thiết kế nhà 1 trệt 4 lầu hướng tây nam

Kinh nghiệm thiết kế nhà hướng tây nam Bạn đang có ý định xây dựng...

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