當 CSS 邊框三角形的產生器缺少 width: 0 與 height: 0 的零尺寸元素、彩色邊框指向方向錯誤,或是提供的顏色並非嚴格的井字號加上六位十六進位數字時,它就會變成梯形、正方形、翻轉的楔形或彩色矩形。可見的形狀完全由邊框在一個可量測內容框為零的元素上繪製而成,這也說明了為何幾乎所有錯誤的結果都可歸納回以下三個原因之一:您選取的幾何輸入、下游樣式覆寫了產生的類別,或是無障礙假設與三角形實際的使用方式不符。
這個 CSS 三角形產生器是利用零尺寸元素上的邊框來建立形狀,透明的邊框形成兩條斜邊,一個彩色邊框指向所選的方向。瀏覽器原生的表單控制項會阻擋格式錯誤的輸入,而純粹的產生器會獨立拒絕不支援的方向、格式錯誤的顏色、小數,以及超出文件記載 10 到 300 像素範圍的值。即時預覽使用的是與寫入 CSS 輸出的相同衍生邊框宣告,所以當預覽看起來正確但您的頁面卻出錯時,原因幾乎總是出在下游,而不是產生器的邏輯。

為什麼 CSS 三角形在產生後看起來錯誤
四方向邊框三角形特別脆弱,因為它的可見區域完全由零尺寸元素上的邊框繪製而成。以下三件事必須同時成立:元素具有 width: 0 與 height: 0、兩個相鄰邊框為透明、且一個邊框為選定顏色並指向您實際想要的方向。任何一個條件不符合,形狀就會變成梯形、彩色正方形、倒置楔形或細長條紋。在這個程式碼片段中,幾何設定沒有第二次機會,因為它沒有 SVG、沒有 canvas、沒有影像檔案,也沒有偽元素函式庫可以退而求其次。
產生器會自動處理這三項。它的預覽使用與輸出相同的長寫式 border 宣告,並在寫入任何程式碼之前驗證整數尺寸與嚴格的 #RRGGBB 顏色字串。因此,當複製的程式碼片段在您的專案中看起來錯誤時,原因幾乎總是出在下游:某個父層規則在該 div 上設定了 width 或 height、某個競爭樣式表覆寫了 lizely-triangle 類別,或是某個佈局情境對該元素進行了與預覽不同的測量方式。產生作業完全在當前瀏覽器分頁中進行,因此您正在測試的頁面是這些下游規則唯一可能的來源。
方向與邊框設定參考
方向錯誤是三角形翻轉最常見的單一原因。產生器將四個方向對應到特定的邊框,而將錯誤的邊框讀成彩色邊框就會讓楔形翻轉。產生器寫入的對應關係是固定的且可稽核的,因為實作會明確序列化每個長寫式邊框屬性,而不是依賴簡寫捷徑:
| 選定方向 | 彩色邊框(指向的邊) | 透明邊框(斜邊) | 彩色邊框大小 |
|---|---|---|---|
| 上 | 下 | 左、右 | 等於選定高度 |
| 下 | 上 | 左、右 | 等於選定高度 |
| 左 | 右 | 上、下 | 等於選定寬度 |
| 右 | 左 | 上、下 | 等於選定寬度 |
對於垂直三角形(上與下),兩個透明側邊框的總和會等於選定寬度;對於水平三角形(左與右),透明的上、下邊框總和會等於選定高度。如果頁面中的方向與您選定的方向不符,最可能的原因是您從錯誤的規則讀取彩色邊框,或是另一個樣式表在片段載入後重新改寫了四個邊框屬性中的其中一個。
第二個常見原因是類別名稱衝突。產生器預設將 div 命名為 lizely-triangle。如果您的專案已定義了同名規則,則層疊會使用原始碼順序中較後出現的規則,這可能重新引入非零的 width 或 height,導致三角形變成小矩形。同時在 CSS 與 HTML 片段中重新命名該類別,並同步更新兩者的輸出,即可消除衝突。
驗證尺寸、奇數像素與顏色格式
產生器接受 10 到 300 像素之間的整數寬度與高度,以及 #RRGGBB 格式(標準化為小寫)的顏色。如果您貼上的值完全無法預覽,這表示上游驗證正在告訴您輸入格式錯誤;如果貼上的值可以預覽,但在頁面上看起來仍然錯誤,則尺寸本身就是可疑之處。
整數總和會在兩個透明邊框之間均分,因此 100 像素的上方三角形會使用 border-left: 50px solid transparent、border-right: 50px solid transparent,以及 border-bottom: 100px solid #hex。奇數總和則會使用 floor 與 ceiling,因為 Chromium 可能將兩個 20.5 像素的邊框量化為各 20 像素,悄悄從要求的基底中遺失一個像素。產生器改為寫入,例如 41 像素的上方三角形會使用 border-left: 20px solid transparent 與 border-right: 21px solid transparent。這一個像素的不對稱是刻意的,目的是保留要求的總繪製尺寸,而不是悄悄捨棄一個像素。
顏色會以不透明邊框的形式繪製。Alpha 顏色、CSS 變數、漸層、currentColor、廣色域語法以及主題權杖都不在這個專注工具的產生範圍內。如果您的設計系統預期使用 #rrggbbaa、含 alpha 的 rgb(...),或 var(--token),那麼字面 HEX 仍然可以運作,但您可以在複製後替換為可信賴的設計權杖,只要確認透明的側邊框仍然保持透明即可。替換字面值並不會改變幾何形狀,但也不會讓片段本身自動感知主題。
如何修正錯誤的 CSS 三角形結果
- 開啟 CSS 三角形產生器,重新輸入您實際想要的方向、寬度、高度與六位數 HEX 顏色。在複製前,確認即時預覽符合您的目標。
- 分別複製 CSS 與 HTML。複製按鈕會個別要求剪貼簿權限,狀態列會標示複製的格式;如果瀏覽器政策拒絕剪貼簿存取,兩個程式碼區塊會保持可見以便手動選取,且頁面不會誤報成功。
- 在三角形將被使用的大致尺寸與背景上檢查目的頁面。由於光柵化會因縮放與裝置像素比而異,請在相同縮放與相同背景下比對頁面上的結果與產生器預覽。
- 如果 lizely-triangle 會與現有樣式表衝突,請將其重新命名,並同時更新 CSS 與 HTML 輸出,讓規則與類別保持同步。
- 視情況保留或替換裝飾性的 aria-hidden="true" 處理方式。對於不傳達任何資訊的裝飾性箭頭或分隔線,片段即為正確狀態;對於用於傳達狀態、方向、驗證、導覽或其他意義的三角形,請從 div 上移除 aria-hidden,並改為在周圍的互動控制項上加入可見文字或無障礙標籤。
- 在 200% 縮放、高對比、強制色彩模式以及常見行動裝置寬度下測試三角形。預覽只能確認邊框幾何,無法確認目的元件的完整無障礙或佈局行為。
處理鋸齒邊緣、主題化與無障礙
即使是完全正確產生的三角形,在頁面上也可能看起來不對。對角邊框邊緣會經過瀏覽器的反鋸齒處理,而不同引擎處理這些邊緣的方式也不同:Safari 渲染的邊緣略比 Chrome 銳利,Firefox 則介於兩者之間。在 CSS 邊框層級沒有通用的修正方式,且光柵化也會在不同的縮放層級與裝置像素比下產生差異。如果您需要完全銳利的對角線,CSS 三角形產生器無法達成;使用具有明確 viewBox 的 SVG 將能提供更可預期的邊緣。
顏色與對比是第二個常見的「看起來錯誤」來源。選定的 HEX 顏色會以不透明邊框的形式繪製,頁面並不知道它後方是什麼。三角形若緊鄰文字,應在淺色與深色主題下分別檢查對比,而非假設其繼承了足夠的對比;而 顏色對比檢查工具是在您自己的環境中確認組合符合 WCAG AA 或 AAA 閾值的可靠方式。
無障礙也涵蓋了 HTML 片段中隨附的 aria-hidden="true" 屬性。對於純粹裝飾性、不傳達任何資訊的三角形,該屬性是合適的。如果三角形用於傳達狀態、方向、驗證或導覽,那麼靜默的片段是不夠的:輔助技術會略過該形狀,螢幕閱讀器使用者將錯過該提示。在這種情況下,請讓三角形對輔助技術保持隱藏,但應在周圍的語意控制項上加入可見文字或無障礙標籤,而非僅依賴產生的 div。
單一三角形的效能成本可忽略不計,但數百個裝飾性元素仍會增加 DOM 與繪製負擔。建議在語意控制項上使用單一裝飾性形狀,而非複製多個隱藏的控制項,使標記保持精簡,並讓輔助技術看到的是單一有標籤的元素,而非多個靜默的元素。
當邊框三角形無法在產生器內修復
這個產生器的設計相當明確。它會建立一個簡單的實心三角形,不使用 SVG、canvas、影像檔或偽元素函式庫,而實作方式是明確地寫出每一條長格式(longhand)的邊框,讓幾何結構保持可見。正是這種專注讓程式碼片段變得可預期,但也同時界定了重新執行這個工具所能修復的範圍。
邊框三角形無法直接產生圓角尖端、弧形邊緣、空心形狀、漸層填色、描邊、複雜陰影或任意多邊形。如果你的結果看起來不對,但其實是錯誤類型的結果——你需要空心雪佛龍(chevron)、帶有 2 像素外框的三角形、柔和的下拉式陰影,或是以線性漸層填色的三角形——那麼這個產生器就不是適合的修復工具。請改用 SVG 或 clip-path,並在實際部署前確認目標環境的瀏覽器支援度。關於這個程式碼片段所用各邊框屬性的背景說明,記載於 MDN CSS 背景與邊框指南以及 CSS 背景與邊框層級 3 規格中。
該元素可量測的內容框為零,但其繪製出來的邊框卻佔有空間。因此,版面配置、轉換、點擊測試、外框、溢位以及對齊等行為,可能會比具有明確 viewBox 的 SVG 更不直覺;這也是為什麼預覽僅能確認邊框的幾何結構,而非最終的完整版面配置。如需完整瞭解四方向的做法與零尺寸技巧,使用邊框建立 CSS 三角形指南會逐步說明與本產生器相同的方法。若想快速取得下次產生時應避免的錯誤清單,產生 CSS 三角形時應避免的這些錯誤則從相反的角度涵蓋了相同的內容。