經典CSS實現三角形圖標原理解析


前言:

  在寫這篇文章之前,我也看過很多前端大神寫的代碼,But,都只是粘貼代碼和給出顯示效果,對於初學者來說大家都喜歡刨根問底,為什么要這樣做呢? 接下來就讓我給大家分享一下我對CSS實現三角形的理解:

border邊框語法:

 

  • border 四條邊框設置
  • border-left 設置左邊框,一般單獨設置左邊框樣式使用
  • border-right 設置右邊框,一般單獨設置右邊框樣式使用
  • border-top 設置上邊框,一般單獨設置上邊框樣式使用
  • border-bottom 設置下邊框,一般單獨設置下邊框樣式使用,有時可將下邊框樣式作為CSS下划線效果應用

基本用法:

// 為引用 class="border-four" 的盒子對象設置1px像素紅色實線邊框
.border-four { border: 1px solid #ff0000; };

//  同理,單獨給左邊框設置1px像素紅色實線邊框
.border-left { border-left: 1px solid #ff0000; };

//  同理,單獨給右邊框設置1px像素紅色實線邊框
.border-right { border-right: 1px solid #ff0000; };

//  同理,單獨給上邊框設置1px像素紅色實線邊框
.border-top { border-top: 1px solid #ff0000; };

//  同理,單獨給底邊框設置1px像素紅色實線邊框
.border-bottom { border-bottom: 1px solid #ff0000; };

推薦常用邊框:

// 實線邊框:solid
.solid { border: 1px solid #ff0000; }

// 虛線邊框:dashed
.dashed { border: 1px dashed #ff0000; }

更多的邊框值詳見:W3C border-style 10種屬性值

進入正題:

首先來看一下正常塊元素設置四條不同顏色邊框效果:為了效果明顯,所有邊框寬度均為50px;

上圖 html 和 css 代碼如下:

<div class="test-border">我是居中內容</div>
.test-border {
    border-top: 50px solid #ff0000;
    border-bottom: 50px solid #00a000;
    border-left: 50px solid #ff7f50;
    border-right: 50px solid #436eee;
    text-align: center;
}

請各位記住四條邊邊框位置范圍,這很重要。

接下來請在自己的大腦里面想象一下,當我去掉內容,效果顯示會是什么樣的?

再附上 html 代碼,css代碼同上沒有任何變化

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

效果如下:

 是不是和你想的不一樣?因為此處div是塊級元素,所以 會撐滿一行。接下來我們會將寬和高設置為0,看看效果又是什么樣的呢?附上 html 和css 代碼以及效果圖:

<div class="test-border"></div>
.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid #ff0000;
    border-bottom: 50px solid #00a000;
    border-left: 50px solid #ff7f50;
    border-right: 50px solid #436eee;
    text-align: center;
}

俗話說,沒有規矩,不成方圓。一定要養成書 CSS 代碼規范,推薦參考 Bootstrap CSS書寫規范,從現在做起。

我相信,看到上面效果圖,距離我們實現三角形四個方向帶箭頭已經不遠了,

如果我們將上圖的下邊框顏色設置為透明,即 border-right: 50px solid transparent;

效果如下:

如果我們我們去掉 border-bottom ,效果相信大家都能猜到,CSS 和 如下圖所示:

.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid #ff0000;
    border-bottom: 50px solid #00a000;
    border-left: 50px solid #ff7f50;
}

備注:由於此時寬和高都設置為0,所以text-align: center 是多余的,去掉。

沒錯,就是這樣的,和上面的透明的效果對比一下。

是不是離我們的三角箭頭又更近一步了?此時有的人或許會想,我把上邊框和下邊框一起去掉不就是向右的三角箭頭了?錯,錯,錯,重要事情說三遍。請恕我賣個萌,當我們去掉上邊框和下邊框,此時盒子模型的高度是為0,無法將左邊框撐高,我們將開不到任何東西,所以,不能將上邊框和下邊框寬度設置為0或者去掉。

當然,有的機智的小伙伴會說那我將上邊框或者下邊框去掉會怎么樣?讓我們去掉下邊框試一試吧。CSS 和 效果如下所示:

.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid #ff0000;
    border-left: 50px solid #ff7f50;
}

 

沒錯,效果就是這樣,變成正方形了,等等我們是不是走錯路了,現在的效果是不是我們的三角箭頭原來越遠了?那我們繼續沒有去掉border-bottom上來展開思考,

怎么樣才能達到我們想要的效果呢?既不能去掉上邊框也不能去掉下邊框,我們可不可以隱藏上邊框和下邊框呢?秘密就在這兒。大家都知道css顏色有一個屬性值 transparent 

如果我們將上邊框和下邊框的顏色設置成透明會怎么樣?自己在慢慢想象一下,效果如下:

.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid transparent;
    border-bottom: 50px solid transparent;
    border-left: 50px solid #ff7f50;
}

哇,這不就是傳說中我們夢寐以求的向右的三角箭頭么. 好神奇,我居然做到了。講了這么多,請讓我喝口水壓壓驚。

到這兒我們的css三角形圖標原理解析快接近尾聲了。接下來給出其余三個三角箭頭 CSS 代碼和效果圖。

箭頭向左:

.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid transparent;
    border-bottom: 50px solid transparent;
    border-right: 50px solid #436eee;
}

箭頭向下:

.test-border {
    width: 0;
    height: 0;
    border-top: 50px solid #ff0000;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
}

箭頭向上:

.test-border { 
    width: 0;
    height: 0;
    border-bottom: 50px solid #00a000;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
}

 

到此就講完了,很高興和大家分享,如果你有好的知識點,希望您也和大家分享。如果有不對的地方,還請大家指正。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM