国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

使用CSS的border屬性繪制各種幾何形狀的方法

2024-07-11 08:42:28
字體:
供稿:網(wǎng)友

前言

border 邊框?qū)傩钥梢哉f是我們在網(wǎng)頁布局中最常用不過的一個屬性之一。 border 它不只是邊框,它還有很多非常有用的“黑魔法”哈,讓我們一起來學(xué)習(xí)一下。

border繪制幾何形狀的原理

我們先來看一個簡單的小例子:

在頁面上寫一個 div

<div class="border-test"><div>

給這個 div 加上以下樣式

.border-test {  width: 200px;  height: 200px;  background-color: #000;  border-top: 50px solid red;  border-right: 50px solid yellow;  border-bottom: 50px solid blue;  border-left: 50px solid green;}

在瀏覽器預(yù)覽可以看到下面的效果

接下來,我們把這個 div 的寬度跟高度都設(shè)為 0 ,看看是什么效果

是不是剩下4個不同顏色不同方向的三角形了,繼續(xù)往下看,一起來見證下 border 的黑魔法。

border能繪制什么幾何形狀?

  • 三角形
  • 梯形
  • 平行四邊形
  • 五邊形
  • 六邊形
  • 八邊形
  • 五角星
  • 六角星
  • ...

三角形
 

向上的三角形

要得到向上的三角形,是不是只要設(shè)置 上邊框 的寬度為 0 ,設(shè)置 上邊框左邊框右邊框 的邊框顏色設(shè)為 transparent 透明,保留 下邊框 的邊框顏色就可以了,看代碼:

<div class="triangle triangle-up"></div>
// 公共.triangle {    width: 0;    height: 0;}// 向上的三角形.triangle-up {    border-top: 0 solid transparent; // 這句這可以省略    border-right: 50px solid transparent;    border-bottom: 50px solid blue;    border-left: 50px solid transparent;}

還可以簡寫成,遵循 上右下左 順序來設(shè)置

.triangle-up {    border-width: 0 50px 50px;  // 邊框大小    border-style: solid;  // 邊框樣式    border-color: transparent transparent blue;  // 邊框顏色}

下面代碼都會用簡寫的形式。

向右的三角形

同理,設(shè)置 右邊框 的寬度為 0 ,設(shè)置 上邊框右邊框下邊框 的邊框顏色為透明,保留 左邊框 的邊框顏色就可以了

<div class="triangle triangle-right"></div>
.triangle-right {    border-width: 50px 0 50px 50px;    border-style: solid;    border-color: transparent transparent transparent green;}

向下的三角形

同理,設(shè)置 下邊框 的寬度為 0 ,設(shè)置 左邊框右邊框下邊框 的邊框顏色為透明,保留 上邊框 的邊框顏色就可以了

<div class="triangle triangle-bottom"></div>
.triangle-bottom {    border-width: 50px 50px 0;    border-style: solid;    border-color: red transparent transparent;}

向左的三角形

同理,設(shè)置 左邊框 的寬度為 0 ,設(shè)置 上邊框下邊框左邊框 的邊框顏色為透明,保留 右邊框 的邊框顏色就可以了

<div class="triangle triangle-left"></div>
.triangle-left {    border-width: 50px 50px 50px 0;    border-style: solid;    border-color: transparent yellow transparent transparent;}

接下來再來看下如何實現(xiàn)下面的三角形呢?

其實不難發(fā)現(xiàn),向左上的三角形剛好是向下的三角形的右半部分,所以要得到這個圖形,是不是只要把向下的三角形左半部分的邊框設(shè)為0就可以了,看代碼:

<div class="triangle triangle-top-left"></div>
.triangle-top-left {    border-width: 50px 50px 0 0;    border-style: solid;    border-color: red transparent transparent;}

同理,可得到其他三個不同方向三角形,代碼如下:

.triangle-top-right {    border-width: 50px 0 0 50px;    border-style: solid;    border-color: red transparent transparent;}.triangle-bottom-left {    border-width: 0 50px 50px 0;    border-style: solid;    border-color: transparent transparent blue;}.triangle-bottom-right {    border-width: 0 0 50px 50px;    border-style: solid;    border-color: transparent transparent blue;}

梯形

借助上面的實現(xiàn)三角形的方法,我們可以很容易的實現(xiàn)梯形,比如下面這個:

向上的梯形:

其實只要把上面 向上的三角形 的代碼加上寬度就能實現(xiàn)了

.trapezoid {  width: 60px;  border-bottom: 60px solid red;  border-left: 60px solid transparent;  border-right: 60px solid transparent;}

同理,可以得到 向下的梯形

.trapezoid-bottom {    width: 50px;    border-top: 50px solid red;    border-left: 50px solid transparent;    border-right: 50px solid transparent;}

如果要得到向左和向右的梯形,需要把 width 設(shè)為 0 ,然后設(shè)置相應(yīng)的高度值。

.trapezoid-left {    width: 0;    height: 50px;    border-width: 50px 50px 50px 0;    border-style: solid;    border-color: transparent red transparent transparent;}.trapezoid-right {    width: 0;    height: 50px;    border-width: 50px 0 50px 50px;    border-style: solid;    border-color: transparent transparent transparent red;}

平行四邊形

只要一個 向上的三角形向下的三角形 結(jié)合起來就能實現(xiàn),需要配合一個偽元素。

.parallelogram {    position: relative;    width: 0;    height: 0;    border-width: 0 50px 50px;    border-style: solid;    border-color: transparent transparent red;}.parallelogram:after {    position: absolute;    top: 0;    left: 0;    border-width: 50px 50px 0;    border-style: solid;    border-color: red transparent transparent;    content: "";}

五邊形

梯形加上一個三角形,很容易就能組合成一個五邊形,也需要配合一個偽元素來實現(xiàn)。

.pentagon {    position: relative;    width: 50px;    border-bottom: 50px solid red;    border-left: 50px solid transparent;    border-right: 50px solid transparent;}.pentagon:after {    position: absolute;    top: 50px;    left: -50px;    width: 0;    height: 0;    border-width: 75px 75px 0;    border-style: solid;    border-color: red transparent transparent;    content: "";}

六邊形

如果兩個相反方向且底邊同樣大小的梯形,疊加在一起,是不是就能得到一個六邊形呢?同樣需要配合一個偽元素來實現(xiàn)。

.hexagon {    position: relative;    width: 50px;    border-bottom: 50px solid red;    border-left: 50px solid transparent;    border-right: 50px solid transparent;}.hexagon:after {    position: absolute;    top: 50px;    left: -50px;    width: 50px;    border-top: 50px solid red;    border-left: 50px solid transparent;    border-right: 50px solid transparent;    content: "";}

實戰(zhàn)應(yīng)用

聊天氣泡

是不是用到了 向下的三角形 結(jié)合一個圓角矩形來實現(xiàn)。

下拉菜單

我們打開淘寶天貓,來看下它頂部的下拉菜單,是不是也用到 向上的三角形向下的三角 形。

我們來看下它的實現(xiàn)代碼:

再來看一個,我們打開京東秒殺

是不是就用到了我們上面分析的 平行四邊形 來實現(xiàn)的,我們同樣來看下它的實現(xiàn)代碼:

就是通過一個矩形,然后配合兩個偽元素的三角形結(jié)合起來實現(xiàn)的。

具體使用場景還有很多,大家可以根據(jù)自己平時項目開發(fā)中的實際需求來發(fā)揮想象。

能用CSS樣式搞定的效果就不要使用圖片哈,不僅有利于后期的維護(hù),也能減少網(wǎng)頁的請求,提高頁面的加載速度。

總結(jié)

其實通過各種組合,還可以實現(xiàn)很多不同的形狀,這里就不一一列舉了。比如還可以實現(xiàn) 八邊形五角星六角星八角星十二角星 等等, border 就是這么強(qiáng)大。

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 河曲县| 海原县| 曲周县| 马公市| 保山市| 岳普湖县| 志丹县| 绥德县| 大田县| 于田县| 辉南县| 琼海市| 新泰市| 台东市| 乌兰浩特市| 枝江市| 北碚区| 云龙县| 乐至县| 甘谷县| 平江县| 靖边县| 政和县| 赞皇县| 雅安市| 洪洞县| 米易县| 穆棱市| 兴海县| 黄冈市| 资中县| 时尚| 福鼎市| 阜南县| 九江县| 新乡县| 赤壁市| 楚雄市| 利川市| 灌南县| 合水县|