<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Layout on 技術、遊戲、生活通俗易懂的解釋</title><link>https://takao.blog/zh-tw/tags/layout/</link><description>Recent content in Layout on 技術、遊戲、生活通俗易懂的解釋</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>Commentary of Takao</copyright><lastBuildDate>Mon, 15 Jun 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://takao.blog/zh-tw/tags/layout/index.xml" rel="self" type="application/rss+xml"/><item><title>Isolating Layout Computations via CSS contain 正確的ty</title><link>https://takao.blog/zh-tw/web/performance-css-contain-property/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/performance-css-contain-property/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/performance-css-contain-property-zh-tw.png" alt="Featured image of post Isolating Layout Computations via CSS contain 正確的ty" /&gt;&lt;h2 id="the-rendering-cost-of-dynamic-content"&gt;The Rendering Cost of Dynamic Content
&lt;/h2&gt;&lt;p&gt;Every time the DOM changes, the browser must recompute styles, layout, and paint. For pages with many interactive widgets—chat feeds, stock tickers, infinite-scroll lists—these recalculations can ripple across the entire document, causing jank and dropped frames.&lt;/p&gt;
&lt;p&gt;The CSS &lt;code&gt;contain&lt;/code&gt; property tells the browser that a subtree is &lt;strong&gt;independent&lt;/strong&gt; from the rest of the page. This enables the engine to skip global recalculations and treat the element as an isolated island.&lt;/p&gt;</description></item><item><title>預防ing Cumulative Layout Shift with CSS aspect-ratio</title><link>https://takao.blog/zh-tw/web/css-aspect-ratio-cumulative-layout-shift/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/css-aspect-ratio-cumulative-layout-shift/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/css-aspect-ratio-cumulative-layout-shift-zh-tw.png" alt="Featured image of post 預防ing Cumulative Layout Shift with CSS aspect-ratio" /&gt;&lt;h2 id="understanding-cumulative-layout-shift"&gt;Understanding Cumulative Layout Shift
&lt;/h2&gt;&lt;p&gt;Cumulative Layout Shift (CLS) is one of Google&amp;rsquo;s &lt;strong&gt;Core Web Vitals&lt;/strong&gt; metrics that measures visual stability. It quantifies how often users experience unexpected layout shifts. A high CLS score harms user experience and SEO rankings. The primary cause? Media elements (images, videos, iframes) loading without reserved space.&lt;/p&gt;
&lt;h2 id="how-css-aspect-ratio-works"&gt;How CSS aspect-ratio Works
&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;aspect-ratio&lt;/code&gt; CSS property lets you declare the ratio of width to height for any element. The browser reserves space accordingly, preventing the layout from jumping when content loads.&lt;/p&gt;</description></item><item><title>與 CSS 網格子網格完美對齊</title><link>https://takao.blog/zh-tw/web/css-subgrid-grid-nesting/</link><pubDate>Sat, 10 May 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/css-subgrid-grid-nesting/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/css-subgrid-grid-nesting-zh-tw.png" alt="Featured image of post 與 CSS 網格子網格完美對齊" /&gt;&lt;h2 id="介紹"&gt;介紹
&lt;/h2&gt;&lt;p&gt;在卡片佈局中跨列對齊嵌套元件是響應式網頁設計中常見的佈局挑戰。&lt;/p&gt;
&lt;p&gt;雖然 CSS Grid 和 Flexbox 可以輕鬆均衡同級卡片容器的高度，但對齊內部元素（例如標題、正文和 CTA 按鈕）仍然很困難。如果一張卡片具有多行標題，而另一張卡片具有單行標題，則以下元素將錯位，從而導致 UI 不一致。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS 網格子網格&lt;/strong&gt; 功能解決了此佈局限制。本指南解釋了 &lt;code&gt;subgrid&lt;/code&gt; 的工作原理並分享了建立對齊網格卡的樣式策略。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-嵌套-css-網格的局限性"&gt;1. 嵌套 CSS 網格的局限性
&lt;/h2&gt;&lt;p&gt;讓我們看看在不使用 &lt;code&gt;subgrid&lt;/code&gt; 參數的情況下對齊巢狀元素的限制。&lt;/p&gt;
&lt;h3 id="html結構"&gt;HTML結構
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;grid-container&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h3&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-title&amp;#34;&lt;/span&gt;&amp;gt;Short Title&amp;lt;/&lt;span style="color:#f92672"&gt;h3&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-desc&amp;#34;&lt;/span&gt;&amp;gt;Short description text.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;button&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-btn&amp;#34;&lt;/span&gt;&amp;gt;Read More&amp;lt;/&lt;span style="color:#f92672"&gt;button&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h3&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-title&amp;#34;&lt;/span&gt;&amp;gt;Extremely Long and Complex Multi-line Card Title&amp;lt;/&lt;span style="color:#f92672"&gt;h3&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-desc&amp;#34;&lt;/span&gt;&amp;gt;This card contains long body copy that wraps across multiple lines.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;button&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;card-btn&amp;#34;&lt;/span&gt;&amp;gt;Read More&amp;lt;/&lt;span style="color:#f92672"&gt;button&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="傳統的-flexboxgrid-解決方法"&gt;傳統的 Flexbox/Grid 解決方法
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;grid-container&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;grid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;grid-template-columns&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;repeat&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;fr);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;gap&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;card&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;flex&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;flex-direction&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;column&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;justify-content&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;space-between&lt;/span&gt;; &lt;span style="color:#75715e"&gt;/* Pushes button to bottom */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;問題：&lt;/strong&gt; 卡片容器本身對齊到相同的高度，並且按鈕位於底部。但是，&lt;strong&gt;標題的下緣和描述段落的開頭沒有對齊&lt;/strong&gt;。由於一個標題較長，因此其下方的描述文字開始位置低於相鄰卡片中的描述，從而破壞了佈局一致性。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-解決子網格的對齊問題"&gt;2. 解決子網格的對齊問題
&lt;/h2&gt;&lt;p&gt;使用 &lt;code&gt;subgrid&lt;/code&gt;，巢狀網格容器&lt;strong&gt;繼承在其父網格容器上定義的行和列軌道&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>CSS 錨點定位簡介與範例</title><link>https://takao.blog/zh-tw/web/css-anchor-positioning-guide/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/css-anchor-positioning-guide/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/css-anchor-positioning-guide-zh-tw.png" alt="Featured image of post CSS 錨點定位簡介與範例" /&gt;&lt;h2 id="介紹"&gt;介紹
&lt;/h2&gt;&lt;p&gt;在 Web 開發中，相對於特定參考元素（錨點）定位浮動元素（例如工具提示、彈出視窗、下拉式選單和懸停卡）歷來是一項複雜的挑戰。&lt;/p&gt;
&lt;p&gt;為了使浮動元素在視窗大小調整或頁面滾動時跟隨錨點積分，開發人員傳統上依靠連續的 JavaScript 座標計算（使用 &lt;code&gt;getBoundingClientRect()&lt;/code&gt;）來動態更改內聯樣式。因此，像 Popper.js 或 Floating UI 這樣的函式庫成為了業界標準。但是，在滾動事件期間在主執行緒上執行腳本循環經常會導致渲染延遲和卡頓，尤其是在行動裝置上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS 錨定位 API&lt;/strong&gt; 透過在瀏覽器中本機處理浮動座標來解決這些缺點。 在本指南中，我們將探索該標準的核心功能並逐步介紹實用的 UI 配方。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1什麼是css錨點定位"&gt;1.什麼是CSS錨點定位？
&lt;/h2&gt;&lt;p&gt;CSS 錨定位是一種原生樣式標準，可讓您完全使用 CSS 將絕對或固定位置元素（&lt;strong&gt;目標&lt;/strong&gt;）直接錨定到另一個元素（&lt;strong&gt;錨&lt;/strong&gt;）。&lt;/p&gt;
&lt;h3 id="核心優勢"&gt;核心優勢
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;零 JavaScript：&lt;/strong&gt; 消除了調整大小偵聽器、滾動事件觀察器和自訂座標計算邏輯的需求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;卓越的性能：&lt;/strong&gt; 位置更新和渲染直接卸載到瀏覽器的合成器線程，以 60+ FPS 渲染流暢的視覺更新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;佈局隔離：&lt;/strong&gt; 絕對或固定目標元素可以繞過父邊界剪切約束（例如 &lt;code&gt;overflow: hidden&lt;/code&gt;），尤其是與 HTML &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; 元素或本機 &lt;code&gt;popover&lt;/code&gt; 屬性配對時。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-基本設定和語法"&gt;2. 基本設定和語法
&lt;/h2&gt;&lt;p&gt;讓我們來看看將工具提示容器綁定到按鈕元素的基本設定。&lt;/p&gt;
&lt;h3 id="html結構"&gt;HTML結構
&lt;/h3&gt;&lt;p&gt;我們聲明一個錨元素（按鈕）及其目標浮動容器（div）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;button&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;my-anchor&amp;#34;&lt;/span&gt;&amp;gt;Hover over me&amp;lt;/&lt;span style="color:#f92672"&gt;button&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;my-tooltip&amp;#34;&lt;/span&gt;&amp;gt;This is a native CSS tooltip&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="css-實現"&gt;CSS 實現
&lt;/h3&gt;&lt;p&gt;為了在 CSS 中將元素連結在一起，我們遵循三個步驟：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在引用錨元素上聲明唯一的 &lt;code&gt;anchor-name&lt;/code&gt; 識別碼。&lt;/li&gt;
&lt;li&gt;定義 &lt;code&gt;position: absolute&lt;/code&gt; 並在目標上使用 &lt;code&gt;position-anchor&lt;/code&gt; 引用標識符。&lt;/li&gt;
&lt;li&gt;透過 &lt;code&gt;anchor()&lt;/code&gt; 定位功能對齊座標。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* 1. Set up the Anchor */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;my-anchor&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Anchor names must be formatted as dashed identifiers, similar to CSS custom properties */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;anchor-name&lt;/span&gt;: &lt;span style="color:#f92672"&gt;--&lt;/span&gt;anchor-button;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* 2 &amp;amp; 3. Format the Target */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;my-tooltip&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position-anchor&lt;/span&gt;: &lt;span style="color:#f92672"&gt;--&lt;/span&gt;anchor-button;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Pin the top of the tooltip to the bottom boundary of the anchor button */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;anchor&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;bottom&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Place the horizontal center of the tooltip to the center of the anchor */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;anchor&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;transform&lt;/span&gt;: translateX(&lt;span style="color:#ae81ff"&gt;-50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Styling defaults */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#333&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#fff&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;只需幾行 CSS，工具提示就可以直接捕捉到按鈕下方。即使使用者捲動文檔，佈局引擎也會自動更新位置。&lt;/p&gt;</description></item><item><title>CSS Grid 進階 Patterns: Complex Layouts Made 簡單</title><link>https://takao.blog/zh-tw/web/css-grid-advanced/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/css-grid-advanced/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/css-grid-advanced-zh-tw.png" alt="Featured image of post CSS Grid 進階 Patterns: Complex Layouts Made 簡單" /&gt;&lt;p&gt;CSS Grid has transformed web layout design, but many developers only scratch the surface. Beyond the basic &lt;code&gt;grid-template-columns: 1fr 1fr 1fr&lt;/code&gt; lies a powerful set of features that handle complex, responsive layouts with minimal code. This article explores advanced Grid patterns that every professional front-end developer should know.&lt;/p&gt;
&lt;h2 id="named-grid-areas-for-semantic-layouts"&gt;Named Grid Areas for Semantic Layouts
&lt;/h2&gt;&lt;p&gt;Line-based placement works, but it becomes unreadable as layouts grow complex. Named grid areas let you define layouts that read like a wireframe directly in CSS.&lt;/p&gt;</description></item></channel></rss>