前端面試題(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會很有用。