Css繪製扇形圖案

來源:互聯網
上載者:User
這次給大家帶來Css繪製扇形圖案,Css繪製扇形圖案的注意事項有哪些,下面就是實戰案例,一起來看一下。

閱讀此文需具備基本數學知識:圓心角、弧度制、三角函數。

為實現如下效果嘔心瀝血:

當然你可以擁抱 Svg...在此分享如何純 Css 打造圓環進度條,只需三步!

此物乃 2 + 1 夾心餅乾,藍綠色部分為果醬。顯而易見餅乾為兩個削成了圓形的 p,我們重點示範果醬是怎麼製作的:

,大扇形由 6 個小扇形構成,每一小扇形占整個圓餅的 1/15,大扇形占整個圓餅的 6/15。我們只需構造一個扇形單元,將其複製 6 份後旋轉相應角度串連至一起即可。

如何構造扇形?用三角形偽裝...

三角形的寬高如何計算?假定圓半徑 $radius 為 100px,等分數 $count 為 15。則小扇形的圓心角為 360deg / 15,三角形的高為 100px,寬為 2 * 100px * tan(360deg / 15 / 2)。其中 360deg / 15 / 2 轉化弧度製為 PI / 15(PI == 360deg / 2)。

span {    width: 0;    height: 0;    border: $radius solid transparent;    $borderWidth: tan(pi() / $count) * $radius;    border-left-width: $borderWidth;    border-right-width: $borderWidth;}

數學欠佳的同學請自行科普...

對於 $count 為 1 或 2 的情況需特殊處理,因為 tan(PI) 及 tan(PI / 2) 為無窮值,不瞭解的同學請研究正切函數映像:

相關代碼(其中 $diameter = 2 * $radius 為圓直徑):

span {    @if $count == 1 {        width: $diameter;        height: $diameter;    } @else if $count == 2 {        width: $diameter;        height: $radius;    } @else {        width: 0;        height: 0;        border: $radius solid transparent;        $borderWidth: tan(pi() / $count) * $radius;        border-left-width: $borderWidth;        border-right-width: $borderWidth;    }}

最後,複製並逐一旋轉扇形單元:

@for $index from 0 to $count {    span:nth-child(#{$index + 1}) {        $transform: translate(-50%, 0) rotate(360deg / $count / 2 + 360deg * $index / $count);        $origin: if($count == 2, bottom, center);        -webkit-transform: $transform;                transform: $transform;        -webkit-transform-origin: $origin;                transform-origin: $origin;    }}

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

CSS3的linear-gradient線性漸層使用方法

css中hover做遮蓋罩閃動問題

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.