Safari & Testing

2026 年 CSS field-sizing: content:靜態 HTML 表單、Safari 簽字與雲端 Mac 品質保證

MacHTML Lab2026.04.15 25 分鐘閱讀

行銷與客服仍大量交付「一次建置、長期快取」的靜態頁:意見回饋、事故描述、合作夥伴問卷都仰賴 textarea。固定高度會裁切長文,使用者看不到完整草稿;完全放寬高度又會把主按鈕與黏性頁尾頂出視窗。過去常用大量 JavaScript 監聽 input、讀取 scrollHeight,還得與 Safari 字型度量、輸入法合成路徑周旋。field-sizing: content 讓「隨內容增高」回到引擎,保留原生 IME、拼字檢查與無障礙 API。本文面向 Eleventy、Hugo、Astro 等靜態產物,說明如何與 Popover 提示層協同,並解釋為何 Safari/WebKit 真機仍是簽字硬門檻。

你將帶走:能力矩陣、可引用的最小/最大高度區間、@supports 漸進增強、無障礙與即時提示節流策略,以及如何把驗收拆到可租用的 Mac mini

高度為何仍是體驗雷區

行銷表單常見區間:首屏意見框 96~320 px,桌面若法律聲明較多可放到 480 px;再高會把「送出」擠出視窗。完全依賴腳本時,RTL、可變字體與 macOS 動態字級 會讓 scrollHeight 抖動,QA 常誤判為「CSS 壞了」。

把增高交還引擎後,靜態產生器只需輸出一份 partial:CMS 預覽與生產共用 DOM,降低環境漂移。

根據公開元件庫在 2026 年初的流量樣本,仍有約 6~9% 工作階段落在不支援 field-sizing 的瀏覽器,需要捲軸或較高的 min-height 作底線。

設計權杖應含 --textarea-min-block--textarea-max-block,避免品牌換皮時悄悄撐破網格。

popover 並用時,避免每次按鍵重算錨點,必要時節流到單一影格。

寫法與護欄

textarea.feedback {
  min-height: 120px;
  max-height: 360px;
  overflow-y: auto;
  field-sizing: content;
  width: 100%;
  line-height: 1.5;
}
@supports not (field-sizing: content) {
  textarea.feedback { min-height: 160px; }
}

務必同時使用 max-heightoverflow-y:auto;否則長貼文會遮住導覽。單行輸入若引擎支援關鍵字,優先 max-inline-size 取代任意 cols,以利 RTL 對稱。

搭配邏輯屬性(padding-inlineborder-block)讓中日韓與拉丁文共用規則。

靜態 CSS 會長期快取,請把 @supports 與欄位樣式放同一 chunk,避免延遲載入造成一幀跳動。

市場熱修若寫內嵌樣式,禁止對同一選擇器加 height:100px!important,會同時破壞原生增高與護欄。

2026 年瀏覽器矩陣

引擎field-sizing: content靜態驗收重點
Chromium 123+textarea/input 支援檢查列印與 PDF 匯出。
Firefox 136+支援注意 max-height 等於內容高度時的雙捲軸。
Safari 17.4+支援(以發行說明為準)每次小版本複測輸入法與動態字級。
舊 WebKit不支援保留 min-height+捲動;必要時極小降級腳本。

Safari 真機與雲端 Mac mini

Playwright WebKit 能抓解析錯誤,但難捕捉「合成器一幀閃白」與 CJK 輸入法合成時的捲動跳動。建議每個釋出週期為 Safari 預留 20~35 分鐘:穩定版對外簽字,Safari Technology Preview 做回歸。

若固定資產審批慢,可短期租用雲端 Mac mini:MacHTML Apple 晶片常見日價約 $16.9,SSH 推送靜態產物、VNC 錄影舉證。

預覽環境請對齊生產的 font-feature-settings、Web 字型 URL 與 color-scheme;缺字重會改變換行,讓高度策略失真。

120 fps 慢動作錄影記錄爭議幀,比口頭爭論更有效。

維運側應把 CDN 快取鍵與含 field-sizing 的 CSS 雜湊綁定,避免 HTML/CSS 快取不同步被誤報為 WebKit 漂移。

無障礙與驗證

高度變化不得困住鍵盤焦點;錯誤出現時把焦點移到摘要並同步 aria-invalid。字元計數若走 aria-live,請把播報節流到 300 ms 以上。

不要把關鍵說明只放在 placeholder:增高後占位文字更快消失,反而增加負擔。

德語複合詞與芬蘭雙寫母音會顯著改變換行,請用真實句子而非 Lorem。

安全側:CSS 不是邊界;長貼文仍需伺服端長度驗證。

暗色半透明面板上仍要驗證焦點環對比,避免「看得到字、看不到焦點」。

效能與版面穩定

每次增高都會觸發排版:父層若 height:auto,請用網格 align-items:start 防止兄弟卡片被動拉伸。無風扇 Mac mini 同時跑 Safari 驗收與截圖 CI 時,同一視窗內並行的自適應欄位建議不超過 兩個

不要與 height 動畫同時玩花樣;邊框顏色可做瞬時過渡。

若行銷疊加 backdrop-filter,注意與文字層合成成本;長語音輸入更容易暴露 GPU 壓力。

把「可接受的 reflow 次數」寫進 README,避免未來同屏堆疊過多動態表單。

上線清單

在 HTML 預處理器以 data-field-sizing="on" 做特性開關;預發視覺 diff 通過再打開。回滾只需改屬性,不必動 JS。

以 Playwright 斷言輸入 400 字後 clientHeight 曲線;若每 100 字增高超 40 px,多半是缺少 max-height

把客服「看不到全文」類工單與版本號關聯,目標兩週內下降 12% 以上。

封存慢動作與 Lighthouse 追蹤,讓效能與合規同事引用同會話 ID。

常見問題

field-sizing 能取代 JS 嗎?

多數靜態場景可以;舊引擎保留捲動或極小腳本。

應先改哪些頁面?

優先對外意見與結帳備註;內部後台可觀望支援度。

QA 要留多久?

Safari 約 20~35 分鐘,VoiceOver 約 10 分鐘。

Apple 晶片 Mac mini仍是終結 WebKit 表單爭議的最短路徑:原生文字堆疊、長時間錄影的熱策略,以及 Linux 虛擬機難以複製的 macOS 輔助使用開關。MacHTML提供可租雲端 Mac mini,SSH/VNC 讓你在真實硬體上驗證 field-sizing、Popover 與黏性頁尾,按專案啟停。

在雲端 Mac mini 上做 Safari 表單驗收

租用 Apple 晶片實例驗證 field-sizing、輸入法與黏性版面,取得可歸檔證據。

雲端驗收表單
約 $16.9/天起