五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

不使用 SVG 實(shí)現(xiàn)一個(gè)圓角等邊三角形

2022-07-01 14:21 作者:今天修bug了嗎  | 我要投稿

(以下純屬吃飽了撐的,不想折磨自己還得是?svg)

最近做了一個(gè)設(shè)計(jì),需要在前端畫(huà)圓角三角形。

非圓角三角形其實(shí)反向利用 CSS border 的原理是很好實(shí)現(xiàn)的,不再贅述。

效果

但是假如想要實(shí)現(xiàn)圓角的需求,那么 border 騷操作是無(wú)能為力的。因此這里使用的思路是通過(guò)正方形進(jìn)行二維變形來(lái)進(jìn)行旋轉(zhuǎn)。

首先畫(huà)一個(gè)正方形,僅設(shè)置右上角含有弧度。

設(shè)置旋轉(zhuǎn)。

接下來(lái)涉及到一點(diǎn)簡(jiǎn)單的幾何學(xué):剪切變形和相似三角形。

首先是剪切變形。

在這一步當(dāng)中,點(diǎn)的坐標(biāo)沒(méi)有發(fā)生改變,但坐標(biāo)系不再是平面直角坐標(biāo)系。換言之,skew 旋轉(zhuǎn)的是坐標(biāo)軸,而不是圖形本身。

但是雖然各點(diǎn)的坐標(biāo)沒(méi)有發(fā)生改變,但是由于坐標(biāo)軸產(chǎn)生了旋轉(zhuǎn),因此它們的長(zhǎng)度不再相等。上圖中可以看到左邊的斜邊明顯是長(zhǎng)于右邊的。這會(huì)在在下一步中進(jìn)行修正。

首先要知道這個(gè)長(zhǎng)度的變形是怎么來(lái)的:在平面直角坐標(biāo)系中存在的直角三角形,由于坐標(biāo)軸進(jìn)行了偏轉(zhuǎn),原來(lái)的直角邊變成了斜邊,但是長(zhǎng)度不變。

通過(guò)輔助線(xiàn)可以更加清晰的看到這個(gè)過(guò)程:

又因?yàn)樾D(zhuǎn)的角度已知,是 30o,因此作出兩個(gè)角度分別為 30o,60o,90o 的直角三角形。設(shè)變形后的斜邊長(zhǎng)度為 1,可知:

x%20%3D%20%5Cfrac%7B%5Csin(%5Cfrac%7B%5Cpi%7D%7B3%7D)%7D%7B1%7D%3D%5Cfrac%7B%5Csqrt%7B2%7D%20%7D%7B3%7D%20%5Capprox%200.866025

因此得到最后一個(gè)修正變量,將原圖形按 Y 軸縮放至 0.866 倍。

這樣三角形的一個(gè)部件就做出來(lái)了。最后一步就很簡(jiǎn)單了,根據(jù)相同的原理用 :before 和 :after 偽元素把部件復(fù)制兩份再移動(dòng)到相應(yīng)的位置:

至此完成了一個(gè)完整的變換過(guò)程。

演示鏈接:

https://codepen.io/markchen9804/pen/wvmBRWe

不使用 SVG 實(shí)現(xiàn)一個(gè)圓角等邊三角形的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
普兰店市| 扎赉特旗| 赤峰市| 洛扎县| 余姚市| 鄂托克旗| 忻城县| 方正县| 甘孜县| 梁平县| 新兴县| 浦城县| 阳东县| 廉江市| 原阳县| 龙南县| 兴业县| 祁东县| 江山市| 五河县| 浦城县| 江口县| 漳平市| 天等县| 海伦市| 湘乡市| 勃利县| 木兰县| 丰城市| 武宁县| 界首市| 萍乡市| 滁州市| 牡丹江市| 徐州市| 广平县| 盐亭县| 西藏| 乐安县| 乌拉特前旗| 安国市|