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

Phong cách Tân Cổ Điển – Thiết Kế Thanh Lịch Sang Trọng

Phong cách Tân Cổ Điển Phong cách Tân Cổ Điển là một phong cách thiết...

Thi Công Hoàn Thiện Nội Thất Trọn Gói

Thi Công Hoàn Thiện Nội Thất Trọn Gói Tại TP HCM – Dịch vụ uy...

Nội thất gỗ công nghiệp

Nội thất gỗ công nghiệp – Giải pháp hoàn hảo cho không gian đẳng cấp...

Indochine Style – Phong cách Đông Dương

Phong cách indochine – sự giao thoa độc đáo giữa phương Đông và phương Tây...

Phong Cách Thiết Kế Nội Thất Minimalist & Modern

Phong Cách Minimalist & Modern Sự kết hợp hoàn hảo của phong cách thiết kế...

Phong cách thiết kế Scandinavian – Bắc Âu

Phong cách Scandinavian – Bắc Âu Bạn đang muốn tạo cho ngôi nhà của mình...

Phong cách thiết kế Tropical

Phong cách thiết kế Tropical trong nội thất – Xu hướng mới cho không gian...

Phong cách thiết kế Wabi-Sabi

Phong cách thiết kế Wabi Sabi – Nét đẹp không hoàn hảo Bạn đã nghe...

Phong thủy trong thiết kế nội thất

Phong thủy nội thất là gì ? Trong thiết kế nội thất, phong thủy là...

Xu hướng màu sắc trong nội thất năm 2023

Thiết kế nội thất theo gam màu Màu sắc là một yếu tố quan trọng...

Những phong cách thiết kế nội thất được ưa chuộng trong năm 2023

Phong cách thiết kế nội thất năm 2023 Thiết kế nội thất là một lĩnh...

Thiết kế nội thất hiện đại

 Thiết kế nội thất hiện đại: Xu hướng và lợi ích Bạn muốn có một...

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