css 實現(xiàn)三角形超全、梯形咆霜、平行四邊形邓馒、愛心等形狀

css 是一門很高深的學(xué)問,是前端頁面是否好看的支柱裕便。之前一直小看了css的力量绒净,最近看其他博主的書才明白自己的css是多么的菜,以為會點布局就是css了有點貽笑大方了偿衰。這篇博客利用css 實現(xiàn)各種形狀的編寫挂疆。

完整代碼 https://github.com/shenweizheng110/study/blob/master/demo/cssShape.html

css 要想實現(xiàn)三角形、梯形燈形狀下翎,主要利用 border 的相關(guān)特性缤言。那么首先看一下border屬性,我們給一個div設(shè)置很寬的border视事。

width: 40px;
height: 40px;
border-top: 50px solid red;
border-left: 50px solid black;
border-right: 50px solid yellow;
border-bottom: 50px solid blue;

效果為:

為了看起來清楚一點胆萧,我用了四種不同的顏色進行區(qū)分。那么我們設(shè)置 width 和 hight 都為 0 俐东,也就是content所占據(jù)的面積為0 那么在標準盒模型下跌穗,整個div所展示的面積就會由我們的border的寬度所占據(jù),畢竟我們這里沒有margin 和 padding虏辫。

width: 40px;
height: 40px;
border-top: 50px solid red;
border-left: 50px solid black;
border-right: 50px solid yellow;
border-bottom: 50px solid blue;

如果我們只需要下面藍色的那個三角形蚌吸,只需要不設(shè)置 上邊框,然后左右兩個邊框的顏色為透明的就可以砌庄。當然也可以設(shè)置除了藍色的其余邊邊框的顏色為透明的也可以羹唠。

width: 0;
height: 0;
border: 50px solid transparent;
border-bottom-color: blue;

接下來我們看一下改變?nèi)切蔚淖冮L,大家都知道改變邊框的寬度用的是 border-width 屬性娄昆。我們可以逐漸的加大 border-bottom 試試
border-bottom 為 100 px 時:

可以看的出來時三角形的高變大了佩微,而不是三角形的底變大了。之前我也在懵逼為什么會是這樣的萌焰,結(jié)果我發(fā)現(xiàn)對 border-width 的了解出現(xiàn)了偏差哺眯。事實上,border-width 是這樣的:

圖中的這條白線才是 border-width扒俯。
那么同樣的奶卓,藍色三角形的邊長是 border-left-width 加上 border-right-width 的和,高度為 border-bottom-width陵珍。

直角三角形

上面說了三角形的邊和高的構(gòu)成寝杖,那么直角三角形就是將border-left 或者 border-right其中一個置為0;

width: 0;
height: 0;
border-left: 50px solid transparent;
border-bottom: 50px solid blue;

等邊三角形

等邊三角形的定義是三角形的三邊長相等互纯,高為邊的 \sqrt 3, 那么高是由border-bottom-width控制的瑟幕,而變長是由 border-left-width 與 border-right-width 的和。那么如果我們的 border-left-width 和 border-right-width 都為 50px 的話,高就是 50\sqrt 3, 粗略的為 86px

width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 86px solid blue;

梯形

直角梯形

只需要將上邊框取消只盹,左右選取一個將其顏色置為透明

width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid yellow;
border-bottom: 50px solid blue;

普通梯形

普通梯形的上邊框需要使用width屬性指定辣往,要給他一定的寬度

width: 25px;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 50px solid blue;

菱形

這個就簡單了,只要將正方形旋轉(zhuǎn) 45 度殖卑。

width: 0;
height: 0;
border-top: 50px solid red;
border-left: 50px solid black;
border-right: 50px solid yellow;
border-bottom: 50px solid blue;
transform: rotate(45deg);

平行四邊形

借助 transform 中的 skew 屬性來實現(xiàn)站削,由于直接在div中使用,會導(dǎo)致內(nèi)部的字體也會相應(yīng)的傾斜孵稽,一種解決方案是對里面的文本加一個反向的傾斜许起,另一種解決方案是利用為元素進行傾斜,這樣內(nèi)部的文本就不會繼承傾斜了菩鲜。

.rhomboid{
    width: 100px;
    height: 100px;
    position: relative;
}
.rhomboid::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: -1;
    background: blue;
    transform: skew(45deg);
}

愛心

愛心可以通過的其他元素進行遮掩拼接實現(xiàn)园细。首先畫一個正方形

.love{
    width: 100px;
    height: 100px;
    background: red;
}

通過為元素畫兩個圓覆蓋在正方形上

        .love::before{
            content: '';
            width: 100px;
            height: 100px;
            position: absolute;
            top: 0;
            left: -50px;
            border-radius: 50%;
            background: yellow;
        }
        .love::after{
            content: '';
            width: 100px;
            height: 100px;
            position: absolute;
            top: -50px;
            left: 0;
            border-radius: 50%;
            background: yellow;
        }

旋轉(zhuǎn) 45 度 顏色改成一致的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市接校,隨后出現(xiàn)的幾起案子猛频,更是在濱河造成了極大的恐慌,老刑警劉巖蛛勉,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹿寻,死亡現(xiàn)場離奇詭異,居然都是意外死亡诽凌,警方通過查閱死者的電腦和手機毡熏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皿淋,“玉大人招刹,你說我怎么就攤上這事恬试∥讶ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵训柴,是天一觀的道長哑舒。 經(jīng)常有香客問我,道長幻馁,這世上最難降的妖魔是什么洗鸵? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮仗嗦,結(jié)果婚禮上膘滨,老公的妹妹穿的比我還像新娘。我一直安慰自己稀拐,他們只是感情好火邓,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般铲咨。 火紅的嫁衣襯著肌膚如雪躲胳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天纤勒,我揣著相機與錄音坯苹,去河邊找鬼。 笑死摇天,一個胖子當著我的面吹牛粹湃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泉坐,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼再芋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坚冀?” 一聲冷哼從身側(cè)響起济赎,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎记某,沒想到半個月后司训,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡液南,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年壳猜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑凉。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡统扳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畅姊,到底是詐尸還是另有隱情咒钟,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布若未,位于F島的核電站朱嘴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粗合。R本人自食惡果不足惜萍嬉,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隙疚。 院中可真熱鬧壤追,春花似錦、人聲如沸供屉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至资柔,卻和暖如春焙贷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贿堰。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工辙芍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羹与。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓故硅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纵搁。 傳聞我的和親對象是個殘疾皇子吃衅,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容