一個專門針對圓角的 CSS 三角形產生器,仍然依賴一條基本規則:可見形狀完全由一個內容寬度與高度皆為零的元素,透過它的三個邊框繪製而成。兩條透明邊框在對角斜面處交會,一個有色邊框則指向所選方向。因為每個繪製的像素都屬於一條直線邊框,所以除非放棄邊框技巧,否則幾何形狀無法產生圓弧、描邊或空心。CSS 三角形產生器接受上、下、左、右四個方向;尺寸介於 10 到 300 像素之間;以及一個規範化為小寫的六位數 HEX 顏色,然後在當前瀏覽器分頁中匯出同步的 CSS 與 HTML,不需要上傳、帳號或儲存狀態。直邊規則並非可以關閉的設定——它是這個形狀的結構。如果你真的想要彎曲的尖端或弧形的邊,誠實的答案是改用 SVG 的 path,或使用 clip-path,接著確認目標環境支援所選的語法。

邊框技巧的幾何形狀在四個方向下的樣貌
建構過程從一個內容區為 0 乘 0 的 div 開始。空盒子周圍的邊框沒有內邊可供相接,因此每條邊在 45 度角處與下一條邊相會,並由這些角落形成的四個三角形填滿繪製區域。選擇一個方向後,一條邊框成為可見的三角形,而兩條相鄰的邊框則變成透明斜面。有色邊框永遠承擔完整的指向長度,兩條透明邊框則切割垂直的底邊,使它們的總和等於要求的數值。偶數值會平均分割且不產生不對稱;奇數值則使用 floor 與 ceiling 的寬度,因為 Chromium 可能將兩側各 20.5px 的邊框量化為 20px,悄悄地把繪製底邊縮小一個像素。實作會明確寫出每個 longhand,因此幾何形狀保持可見且可審核。
| 方向 | 有色邊框 | 透明邊框 | 有色邊長 |
|---|---|---|---|
| 上 | 底部 | 左 + 右,總和 = 寬度 | 等於高度 |
| 下 | 頂部 | 左 + 右,總和 = 寬度 | 等於高度 |
| 左 | 右側 | 頂部 + 底部,總和 = 高度 | 等於寬度 |
| 右 | 左側 | 頂部 + 底部,總和 = 高度 | 等於寬度 |
四個快速步驟產生三角形
- 選擇方向(上、下、左或右),並輸入介於 10 到 300 像素之間的完整寬度與高度數值;輸入欄位會拒絕小數與超出所述範圍的任何數值。
- 以 #RRGGBB 格式輸入一個六位數 HEX 顏色;輸入欄位會將值規範化為小寫,並拒絕任何不符合嚴格格式的內容,絕不會悄悄地把無效項目箝制到範圍內。
- 在你打算使用三角形的測試背景上檢視即時結果,調整尺寸或顏色直到繪製的像素看起來正確,然後讀取頁面顯示的同步 CSS 與 HTML。
- 使用 CSS Triangle Generator 個別複製 CSS 與 HTML——每次複製請求都會分別詢問剪貼簿權限——將兩個區塊一起貼上,並且只有當 lizely-triangle class 與現有樣式表規則發生衝突時才重新命名。如需對零尺寸模式的更深入說明,請參閱 zero-size border triangle guide。
當「圓角」必須代表另一個工具時
圓弧尖端與弧形邊框並非邊框技巧所提供的功能,因為它們並非該技巧所繪製的資料的一部分。每個可見像素都屬於單一筆直的邊框段落,相鄰邊框在硬性 45 度接合處相會,且沒有曲率參數。要求產生器「圓滑」一個尖端,等同於要求 border-width 畫一個圓:模型根本不存在。這個工具本身誠實地標示了這點——邊框三角形無法直接產生圓弧尖端、彎曲邊緣、空心形狀、漸層填色、描邊、複雜陰影或任意多邊形。矩形上美觀的 CSS 圓角使用 border-radius 屬性,但該屬性對繪製出的邊框三角形沒有作用,因為它們的內容區是空的。
SVG 與 clip-path 在此作為接下來的兩個選項。SVG 可以使用 path 指令繪製帶有弧形頂端的三角形,使用線性或放射狀漸層填色,以描邊方式保留空心,並在任何縮放等級下保持清晰,因為檔案描述的是幾何而非像素。clip-path 可以使用其中一個基本形狀函式,或引用 SVG path,從一個有色矩形中裁切出弧形三角形,但瀏覽器支援程度會依語法而異。這兩個選項都需要在目標環境中驗證,因為部分使用者代理仍將 clip-path 視為需要廠商前綴的實驗性功能。
邊框三角形、SVG 與 clip-path 並列比較
| 使用情境 | 邊框三角形 | SVG path | clip-path |
|---|---|---|---|
| 工具提示或按鈕上的方向箭頭 | 可以 | 可以 | 可以 |
| 圓弧尖端或弧形邊 | 不行 | 可以(path 弧線) | 可以(使用 path() 函式) |
| 空心三角形——僅描邊,無填色 | 不行 | 可以 | 有限 |
| 漸層填色 | 不行 | 可以 | 取決於語法 |
| 形狀周圍的描邊 + 複雜陰影 | 不行 | 可以 | 有限 |
| 單一筆直邊緣的裝飾用箭頭 | 可以(最輕量) | 可以(標記較重) | 可以(標記較重) |
| 數百個重複元素的效能成本 | 最低 | 較高的 DOM 成本 | 較高的 DOM 成本 |
奇數尺寸如何保持精確
有一個數值細節值得展示,因為它會悄悄影響你所設定的每個奇數值。設定 height = 41、direction = up。有色底部邊框等於 41px。兩條透明側邊框必須加總為 41,但 Chromium 可能將每邊各 20.5px 的邊框量化為 20px,悄悄把你的三角形底邊縮成 40px,並遺失所要求的像素。產生器透過計算 floor(41 / 2) = 20 與 ceiling(41 / 2) = 21,然後明確寫出每個 longhand,避免了這種像素損失,讓幾何形狀可被審核。
該精確選擇的輸出解析為 border-left: 20px solid transparent; border-right: 21px solid transparent; border-bottom: 41px solid #ff8800;,其中 20 + 21 = 41 與所要求的總和相符。偶數尺寸會平均分割且不產生不對稱,因此這個細節只有在你選擇奇數值時才有意義。柵格化仍會因瀏覽器縮放與裝置像素比而有所不同,所以在目標縮放等級下進行視覺檢查就是最終的測試。
無障礙、主題代幣與複製的程式碼片段
複製的 HTML 是帶有產生 class 與 aria-hidden="true" 的單一 div。對於不傳達資訊的裝飾性箭頭、分隔符或箭頭圖示來說,這是正確的模式——輔助技術應該跳過它,而可見的控制項承擔語意。對於標示驗證狀態、表示必填欄位、作為按鈕內可見的視覺提示,或在步驟器中傳達方向的三角形,光靠片段本身是不夠的。請在周圍的語意控制項上加入可存取文字、可見標籤或 aria-label,並讓裝飾性的三角形保持隱藏。
複製的 CSS 使用你所輸入的確切字面 HEX。如果你的設計系統預期使用 CSS 變數、currentColor,或像 var(--accent-500) 的代幣,請在樣式表中替換字面值,然後確認透明邊框保持透明,且下游主題仍能解析新的值。這個聚焦的產生器不會產生 Alpha 顏色、CSS 變數、漸層、currentColor、寬色域語法或主題代幣;在貼上步驟替換字面值是支援的交接點。如果瀏覽器政策拒絕剪貼簿存取,兩個程式碼區塊仍會在畫面上保持可見以便手動選取,而頁面不會錯誤地回報複製成功。
在實際設計中驗證繪製結果
即時預覽確認了邊框幾何——但它本身並不能確認三角形在內文文字旁、工具提示內、按鈕上或對著有色卡片時看起來會是如何。柵格化會因瀏覽器縮放與裝置像素比而有所不同,而且在白色背景上讀起來清晰的顏色,在帶色調的背景上可能會變得黯淡。實作會明確寫出每個 longhand 邊框寬度,讓你在貼上之前可以審核幾何形狀,但視覺驗收測試發生在目標版面配置中。版面配置、變形、點擊測試、外框、溢位與對齊都可能與帶有明確 viewBox 的 SVG 表現不同,所以請先將三角形置於實際情境中再出貨。
將繪製的 HEX 透過對比度檢查,分別對照卡片背景與周圍文字顏色進行測試——三角形裝飾元素很少能靠自己達到足夠的對比度。請在 200% 縮放、強制色彩模式、深色主題與常見行動裝置寬度下測試最終結果。該技巧的底層模型記錄於 MDN CSS backgrounds and borders guide,其中定義了產生器明確寫出的 longhand 邊框寬度、樣式與顏色。
如需更深入的說明,請參閱 RGB CMYK Converter: The Exact Formula and Limits。