国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
公主岭市| 淮滨县| 历史| 漳州市| 石台县| 桐城市| 栾川县| 商河县| 沈阳市| 南木林县| 南宁市| 潜江市| 即墨市| 扎鲁特旗| 修水县| 绍兴县| 沙田区| 梨树县| 龙泉市| 塔城市| 平顶山市| 伊春市| 潞西市| 诏安县| 阳西县| 辽源市| 浙江省| 集安市| 富阳市| 眉山市| 长治县| 抚宁县| 和静县| 绥化市| 惠来县| 平远县| 新竹县| 旌德县| 东丰县| 徐水县| 大渡口区|