亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

CSS繪制三角形的實現代碼(border法)

2024-07-11 08:59:25
字體:
來源:轉載
供稿:網友

1. 實現一個簡單的三角形

使用CSS盒模型中的border(邊框)即可實現如下所示的三角形:

CSS實現簡單三角形

實現原理:

首先來看在為元素添加border時,border的樣子;假設有如下代碼:

<div></div>div {    width: 50px;    height: 50px;    border: 2px solid orange;}

效果圖:

border的一般使用

這是我們平常使用border最普遍的情況——往往只給border一個較小的寬度(通常為1-2px);然而這樣的日常用法就會容易讓大家對border的形成方式產生 誤解 ,即認為元素的border是由四個矩形邊框拼接而成。

然而事實并不是這樣。實際上,元素的border是由 三角形 組合而成,為了說明這個問題,我們可以增大border的寬度,并為各border邊設置不同的顏色:

div {    width: 50px;    height: 50px;    border: 40px solid;    border-color: orange blue red green;}

效果圖:

border的形成方式

既然如此,那么更進一步,把元素的內容尺寸設置為0會發生什么情況呢?

div {    width: 0;    height: 0;    border: 40px solid;    border-color: orange blue red green;}

效果圖:

元素內容尺寸為0

我們將驚奇地發現,此時元素由上下左右4個三角形“拼接”而成;那么,為了實現最終的效果,即保留最下方的三角形,還應該怎么做?很簡單,我們只需要把其它border邊的顏色設置為 白色透明色

div {    width: 0;    height: 0;    border: 40px solid;    border-color: transparent transparent red;}

最終效果

Duang~ 最終的簡單三角形就繪制出來了。同理,如果想要得到其它邊上的三角形,只需要將剩余的border邊顏色設置為白色或透明色即可。

不過,被“隱藏”的上border仍然占據著空間,要想使得繪制出的三角形尺寸最小化,還需要將上border的寬度設置為0(其它情況同理):

div {    width: 0;    height: 0;    border-width: 0 40px 40px;    border-style: solid;    border-color: transparent transparent red;}

2. 實現帶邊框的三角形

帶邊框的三角形是指為三角形添加其它顏色的邊框,如同為元素添加border一樣:

帶邊框的三角形

由于不能繼續通過為已有三角形設置border的方法來為其設置邊框(因為三角形本身就是利用border實現的),所以只好另想辦法。而能想到的一個最自然的方法就是 三角形疊放 ,即把當前三角形疊放在更大的三角形上方,上圖所示的實現方法就是把黃色三角形放在了尺寸更大的藍色三角形上。

為了實現這樣的效果,需要利用 絕對定位 方法:

首先定義出外面的藍色三角形:

<div id="blue"><div>#blue {    position:relative;    width: 0;    height: 0;    border-width: 0 40px 40px;    border-style: solid;    border-color: transparent transparent blue;}

效果為:

外圍藍色三角形

隨后需要定義黃色三角形,由于黃色三角形的定位需要參考藍色三角形的位置,所以需要用到絕對定位方法。為此還需要將黃色三角形作為藍色三角形的子元素。一個可行的辦法是在藍色三角形內部定義一個額外的標簽以表示黃色三角形,但為了節約標簽起見,更好的辦法是使用 偽元素 :

#blue:after {    content: "";    width: 0;    height: 0;    position: absolute;    top: 0px;    left: 0px;    border-width: 0 40px 40px;    border-style: solid;    border-color: transparent transparent yellow;}

得到的效果為:

定義黃色三角形

需要特別注意此時定義出的黃色三角形與藍色三角形之間位置的偏移關系,該偏移將受到 topleft (本例中)以及黃色三角形本身border寬度的共同影響。

可能會有這樣的疑問:為什么黃色三角形會向左偏移一段距離呢,按道理不應該完全重合在藍色三角形上嗎,就像這樣下面這樣?

黃色三角形與藍色三角形完全重合

