如何創建完美的 CSS 圓形扇區
最近,我建立了一個 CSS 大獎輪盤賭,該專案提出了一個獨特的挑戰:當指針指向扇區時動態突出顯示扇區。 輪盤賭需要響應能力和可變扇區計數,排除了簡單的圖像或 SVG 解決方案。 幾何計算是必不可少的。
我的方法涉及圍繞圓心旋轉跨度並沿著半徑剪裁它們。 以下詳細介紹了初始設定(可透過下面的連結查看完整內容),涉及基本樣式和跨度增量旋轉(360/sectors.length 度)。 這個階段的視覺效果並不複雜。
為了突出顯示一個扇區,我需要給定半徑和角度的圓上兩點之間的距離。 公式為:
<code>2 * radius * Math.sin(θ / 2)</code>
其中 θ 是以弧度表示的角度。 轉換使用:
<code>2 * radius * Math.sin(Math.PI / sectors.length)</code>
接下來,我解決了扇區剪切問題以防止重疊。我的第一次嘗試使用了對角線剪輯路徑:
<code>clip-path: polygon(100% 0, 0 50%, 100% 100%);</code>
這對許多扇區都有效,但缺陷在扇區較少時變得明顯,特別是只有三個扇區,如圖所示:
解決方案涉及計算跨度和圓之間的交點,從該點到中心進行裁剪。這修正了剪輯:
研究得出了連接交點的線在水平射線上創建的線段的公式:
中心部分:
<code>radius * (1 - Math.cos(θ / 2))</code>
外段:
<code>radius * Math.cos(θ / 2)</code>
(θ,以弧度表示)
這些片段之間的比例決定了剪切點,導致:
<code>const clipPosition = Math.cos(Math.PI / sectors.length) * 100</code>
更正後的clip-path
:
<code>{ 'clip-path': `polygon(100% 0, ${clipPosition}% 0, 0 50%, ${ clipPosition }% 100%, 100% 100%)` }</code>
基於 Vue 的最終結果允許透過中心點擊進行隨機旋轉,並透過磁區點擊進行定向旋轉。 (省略了完整程式碼的鏈接,按照原文)。 這個計畫提供了實用三角學的寶貴課程。
以上是如何創建完美的 CSS 圓形扇區的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move
