在前端開發(fā)中經(jīng)常會用到很多的簡易圖形,例如三角形,箭頭,圓形等。有很多人一開始會想著用小的圖片實現(xiàn),不過這樣會增加頁面請求次數(shù),延緩頁面加載效果。
在CSS中有個border屬性,它完全可以達到制作各種簡易圖形的效果,今天我們就一起來看看吧。
文章中的代碼都已經(jīng)放在了github上,感興趣的同學(xué)自取。
https://github.com/zhouxiongking/article-pages/blob/master/articles/border/border.html
CSS
在制作各種簡易圖形之前,我們先來看看border屬性的使用。
border是一個復(fù)合屬性。
border-width表示邊框?qū)挾取?/p>
border-style表示邊框樣式,設(shè)置實線,虛線,點狀等。
border-color表示邊框顏色,還可以設(shè)置transparent,表示透明。
border又分為上下左右四個方向,每個方向都占據(jù)各自的空間,不會出現(xiàn)重疊的地方,尤其是在四個方向的邊框都設(shè)置的情況下,在四個角處也不會出現(xiàn)重疊。
我們來看個最簡單的例子,在四個方向上都設(shè)置邊框,賦予不同的顏色。
圖片1
通過上面的圖片1可以看出,四個角處是分離,沒有重合的。
首先我們來看看梯形的效果圖。
梯形效果圖
我們再來分析下梯形是如何實現(xiàn)的。
因為我們完全是通過border設(shè)置,所以這個div的高度應(yīng)該為0。
梯形的左右兩個腰,恰好如同border在角的銜接處,然后將兩側(cè)的border-style設(shè)置為transparent。
因此我們可以得到以下的CSS代碼。
梯形的CSS代碼
修改border-left和border-right的寬度值,可以改變梯形的形狀。
三角形也分為上下左右四個方向,我們首先來看看總體的形狀。
三角形
然后我們也來分析下如何實現(xiàn)這個效果,以下三角形為例。
因為是呈現(xiàn)三角形的形狀,剛好契合border在角落的銜接處,因此高度和寬度都應(yīng)該為0。
下三角形是上部有區(qū)域,所以要設(shè)置border-top。
border-left和border-right兩個方向都要設(shè)置寬度,然后設(shè)置為透明即可。
因此得到以下的CSS代碼,設(shè)置不同方向border的寬度,三角形的形狀也會跟著變。
下三角形CSS代碼
同理,只要掌握了其中一個方向的三角形原理,就會輕松寫出其他方向三角形的CSS代碼。
這里直接給出上三角形的CSS代碼。
上三角形CSS代碼
左三角形的CSS代碼如下所示。
左三角形CSS代碼
右三角形的CSS代碼如下所示。
右三角形CSS代碼
接下來我們看一種基本的只用border設(shè)計的形狀。
圖形
它的實現(xiàn)方式也很簡單,只需要將width和height設(shè)置為0,然后將border四個方向的寬度設(shè)置成一樣的即可。
得到的代碼如下所示。
CSS代碼
基于上述的實現(xiàn),我們可以得到左下,左上,右上,右下四種三角形。
首先看看基本形狀。
直角三角形
看到圖形后,我們很容易發(fā)現(xiàn),只要隱藏掉連接的兩個方向的border,顯示出另外兩個方向的border,就可以得到直角三角形。
這里我們只展示出左上三角形的CSS代碼。
左上直角三角形CSS代碼
其他方向的直角三角形代碼可類比得出,大家可以試一下。
首先我們看看六角星的形狀。
六角星
看到這個圖形,大家應(yīng)該能想到可以由上下兩個三角形構(gòu)成,只要將上下兩個三角形位置對應(yīng)準確。
這里為了節(jié)省頁面元素的空間,我們可以采用偽元素去實現(xiàn)。
將頁面顯示元素設(shè)置為上三角形。
利用:after偽元素設(shè)置下三角形。
設(shè)置偽元素的position為absolute,調(diào)節(jié)right和top值。
通過上述分析,我們得到以下CSS代碼。
六角星CSS代碼
與border屬性搭配使用的還有一個很常用的屬性,那就是border-radius。
border-radius是專門設(shè)置圓角的,可以讓90度角變?yōu)閳A角。
我們首先看看最基本的圓形的樣子。
圓形
其實我們只需要將border-radius屬性設(shè)置為寬或者高的一半以上即可。代碼如下所示。
圓形
我們來看看同心圓的樣子。
同心圓
同心圓只需要設(shè)置一個border邊框,給border設(shè)置一個特殊的背景色,給div設(shè)置成白色背景即可。
同心圓CSS代碼
我們來看看半圓的形狀。
半圓
半圓的效果是如何實現(xiàn)的呢?
首先元素自身高度設(shè)置為0,設(shè)定寬度值。
設(shè)定上部和右部的border。
設(shè)定左上角和右上角的border-radius值。
得到的代碼如下所示。
上半圓
同理,下半圓,左半圓和右半圓修改對應(yīng)的值就可以獲得。
今天這篇文章主要通過border屬性,畫出了一系列簡易的圖形,這在實際中是很實用的,大家學(xué)會了嗎?
聯(lián)系客服