設(shè)計一個靈活的、可維護(hù)CSS和SVG餅圖

說到CSS技術(shù),有一本《CSS的秘密》在一個真正的夢幻般的書,書中講的CSS的技巧和技術(shù)解決日常問題。如果認(rèn)為自己CSS的相當(dāng)好,再想想:你會驚訝。在這篇文章中,我們將會用CSS設(shè)計簡單餅圖。注意,由于瀏覽器的兼容,部分瀏覽器可能無法達(dá)到想要的效果。

餅圖,即使在最簡單的雙色形式,歷來不是簡單的Web技術(shù)創(chuàng)建,盡管是非常常見的范圍從簡單的數(shù)據(jù)進(jìn)步指標(biāo)和定時器信息。實現(xiàn)通常涉及使用外部圖像編輯器來創(chuàng)建多值的多個圖像這個餅圖,或大型的JavaScript框架設(shè)計更復(fù)雜的圖表。

雖然以前那樣做可能不可能,但是他就沒有更簡單的做法了吧。但是,有許多更好的,今天就用更簡單的方式來實現(xiàn)它。

首先簡單的頁面布局

這個簡單的方式選擇就開始吧:標(biāo)記只需一個,其余的是做偽元素,變換和CSS漸變。div標(biāo)記:

像一般的餅圖,顯示默認(rèn)的百分比20%。我們將努力使它靈活的后。讓我們先風(fēng)格的元素是一個圓,這將是我們的背景(圖1):

.pie{

width:100px;height:100px;

border-radius:50%;【圓角】

background:yellowgreen;

}

我們的餅圖是綠色的(特別是黃綠色棕色# 655)顯示百分比。我們可能會使用百分比部分斜變換,但作為一個小實驗,他們被證明是一個非?;靵y的解決方案。相反,我們將在我們的左、右圓部分的顏色兩種顏色,和使用需要設(shè)置旋轉(zhuǎn)屬性的偽元素用百分比表示。

圓褐色是我們圖案中的一種顏色,我們將使用一個簡單的線性漸變來做:

background-image:linear-gradient(to?tight,transparent?50%,#655?0);

上圖所示,這就是所需的全部內(nèi)容。現(xiàn)在,我們可以著手設(shè)計充當(dāng)掩飾的偽元素,將作為一個掩飾:

.pie::before{

content:"";

display:block;

margin-left:50%;

height:100%;

}

在上圖中可以看到,我們目前是偽元素相對于派元。目前,它不包括任何東西。這只是一個看不見的矩形。開始的造型,可以一起思考:

因為我們想要它包括我們?nèi)Φ淖厣糠郑覀冃枰粋€綠色的背景吧,用的背景色: 為避免重復(fù),我們希望它有相同的背景色為其母。

我們希望它繞圓圈的中心,這是對偽元素的左側(cè)中間,所以我們應(yīng)該把transform-origin屬性設(shè)置為0 50% 在左側(cè)。

我們不希望它是一個矩形,它讓它是過的餅圖的邊緣,所以我們需要設(shè)置 這個 .pie的 overflow: hidden 同時給一個合適的border-radius值 使他成為半圓 。

總而言之,我們的偽元素的CSS將看起來像這樣:

.pie::before{content:'';display:block;margin-left:50%;height:100%;border-radius:0100%100%0/50%;background-color:inherit;transform-origin:left;}

注意:不要使用background: inherit;相反的,background-color: inherit; 會被繼承了!

目前我們的餅圖如上圖所示。這是個有趣的開始!我們可以開始旋轉(zhuǎn)的偽元素,通過應(yīng)用rotate()

變換。對于20%我們試圖實現(xiàn)的,我們可以用一個價值72deg(0.2 × 360 = 72), or2turn。,這是更好的可讀性。你可以看到它如何尋找一些其他的值,如圖5。

我們簡單的餅圖顯示不同比例;從上到下:10%、20%、40%

我們可能會認(rèn)為我們做的,但不幸的是,它不是那么簡單。我們的餅圖適合顯示從0到50%的比例,但如果我們試圖描述一個60%旋轉(zhuǎn)(通過應(yīng)用6turn。如下),發(fā)生。不要失去希望,雖然,可以和我們一起解決這個問題!

今天的分享就到這里吧,大家學(xué)習(xí)有難度嗎? 想學(xué)習(xí)更多 或者有點難度 可以加入我們的學(xué)習(xí)群 497187010 一起交流學(xué)習(xí) 哦!完美的 做法 我們下一篇繼續(xù)講,大家可以先嘗試做做一下吧。同時也可以用svg 等 來做 ,嘗試一下吧!

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內(nèi)容