如果有這樣的疑問,說明還沒有對絕對定位產生足夠的認識。絕對定位的區域是基于 絕對定位父元素的 padding 區域 ,然后在此基礎上運用 top 、 left 、 right 、 bottom 等一系列屬性來約束絕對定位子元素的位置。在本例中,由于藍色三角形作為絕對定位父元素,其內容的尺寸為0,則內容區域就是該三角形的上頂點:

絕對定位區域

對于黃色三角形,由于設置了 left: 0top: 0 ,所以黃色三角形的 所有內容 (包括border、margin)將根據藍色三角形的上頂點進行定位??梢园汛藭r left: 0top: 0 分別看作是兩面“隔墻”——即上隔墻和左隔墻,黃色三角形的所有內容只能在上隔墻的下方和左隔墻的右方區域。

由于黃色三角形的內容區域也位于其頂點處,且對其設置了左右各40px的border,所以黃色三角形的內容區域將向右偏移40px,從而形成了之前的效果。

想想看將黃色三角形的位置設置為 left: 0bottom: 0 ,會得到怎樣的定位效果?(下圖所示)

黃色三角形設置為left: 0和bottom: 0

搞懂了絕對定位后,只需要在原代碼上稍作修改就可以將黃色三角形的頂點與藍色三角形頂點相重合,同時還應該適當縮小黃色三角形的尺寸(按相似三角形等比例縮?。?/p>

#blue:after {    content: "";    position: absolute;    top: 0px;    left: -38px;    border-width: 0 38px 38px;    border-style: solid;    border-color: transparent transparent yellow;}

得到:

黃色三角形與藍色三角形頂點重合

在上面的代碼中,特意刪除了之前對 width: 0height: 0 的設置,因為子元素具有 position:absolute 設置,這會使得元素尺寸在不顯式設置寬度和高度的情況下,收縮到元素內容的尺寸,由于內容設置的是 content: "" ,所以子元素的尺寸默認也就是0了。故設置 width: 0height: 0 就變得多余了。

最后一步就是利用 top 將黃色三角形向下移動至合適的位置:

#blue:after {    content: "";    position: absolute;    top: 1px;    left: -38px;    border-width: 0 38px 38px;    border-style: solid;    border-color: transparent transparent yellow;}

得到最終效果:

最終效果

學會了帶邊框三角形的繪制,那么實現類似如下三角形箭頭自然也是不在話下了:

三角形箭頭

實現代碼:

#blue:after {    content: "";    position: absolute;    top: 2px;    left: -38px;    border-width: 0 38px 38px;    border-style: solid;    border-color: transparent transparent #fff;}

3. 繪制其它角度的三角形

繪制其它角度的三角形,如:

右直角三角

或者:

左直角三角

就更簡單了,其實它們都是基于之前繪制的三角形而來的。如果想繪制右直角三角,則將左border設置為0;如果想繪制左直角三角,將右border設置為0即可(其它情況同理)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品自拍视频在线观看| 久久综合电影一区| 81精品国产乱码久久久久久| 久久天天躁狠狠躁夜夜av| 中文字幕成人精品久久不卡| 日日摸夜夜添一区| 91久久久久久久久| 国产成人精品亚洲精品| 日韩的一区二区| 日韩中文字幕在线观看| 久久av资源网站| 欧美日韩一区二区在线| 国产精品国产亚洲伊人久久| 亚洲第一在线视频| 亚洲**2019国产| 久久中国妇女中文字幕| 日韩欧美国产黄色| 欧美精品九九久久| 亚洲精品成人免费| 国产精品久久久久久久久久久久久久| 欧美国产高跟鞋裸体秀xxxhd| 国产精品揄拍一区二区| 成人国内精品久久久久一区| 中文字幕日韩av电影| 亚洲免费视频在线观看| 深夜精品寂寞黄网站在线观看| 91精品国产高清久久久久久久久| 欧美一区在线直播| 91色中文字幕| 亚洲人成电影网站色…| 欧美整片在线观看| 色偷偷88888欧美精品久久久| 欧美激情免费视频| 国产精品国产三级国产aⅴ9色| 欧美激情精品久久久久久免费印度| 亚洲精品久久久久久下一站| 中文字幕国产精品久久| 久久影院资源网| 亚洲视频在线观看| 91产国在线观看动作片喷水| 欧美老肥婆性猛交视频| 日韩美女视频中文字幕| 国色天香2019中文字幕在线观看| 久久精品这里热有精品| 日本一区二三区好的精华液| 欧美另类暴力丝袜| 中文字幕不卡在线视频极品| y97精品国产97久久久久久| 九九九热精品免费视频观看网站| 亚洲视频在线看| 精品久久久久久久久久ntr影视| 亚洲性av在线| 久久这里只有精品视频首页| 国产日本欧美一区二区三区| 亚洲毛片在线观看| 中文字幕亚洲欧美日韩2019| 91精品在线播放| 亚洲香蕉在线观看| 高清视频欧美一级| 国产精品高清免费在线观看| 日韩视频免费看| 亚洲精品一区中文| 国产精品嫩草影院久久久| 国产精品白丝jk喷水视频一区| 久久久久久91| 日韩精品视频三区| 日韩在线高清视频| 欧美另类交人妖| 亚洲成人激情在线| 亚洲色图欧美制服丝袜另类第一页| 亚洲激情免费观看| 久久天天躁夜夜躁狠狠躁2022| 亚洲a∨日韩av高清在线观看| 欧美国产日韩二区| 中文字幕亚洲欧美日韩高清| 国产女精品视频网站免费| 亚洲成人在线网| 成人黄色av网站| 国产精品免费福利| 91av视频在线免费观看| 久久免费成人精品视频| 国产精品久久久久福利| 色综合天天综合网国产成人网| 久久福利视频导航| 国产成人a亚洲精品| 国产精品免费一区| 精品中文字幕视频| 亚洲美女av电影| 日韩av在线网页| 国产精品日韩欧美| 欧美午夜宅男影院在线观看| 26uuu久久噜噜噜噜| 国产精品免费久久久| 久久久噜久噜久久综合| 精品国产美女在线| 日韩hd视频在线观看| 奇米影视亚洲狠狠色| 岛国视频午夜一区免费在线观看| 国产在线拍偷自揄拍精品| 日韩av免费在线播放| 欧美片一区二区三区| 欧美黑人狂野猛交老妇| 欧美人成在线视频| 欧美一二三视频| 欧美极品第一页| 日韩在线视频免费观看高清中文| 国产综合久久久久久| 欧美日韩亚洲一区二| 欧美一级在线亚洲天堂| 欧美午夜精品久久久久久久| 欧美精品激情在线观看| 欧美亚洲成人xxx| 日韩成人av网| 欧美日韩免费在线观看| 国产精品第二页| 97视频在线观看网址| 最近2019年好看中文字幕视频| 精品毛片网大全| 黑人巨大精品欧美一区二区三区| 亚洲三级 欧美三级| 欧美性猛交xxxx| 亚洲国产精品嫩草影院久久| 91九色在线视频| 精品福利一区二区| 国产精品女视频| 尤物yw午夜国产精品视频| 不卡中文字幕av| 午夜精品免费视频| 中文字幕日韩在线播放| 久久国产精品电影| 中文字幕久热精品在线视频| 欧美成人午夜视频| 国产精品久久国产精品99gif| 午夜精品福利视频| 欧美国产精品人人做人人爱| 91精品久久久久久久久久另类| 91夜夜揉人人捏人人添红杏| 亚洲国产97在线精品一区| 亚洲欧美日本伦理| 国产精品美乳一区二区免费| 国产精自产拍久久久久久| 欧美日韩国产区| 国产精品视频区| 欧美交受高潮1| 久久香蕉国产线看观看av| 午夜精品久久久99热福利| 亚洲美女精品成人在线视频| 国产精品一二三在线| 久久这里只有精品99| 欧美乱大交xxxxx另类电影| 日韩中文在线不卡| 国产主播喷水一区二区| 不卡av日日日| 欧美一区二区视频97| 亚洲新中文字幕| 91精品国产成人www| 国产精品欧美在线| 亚洲va欧美va国产综合久久| 日韩美女激情视频| 一区二区三区无码高清视频| 亚洲激情视频在线观看| 久久久久久综合网天天| 欧美日韩综合视频网址| 国产三级精品网站|