CSS繪制圖形

對CSS了解越多,越覺得CSS能做很多有趣的事情酪耳。今天主要整理CSS的繪圖功能浓恳。

一、繪制一個簡單三角形

首先我們來繪制一個簡單的三角形碗暗。
在繪制三角形之前颈将,你要仔細(xì)想一想,對于一個div言疗,你是否真的了解它的border-left/right/top/bottom長什么樣子晴圾?

1、只存在一個邊框時

// html
<body>
  <div class='triangle'></div>
</body>
//css
.triangle{
  width:100px;
  height:100px;
  background:#ddd;
  border-left:100px solid;
}

結(jié)果:


2噪奄、存在兩個邊框時

// html
<body>
  <div class='triangle'> </div>
</body>
//css
.triangle{
  width:100px;
  height:100px;
  background:#ddd;
  border-left:100px solid;
  border-top:100px solid red;
}

結(jié)果:


怎么樣死姚?出乎意料嗎?

3勤篮、存在四個邊框時

三個邊框的情況請自行腦補(bǔ)都毒,我們直接來看四個邊框。

// html
<body>
  <div class='triangle'></div>
</body>
//css
.triangle{
  width:100px;
  height:100px;
  background:#ddd;
  border-left:100px solid;
  border-top:100px solid red;
  border-right:100px solid yellow;
  border-bottom:100px solid blue;
}

結(jié)果:


總結(jié):邊框總是會把div顯示得“方方正正”碰缔,使整個div看起來不會出現(xiàn)棱角(除直角以外的其他角度)账劲。

4、在四個邊框的情況下金抡,設(shè)置div寬高為0

// html
<body>
  <div class='triangle'> </div>
</body>
//css
.triangle{
  width:0;
  height:0;
  background:#ddd;
  border-left:100px solid;
  border-top:100px solid red;
  border-right:100px solid yellow;
  border-bottom:100px solid blue;
}

結(jié)果:


如上圖所示瀑焦,通過設(shè)置div的height和width為0 ,就可以得到由div的border繪制出的四個三角形梗肝。
我們只需設(shè)置其中三個border不可見蝠猬,即可得到一個等邊直角三角形。

// html
<body>
  <div class='triangle'></div>
</body>
//css
.triangle{
  width:0;
  height:0;
  background:#ddd;
  border-left:100px solid transparent;
  border-top:100px solid transparent;
  border-right:100px solid transparent;
  border-bottom:100px solid blue;
}

結(jié)果:


二统捶、繪制太極圖形

1榆芦、方案一

將太極圖案分解為如下三個div:


代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JS Bin</title>
  </head>
  <body>
    <div class='parent'>
      <div class='yang'></div> 
      <div class='yin'></div> 
    </div>  
  </body>
</html>
//css
.parent{
  width:0;
  height:300px;
  border-left:150px solid transparent;
  border-right:150px solid transparent;
  border-radius:100%;
  /* box-shadow:0 0 5px 5px #ddd; */
}
.yang,.yin{
  width:150px;
  height:150px;
  margin:000-75px;
  border-radius:50%;
  position:relative;
}
.yang{
  background:white;  
}
.yin{
  background:black;
}
.yang::after,.yin::after{
  content:'';
  display:block;
  width:50px;
  height:50px;
  border-radius:50%;
  position:absolute;
  top:50px;
  left:50px;
}
.yang::after{
  background:black;
}
.yin::after{
  background:white;
}

2、方案二

將太極圖案分解為一個div喘鸟,并在該div上設(shè)置“陰”和“陽”兩個偽元素匆绣。這種方法只需構(gòu)造一個div,更加簡潔方便什黑。
代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JS Bin</title>
  </head>
  <body>
    <div class='parent'></div>
  </body>
</html>
//css
*{
   box-sizing:border-box;
}
.parent{
   width:300px;
   height:300px;
   border-radius:50%;
   background:linear-gradient(to right,#fff 0%,#fff 50%,#000 50%,#000 100%);
   box-shadow:0 0 10px hsla(0,0%,0%,0.25);
}
.parent::before{
   content:'';
   display:block;
   width:50px;
   height:50px;
   border:50px solid #fff;
   background:#000;
   border-radius:50%;
   margin-left:75px;  
}
.parent::after{
   content:'';
   display:block;
   width:50px;
   height:50px;
   border:50px solid #000;
   background:#fff;
   border-radius:50%;
   margin-left:75px;
}

“CSS繪制圖形”就先說這么多崎淳,其實(shí)了解了原理后,這一部分還是挺簡單的愕把,無非就是利用border的一些特性拣凹、::before和::after等偽元素并使用定位來完成相應(yīng)的效果森爽。

由于個人水平有限,博客錯誤之處嚣镜,煩請指正爬迟!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菊匿,隨后出現(xiàn)的幾起案子付呕,更是在濱河造成了極大的恐慌,老刑警劉巖跌捆,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徽职,死亡現(xiàn)場離奇詭異,居然都是意外死亡佩厚,警方通過查閱死者的電腦和手機(jī)姆钉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抄瓦,“玉大人育韩,你說我怎么就攤上這事」刖ǎ” “怎么了筋讨?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摸恍。 經(jīng)常有香客問我悉罕,道長,這世上最難降的妖魔是什么立镶? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任壁袄,我火速辦了婚禮,結(jié)果婚禮上媚媒,老公的妹妹穿的比我還像新娘嗜逻。我一直安慰自己,他們只是感情好缭召,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布栈顷。 她就那樣靜靜地躺著,像睡著了一般嵌巷。 火紅的嫁衣襯著肌膚如雪萄凤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天搪哪,我揣著相機(jī)與錄音靡努,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛惑朦,可吹牛的內(nèi)容都是我干的兽泄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼漾月,長吁一口氣:“原來是場噩夢啊……” “哼病梢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起栅屏,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堂鲜,沒想到半個月后栈雳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缔莲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年哥纫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痴奏。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛀骇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出读拆,到底是詐尸還是另有隱情擅憔,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布檐晕,位于F島的核電站暑诸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辟灰。R本人自食惡果不足惜个榕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芥喇。 院中可真熱鬧西采,春花似錦、人聲如沸继控。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽武通。三九已至狱杰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厅须,已是汗流浹背仿畸。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人错沽。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓簿晓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親千埃。 傳聞我的和親對象是個殘疾皇子憔儿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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

  • 之前曾經(jīng)練習(xí)過純css繪制的各種圖形,當(dāng)時是跟著前端網(wǎng)的一個文章敲得代碼放可,覺得效果挺不錯的谒臼,圖片如下: 可以在gi...
    天空之城有點(diǎn)藍(lán)閱讀 126評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評論 1 92
  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形耀里,我收集了32種圖形蜈缤,在下面列出。直接用CSS3畫出這些圖形冯挎,要比...
    劍殘閱讀 9,476評論 0 8
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color底哥,font,text-align房官,li...
    wzhiq896閱讀 1,731評論 0 2
  • 刑罰最為一種血淋淋的殘酷形象而存在翰守,無論是在奴隸制刑罰還是封建制刑罰時期孵奶,其都是統(tǒng)治者為了“刑一人而戒千萬人”而用...
    綠子Midori閱讀 3,765評論 12 16