1. 程式人生 > 其它 >前端面試題(6)—— css實現一個扇形

前端面試題(6)—— css實現一個扇形

我居然兩天沒看面試題 真可惡!!!
要面試了 有點小慌張 臨時抱一下佛腳叭~


初看這個題目,我本以為扇形長這樣(三角形+半圓):

自己css畫了一下,就變成這樣(1/4圓):

emmmmmmmm..我並不知道我這種畫法算不算扇形,希望大家能和我討論一下!!!!!!!!!!!!
具體css程式碼如下:
div{ margin-left: 200px; margin-top: 200px; width: 200px; height: 200px; border: 1px solid black; border-radius: 100% 0% 0%; }


然後我在百度上有看到很多奇奇怪怪的扇形,引起了我的興趣嘿嘿(來源百度,侵權聯絡我喲~)。


就是對一個圓切切切吧程式碼如下:

.content{ position: absolute; clip: rect(0px, 400px, 400px, 200px); }
.container{ height: 400px; width: 400px; background: black; position: absolute; border-radius: 50%; clip: rect(0px, 200px, 400px, 0); transform: rotate(60deg); }
<div class="content">


<div class="container"></div>
</div>


(看見這個毫無頭緒,當時就在想為什麼不能用紙筆直接畫出來emmm 別罵我 sorrrrry~)
看了解析發現可以先設定一個黑色背景的圓,三個黃色的扇形一模一樣,就可以通過旋轉特定的角度得到上圖所示圖案,程式碼如下:

點選檢視程式碼
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        :root{
            --color1:black;
            --color2:rgb(248, 228, 47);
            --radius:100px;
        }
        .sector {
            width: calc(var(--radius)*2);
            height: calc(var(--radius)*2);
            position: absolute;
            clip: rect(0 200px 200px 100px);/*上右下左 順時針順序*/
            overflow: hidden;
        }
        .sector::after {
            content: '';
            width: 100%; 
            height: 100%;
            background: var(--color2);
            position: absolute;
            border-radius: 50%;
            clip: rect(0 100px 200px 0); 
            background: var(--color2);
            transform: rotate(60deg);
        }
        .sector:nth-of-type(1) {
            transform: rotate(-30deg);
        }
        .sector:nth-of-type(2) {
            transform: rotate(90deg);
        }
        .sector:nth-of-type(3) {
            transform: rotate(210deg);
        } 
        .warning{
            width: calc(var(--radius)*2);
            height: calc(var(--radius)*2);
            background: var(--color1);
            border-radius: 50%;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
        }
    </style>
</head>
<body>
    <div class="warning">
        <div class="sector"></div>
        <div class="sector"></div>
        <div class="sector"></div> 
    </div>
</body>
</html>

這裡需要提到:root選擇器(我也是第一次看到)
:root----css 偽類匹配文件的根元素
對於HTML來說,:root表示元素,除了優先順序更高之外,與html選擇器相同;在宣告全域性css變數時:root會很有用。