亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

  發(fā)布時間:2018-09-11 15:58:40   作者:阿爾卑斯的隆冬   我要評論
這篇文章主要介紹了CSS繪制三角形的實現(xiàn)代碼(border法)的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 實現(xiàn)一個簡單的三角形

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

CSS實現(xiàn)簡單三角形

實現(xiàn)原理:

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

<div></div>

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

效果圖:

border的一般使用

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

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

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

效果圖:

border的形成方式

既然如此,那么更進(jìn)一步,把元素的內(nèi)容尺寸設(shè)置為0會發(fā)生什么情況呢?

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

效果圖:

元素內(nèi)容尺寸為0

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

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

最終效果

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

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

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

2. 實現(xiàn)帶邊框的三角形

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

帶邊框的三角形

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

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

首先定義出外面的藍(lán)色三角形:

<div id="blue"><div>

#blue {
    position:relative;
    width: 0;
    height: 0;
    border-width: 0 40px 40px;
    border-style: solid;
    border-color: transparent transparent blue;
}

效果為:

外圍藍(lán)色三角形

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

#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;
}

得到的效果為:

定義黃色三角形

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

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

黃色三角形與藍(lán)色三角形完全重合

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

絕對定位區(qū)域

對于黃色三角形,由于設(shè)置了 left: 0top: 0 ,所以黃色三角形的 所有內(nèi)容 (包括border、margin)將根據(jù)藍(lán)色三角形的上頂點進(jìn)行定位。可以把此時 left: 0top: 0 分別看作是兩面“隔墻”——即上隔墻和左隔墻,黃色三角形的所有內(nèi)容只能在上隔墻的下方和左隔墻的右方區(qū)域。

由于黃色三角形的內(nèi)容區(qū)域也位于其頂點處,且對其設(shè)置了左右各40px的border,所以黃色三角形的內(nèi)容區(qū)域?qū)⑾蛴移?0px,從而形成了之前的效果。

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

黃色三角形設(shè)置為left: 0和bottom: 0

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

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

得到:

黃色三角形與藍(lán)色三角形頂點重合

在上面的代碼中,特意刪除了之前對 width: 0height: 0 的設(shè)置,因為子元素具有 position:absolute 設(shè)置,這會使得元素尺寸在不顯式設(shè)置寬度和高度的情況下,收縮到元素內(nèi)容的尺寸,由于內(nèi)容設(shè)置的是 content: "" ,所以子元素的尺寸默認(rèn)也就是0了。故設(shè)置 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;
}

得到最終效果:

最終效果

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

三角形箭頭

實現(xiàn)代碼:

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

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

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

右直角三角

或者:

左直角三角

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用css繪制三角形的方法及拓展

    相信大家在日常網(wǎng)站布局中,經(jīng)常遇到一些三角形形狀的按鈕,有的人可能會想到用圖片代替,其實我們利用css就可以實現(xiàn),本文給大家介紹了利用css繪制三角形的方法,以及一些
    2016-10-17
  • 純CSS繪制三角形箭頭圖案技術(shù)解析

    這篇文章主要為大家詳細(xì)介紹了純CSS繪制三角形箭頭圖案技術(shù),如何使用:before和:after繪制CSS三角形,感興趣的小伙伴們可以參考一下
    2016-06-28
  • Html+CSS繪制三角形圖標(biāo)

    這篇文章主要為大家詳細(xì)介紹了Html+CSS繪制三角形圖標(biāo)的相關(guān)代碼,很多網(wǎng)頁都有三角形的圖標(biāo),通常是切的圖片,這里可以用css3+html寫出三角形,感興趣的小伙伴們可以參考
    2016-06-17
  • css繪制透明三角形

    這篇文章主要教大家使用css繪制透明三角形,css繪制三角形很簡單,如何繪制透明的三角形,本文為大家解決這個問題,感興趣的小伙伴們可以參考一下
    2016-03-10
  • 用CSS3繪制三角形的簡單方法

    這篇文章主要介紹了用CSS3繪制三角形的簡單方法,是CSS前端繪圖的基礎(chǔ),需要的朋友可以參考下
    2015-07-17
  • 純CSS繪制三角形箭頭效果

    最近我想修改一下這個網(wǎng)站,我想在上面放置一個提示框。這是很容易,但我想讓提示框上有一個三角形的箭頭??墒?,一想到這需要使用圖片,并且各種顏色,各種方向的箭頭要準(zhǔn)
    2014-05-07
  • 用CSS代碼繪制三角形 純CSS繪制三角形的代碼

    用CSS也可以畫畫了.不錯哦.下面我們來畫一個三角形看看
    2012-06-04
  • CSS中三角形的繪制與巧妙應(yīng)用實例詳解

    這篇文章主要介紹了CSS中三角形的繪制與巧妙應(yīng)用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-11

最新評論