成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

純CSS從三角形進化到六邊形

開發 前端
今天要學習一下面試中??嫉囊粋€css題目,用css畫多邊形。這一次以三角形、四邊形、五邊形、六邊形為例,首先開始之前需要了解一些必要的知識。

 [[420151]]

今天要學習一下面試中??嫉囊粋€css題目,用css畫多邊形。這一次以三角形、四邊形、五邊形、六邊形為例,首先開始之前需要了解一些必要的知識。

一、基礎知識儲備

本次將利用純CSS知識來繪制一些形狀,為了繪制這些形狀,首先補習一下所需的CSS基礎知識點——css盒模型。

盒模型.png

由上圖可以看出標準的盒模型是由content,padding,border,margin組成的,我們用代碼看一下具體情況吧。

  1. <!--HTML部分,此部分代碼若是不變,后面將復用不在贅述--> 
  2. <div id="main"></div> 
  1. /*css部分*/  
  2. #main {  
  3.   width: 100px; 
  4.   height: 100px; 
  5.   border: 200px solid red;  

效果圖如下:

二、實戰

光說不練假把式,現在就由利用這些基本的CSS屬性來繪制常見的三角形、四邊形、五邊形……

2.1 四邊形

若是不能用直接使用background-color屬性來畫一個四邊形,由上圖我們可以看出若是讓content的寬高全部設為0,并設置border的寬高,那么我們就可以得到一個僅由border構成的四邊形了,四邊形又分為正方形、平行四邊形、矩形等等,這里就讓我們使用border來實現上述中的三種圖形吧。

2.1.1 正方形

首先讓我們來實現一下最簡單的正方形吧。

  1. #main { 
  2.   width: 0px; 
  3.   height: 0px; 
  4.   border-bottom: 200px solid red; 
  5.   border-left: 200px solid black; 
  6.   border-right: 200px solid blue; 
  7.   border-top: 200px solid pink; 

效果如下圖所示:

2.1.2 矩形

在2.1.1中我們已經實現了通過使用border來實現正方形,那么我們接下來實現一下矩形吧,根據所學過的數學知識我們只需用將正方形的調整正方形的長寬使其長≠寬即可,接下來讓我們來實現一下吧。

  1.   width: 0px; 
  2.   height: 0px; 
  3.   border-bottom: 200px solid red; 
  4.   border-left: 100px solid red; 
  5.   border-right: 100px solid red; 
  6.   border-top: 200px solid red; 

效果如下圖所示:

矩形.png

2.1.3 平行四邊形

PS:平行四邊形的實現需要使用兩個三角形來實現,故此這里建議先跳過,請先前往閱讀2.2中查看三角形的實現,再折返查看此處的平行四邊行的方法。

