自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

純Css實現(xiàn)旋轉(zhuǎn)的金字塔

開發(fā) 前端
css是個神奇的東西,在學(xué)習(xí)的過程中你會發(fā)現(xiàn)繪畫和藝術(shù)的美,金字塔是世界八大奇跡之一,設(shè)計精巧,計算精密,令世人贊嘆。那么如何用CSS畫一個金字塔呢?

[[378019]]

 css是個神奇的東西,在學(xué)習(xí)的過程中你會發(fā)現(xiàn)繪畫和藝術(shù)的美,金字塔是世界八大奇跡之一,設(shè)計精巧,計算精密,令世人贊嘆。那么如何用CSS畫一個金字塔呢?

人丑話不多,先看一下效果

圖片

❐ 思路

金字塔是由5個面組成的,即4個側(cè)面和1個底面。我們可以把它看作是一個童年時期玩過的元寶,或者端午節(jié)戴在身上的福字。為什么這么說呢?

“橫看成嶺側(cè)成峰”,我們看金字塔的俯視圖是不是會看到這樣一個圖形,如下圖所示


這是一個平面圖形,如果讓這個平面圖形具有立體的效果不就是一個金字塔了么。即將上圖的(0,0)沿著x軸旋轉(zhuǎn)一定角度即可實現(xiàn)。


❐ 繪制

接下來就是繪制“元寶”的形狀,側(cè)面是4個三角形,底面是一個正方形。實現(xiàn)三角形可以采用clip-path的屬性對可視區(qū)域進行裁剪。


由上圖可知:clip-path的只能兼容高版本瀏覽器。polygon代表多邊形,所以利用該屬性可以繪制多如下圖形:

  1. clip-path: polygon(0 50%, 100% 0%, 100% 100%, 0 50%); 

 

  1. clip-path: polygon(50% 0%,50% 0%,100% 100%,0% 100%); 

 

有了上述的圖形之后,我們需要進行特殊的處理,才能得到我們想要的形狀。因為我們要搭建金字塔,所有我們塔邊的高度或者寬度需要大于底部的寬度和長度,不然的話無法搭成塔尖而形成如下圖形:


故需設(shè)置大于底部寬和高,我們這里選取為高度為200px,寬度為100px,寬度需要和底部寬度保持一致。

假設(shè)我們現(xiàn)在已經(jīng)有一個金字塔,我們可以取它的一個橫截面如下圖:


通過sin函數(shù)

解上面反三角函數(shù)求得A大約為75deg,以此類推我們可以算出其他圖形旋轉(zhuǎn)角度。

將上述的兩種三角形通過適當?shù)钠揭坪托D(zhuǎn),得到如下圖形:

  1. transform:translateZ(-50px) translateY(-100px) rotateX(-75deg); 
  2. height: 200px; 
  3. transform-origin: 0 100%; 
  4. clip-path: polygon(50% 0%,50% 0%,100% 100%,0% 100%); 

 

  1. transform: rotateX(-180deg) translateZ(50px); 

 

  1. height: 200px; 
  2. transform-origin: 0 100%; 
  3. transform: translateZ(-50px) translateY(-200px) rotateX(-105deg); 
  4. clip-path: polygon(50% 0%,50% 0%,100% 100%,0% 100%); 

 

  1. width: 200px; 
  2. transform-origin: 100% 100%; 
  3. transform: translateZ(-50px) translateX(-200px) rotateY(105deg); 
  4. clip-path: polygon(0% 50%,100% 0%,100% 100%,0% 50%); 

 

  1. width: 200px;transform-origin: 100% 100%;transform: translateZ(-50px) translateX(-100px) rotateY(75deg);clip-path: polygon(0% 50%,100% 0%,100% 100%,0% 50%); 

 

合并之后得到如下圖形


通過使用css3中的3D轉(zhuǎn)化屬性,將上圖進行轉(zhuǎn)化即可:

  1. transform:rotateX(70deg) rotateZ(45deg); 
  2. transform-style:preserve-3d; 
  3. animation:rate 10s linear infinite; 

 


由上圖可知:transform-style:preserve-3d兼容是支持高版本瀏覽器,支持部分ie瀏覽器

❐ 總結(jié)

以上就是本文的全部內(nèi)容,全部都是由css實現(xiàn)包括:

  • 定位:position
  • 圖形裁剪:clip-path
  • 元素3D轉(zhuǎn)化:transform
  • 動畫:animation

 

責任編輯:姜華 來源: 前端簡報
相關(guān)推薦

2018-10-11 15:05:56

測試軟件自動化

2020-04-27 13:45:08

數(shù)據(jù)流沙Filecoin

2025-01-16 12:30:00

2022-12-13 15:41:41

測試軟件開發(fā)

2017-08-02 00:12:50

CVPR 2017論文FPN網(wǎng)絡(luò)

2018-01-26 08:54:29

存儲SSDHDD

2017-07-26 10:32:51

計算機視覺卷積神經(jīng)網(wǎng)絡(luò)FPN

2009-11-04 10:51:19

程序員職業(yè)規(guī)劃

2013-03-14 09:46:05

移動創(chuàng)業(yè)諾基亞NEIC大師論道

2022-12-29 16:09:25

2020-04-08 08:00:00

開發(fā)者金字塔模型

2022-09-03 08:06:44

測試開發(fā)DevOps

2009-10-29 11:21:11

IT運維管理體系

2019-07-04 17:42:57

開發(fā)技能模型

2024-06-26 10:16:41

2014-05-21 16:24:47

大數(shù)據(jù)存儲大數(shù)據(jù)分析

2012-10-24 11:06:37

無線路由器

2021-10-19 22:23:47

CSSBeautiful按鈕

2024-08-29 08:13:58

點贊
收藏

51CTO技術(shù)棧公眾號