純 Css 繪制扇形

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

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

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

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

如圖所示,大扇形由 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;
}

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

對于 $count12 的情況需特殊處理,因為 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;
    }
}

果醬制作完畢,其它點綴請自行添加嘍...本例完整代碼在此。


2017/11/14 續(xù)更

由于本例引入了三角函數等數學運算,使用 Sass 預編譯。未安裝 Sass 的同學可下載經編譯的 源碼 開啟 sector.html 查看效果。

安裝 Sass 請參考 http://www.itdecent.cn/p/9534d06cbd0c 文章末尾的安裝教程。

本例調試方法:

cd sector
sass --watch style.scss:style.css --debug-info

作者:呆戀小喵

我的后花園:https://sunmengyuan.github.io/garden/

我的 github:https://github.com/sunmengyuan

原文鏈接:https://sunmengyuan.github.io/garden/2017/11/09/css-sector.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 各種純css圖標 CSS3可以實現很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,977評論 0 8
  • 小蕾是市中心商業(yè)區(qū)高檔服裝店的營業(yè)員,在店里工作一年多,別看小蕾只是店里的營業(yè)員,但是她的收入不比白領低,幾乎每個...
    勇往直前A2016閱讀 3,794評論 0 3
  • 我認為回老板微信,一個“哦”字非常不合適。 公司里有個實習生小妹,在微信群里回復老板的話通常只有一個字:哦。 我每...
    急性胃言閱讀 2,128評論 1 4
  • 近期又是處在周期的底部了。 處于周期頂部時,焦慮是會多些,大腦中的概念系統也要活躍些。 處在底部,概念系統就亂了或...
    Y先生說閱讀 203評論 0 0
  • 時間可以讓人忘卻一切的。可我終究學會不了灑脫。我依然站在原地去偏執(zhí)的追求過去的記憶,總是忽略了近處的幸福。心動了,...
    楊小yang閱讀 695評論 0 0

友情鏈接更多精彩內容