此處便默認您已閱讀完了2.2的內容了,接下來實現一下平行四邊形。

  1. <div id="wrapper"
  2.  <div class="public"></div> 
  3.  <div class="public move"></div> 
  4. </div> 
  1. *{ 
  2.    margin: 0; 
  3. #wrapper { 
  4.    position: relative
  5. .public { 
  6.    width: 0px; 
  7.    height: 0px; 
  8.   border-bottom: 200px solid red; 
  9.   border-left: 200px solid transparent; 
  10.   border-right: 200px solid transparent; 
  11.   border-top: 200px solid transparent; 
  12.   position: absolute
  13. .move { 
  14.   transform: rotate(180deg); 
  15.   top: 200px; 
  16.   left: 200px; 

效果如下圖所示:

截圖

2.2 三角形

目前為止,最為簡單的四邊形已完成,那么此時是不是已經有感覺了呢!我們接著往下走,既然border可以實現四邊形,那么三角形按道理應該也不在話下,當然三角形里面也有很多很多種類,按照角劃分,可分為銳角三角形、直角三角形、鈍角三角形;下面分別來實現一下。

2.2.1 銳角三角形

首先我們來看看在content的寬高都是0的情況下,border的left,right,top,bottom四個所占據的情況吧。

  1. #main { 
  2.   width: 0px; 
  3.   height: 0px; 
  4.   border-bottom: 200px solid red; 
  5.   border-left: 200px solid black; 
  6.   border-right: 200px solid blue; 
  7.   border-top: 200px solid pink; 

效果圖如下:

從圖可以看出left,right,top,bottom都是占著一個三角形的情況,那么當我們需要某個三角形時我們只需要讓其他三個三角形隱藏起來不就可以了,我們可以用transparent屬性值來隱藏border,那么來實現一下吧。

  1. #main { 
  2.   width: 0px; 
  3.   height: 0px; 
  4.   border-bottom: 200px solid red; 
  5.   border-left: 200px solid transparent; 
  6.   border-right: 200px solid transparent; 
  7.   border-top: 200px solid transparent; 

效果如圖所示:

2.2.2 直角三角形

到此我們可以畫出銳角三角形了,直角三角形我們根據上上圖可以得到,只要顯示兩個border邊即可,代碼試一下吧

  1. #main { 
  2.   width: 0px; 
  3.   height: 0px; 
  4.   border-bottom: 200px solid red; 
  5.   border-left: 200px solid red; 
  6.   border-right: 200px solid transparent; 
  7.   border-top: 200px solid transparent; 

效果如圖所示:

2.2.3 鈍角三角形

上圖證實了之前的想法的可行性了。那么接下來讓我們想想鈍角三角形該怎么實現呢?按照之前的想法是不行的,那么我們就需要改變一下想法。

我們可以用兩個直角三角形,將小的直角三角形覆蓋在大的上面,讓我們試一下吧!!

  1. <div id="main1"></div> 
  2. <div id="main2"></div> 
  1. #main1 { 
  2.   width: 0px; 
  3.   height: 0px; 
  4.   border-bottom: 200px solid red; 
  5.   border-left: 200px solid transparent; 
  6. #main2 { 
  7.   width: 0px; 
  8.   height: 0px; 
  9.   border-bottom: 200px solid black; 
  10.   border-left: 150px solid transparent; 
  11.   position: absolute
  12.   /*這里8px是瀏覽器中的margin自帶的間距,之前沒有處理*/ 
  13.   top: 8px; 
  14.   left: 58px; 

效果圖如下所示:

這次通過絕對定位來控制小的直角三角形,那么我們可以通過控制黑色三角形的顏色來顯示鈍角三角形。

2.3 五邊形

三角形都已經學會了,那么很多圖形都可以通過三角形拼湊得來,就以五邊形為例,這里將以多個三角形來畫出五邊形。

  1. <div id="wrapper"
  2.     <div class="main1 tool"></div> 
  3.     <div class="main2 tool"></div> 
  4.     <div class="main3 tool"></div> 
  5.     <div class="main4 tool"></div> 
  6.     <div class="main5 tool"></div> 
  7. </div> 
  1. *{ 
  2.     margin: 0; 
  3. #wrapper { 
  4.     position: relative
  5.     top: 300px; 
  6.     margin-left: 300px; 
  7. .main2 { 
  8.     transform: rotate(72deg); 
  9. .main3 { 
  10.     transform: rotate(144deg); 
  11. .main4 { 
  12.     transform: rotate(216deg); 
  13. .main5 { 
  14.     transform: rotate(288deg); 
  15. .tool{ 
  16.     width: 0px; 
  17.     height: 0px; 
  18.     border-right: 58px solid transparent; 
  19.     border-left: 58px solid transparent; 
  20.     border-bottom: 160px solid red; 
  21.     position: absolute
  22.     top: 0; 
  23.     left: 0; 

效果如下圖所示:

五邊形.png

實現五邊形的主要難點在于border的三個邊的取值,以及旋轉的角度。

2.4 六邊形

到目前為止三角行、四、五邊形的三種形式都實現了一遍,他們均是通過border來實現的,那么讓我們來想一下怎么畫出一個六邊形,有條件的可以在紙上畫畫,我們可以把一個五邊形分成6個等邊三角形,讓我們通過上面所學知識來實現一下六邊形吧!

  1. <div id="wrapper"
  2.   <div class="main1 tool"></div> 
  3.   <div class="main2 tool"></div> 
  4.   <div class="main3 tool"></div> 
  5.   <div class="main4 tool"></div> 
  6.   <div class="main5 tool"></div> 
  7.   <div class="main6 tool"></div> 
  8. </div> 
  1. *{ 
  2.   margin: 0; 
  3. #wrapper { 
  4.   position: relative
  5.   top: 300px; 
  6.   margin-left: 300px; 
  7. .main2 { 
  8.   transform: rotate(60deg); 
  9. .main3 { 
  10.   transform: rotate(120deg); 
  11. .main4 { 
  12.   transform: rotate(180deg); 
  13. .main5 { 
  14.   transform: rotate(240deg); 
  15. .main6 { 
  16.   transform: rotate(300deg); 
  17. .tool{ 
  18.   width: 0px; 
  19.   height: 0px; 
  20.   border-right: calc(60px / 1.732) solid transparent; 
  21.   border-left: calc(60px / 1.732) solid transparent; 
  22.   border-bottom: 60px solid red; 
  23.   transform-origin: top
  24.   position: absolute
  25.   top: 0; 
  26.   left: 0; 

通過上面的方法實現五邊形,這邊難點主要是畫出等邊三角形。

上面的方法已經實現了,讓我們想想其他的方法實現一下吧,這里我們將通過三個四邊形實現五邊形,讓我們一下實驗一下吧!!

  1. <div id="wrapper"
  2.   <div class="main1 tool"></div> 
  3.   <div class="main2 tool"></div> 
  4.   <div class="main3 tool"></div> 
  5. </div> 
  1. *{ 
  2.     margin: 0; 
  3. #wrapper { 
  4.     position: relative
  5.     top: 300px; 
  6.     margin-left: 300px; 
  7. .main1 { 
  8.     width: calc(120px / 1.732); 
  9.     height: 120px; 
  10.     background-color: black; 
  11. .main2 { 
  12.     width: calc(120px / 1.732); 
  13.     height: 120px; 
  14.     transform: rotate(120deg); 
  15.     background-color: black; 
  16. .main3 { 
  17.     width: calc(120px / 1.732); 
  18.     height: 120px; 
  19.     transform: rotate(240deg); 
  20.     background-color: black; 
  21. .tool{ 
  22.     position: absolute
  23.     top: 0; 
  24.     left: 0; 

好了,目前已經講述了三角形,四邊形,五邊形,六邊形得到實現方式了,更高的實現方式就以此類推了。

 

責任編輯:武曉燕 來源: 前端點線面
相關推薦

2017-02-21 17:25:51

架構六邊形架構數據庫

2022-03-16 14:27:49

CSS三角形前端

2017-06-08 10:33:42

軟件開發前后端架構

2020-04-02 13:44:57

架構Netflix數據

2023-08-06 23:31:36

架構系統RPC

2016-10-20 13:36:28

WebRTC瀏覽器服務器

2021-10-19 10:09:21

三角形個數數組

2019-12-16 08:08:39

六邊形架構分層架構架構

2023-11-01 07:51:15

WebGPU3D 圖形

2024-02-20 18:30:53

CSS屬性邊框

2023-04-17 09:01:01

WebGL繪制三角形

2020-12-09 08:34:24

css生成器設計師

2021-07-16 05:59:27

CSS 技巧帶圓角的三角形

2012-12-24 09:55:15

iOSUnity3D

2022-12-28 07:48:40

六邊形動畫CSS

2023-04-14 08:00:00

架構測試開發

2021-04-15 06:02:50

CSS 三角形技巧

2023-05-06 07:23:57

2023-12-13 10:06:28

六邊形架構系統測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产女人与拘做视频免费 | 午夜精品一区 | 99爱免费| 国产美女免费视频 | 国产一在线观看 | 亚洲男人网 | 99热.com| 中文字幕动漫成人 | 成人精品鲁一区一区二区 | 毛片在线视频 | 国内自拍视频在线观看 | 久久高清 | 香蕉久久久 | 国产精品99久久久久久动医院 | 亚洲一区免费 | 久久久国产一区二区三区四区小说 | 国产精品一区久久久久 | 日本不卡一区 | 精品久久电影 | 国产真实精品久久二三区 | 日韩不卡一区二区 | 久草网在线视频 | 中文字幕一二三 | 网站国产| 精品中文字幕在线观看 | 国产精品久久久久aaaa樱花 | 男女精品久久 | 日韩高清在线 | 精品久久久久久红码专区 | 成人免费小视频 | 午夜视频在线免费观看 | 欧美成年黄网站色视频 | 激情欧美一区二区三区 | 天天爱av | 羞羞视频在线观看 | 国产欧美在线播放 | 中文字幕亚洲精品 | 黄色一级免费 | 在线看av网址 | 亚洲一区二区三区四区五区午夜 | 午夜视频在线播放 |