CSS中使用border來創(chuàng)建三角形的基本方法講解

比較簡(jiǎn)單實(shí)用的還是使用border來創(chuàng)建三角形,今天主要研究這個(gè)的實(shí)現(xiàn)
將邊框分別設(shè)置為紅/黃/藍(lán)/綠
- .triangle {
- height: 0;
- width: 0;
- overflow: hidden;
- font-size: 0;
- line-height: 0;
- border-color: #ff0000 #ffff00 #0000ff #008000;
- border-style: solid;
- border-width: 40px 40px 40px 40px;
- }
效果如下:
四個(gè)三角形合成一個(gè)正方形,大小為80x80,如果我們只想保留其中某個(gè)三角形的話,將其它的設(shè)置為透明即可,比如(以下css未改變部分與上面相同)
- .triangle {
- border-color: #ff0000 transparent transparent transparent;
- border-width: 40px 40px 40px 40px;
- }
效果:
IE6不支持transparent,所以不會(huì)透明而會(huì)顯示難看的黑色,不過也有解決方法:將透明的部分對(duì)應(yīng)的border-style設(shè)為dashed即可
- .triangle {
- border-color: #ff0000 transparent transparent transparent;
- border-style: solid dashed dashed dashed;
- border-width: 40px 40px 40px 40px;
- }
正方形按對(duì)角線平分為兩個(gè)三角形的情況
- .triangle {
- border-color: #ff0000 #ffff00 #0000ff #008000;
- border-style: solid;
- border-width: 0 0 40px 40px;
- }

- .triangle {
- border-color: #ff0000 #ffff00 #0000ff #008000;
- border-style: solid;
- border-width: 0 40px 40px 0;
- }
需要指出的是,此時(shí)正方形的大小為40x40
如果將border-width的某一邊設(shè)為0又會(huì)怎么樣呢?也算是兩種情況
- .triangle {
- border-color: #ff0000 #ffff00 #0000ff #008000;
- border-style: solid;
- border-width: 40px 40px 0 40px;
- }
- .triangle {
- border-color: #ff0000 #ffff00 #0000ff #008000;
- border-style: solid;
- border-width: 40px 40px 40px 0;
- }
結(jié)果是長(zhǎng)方形,其中一邊為80一邊為40。寬度被設(shè)為0的邊框?qū)?yīng)方向的邊框會(huì)形成較大的三角形,且長(zhǎng)度加倍
segmentfault的"采納"的顯示其實(shí)也是用三角形實(shí)現(xiàn)的
上部分是包含'采納'兩個(gè)字的塊狀元素,設(shè)置position: relative。下部分用偽類after設(shè)置一個(gè)position: absolute的塊狀元素,將兩者接在一起。通過border-width設(shè)置成長(zhǎng)方形而不是正方形,再將下方的三角形去掉即可,看下面的css十分明顯,這也是三角形的一個(gè)很好的應(yīng)用
- .accepted-flag:after {
- position: absolute;
- left: 0;
- top: 25px;
- content: '';
- border-width: 9px 18px;
- border-style: solid;
- border-color: #009a61 #009a61 transparent #009a61;
- }
HTML5 Canvas
在你的HTML文件中有以下的canvas元素:
- <canvas id="triangle" height="100" width="100">Triangle</canvas>
- var canvas = document.getElementById('triangle');
- var context = canvas.getContext('2d');
- context.beginPath();
- context.moveTo(0, 0);
- context.lineTo(100, 0);
- context.lineTo(50, 100);
- context.closePath();
- context.fillStyle = "rgb(78, 193, 243)";
- context.fill();
SVG (Scalable Vector Graphics)
這是如何在您的標(biāo)簽,你可以定義一個(gè)內(nèi)聯(lián)SVG三角形:
- <svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="svg-triangle">
- <polygon points="0,0 100,0 50,100"/>
- </svg>
然后,只需添加一些樣式:
- .svg-triangle{
- margin: 0 auto;
- width: 100px;
- height: 100px;
- }
- .svg-triangle polygon {
- fill:#98d02e;
- stroke:#65b81d;
- stroke-width:2;
- }
相關(guān)文章
- 本篇文章主要介紹了CSS3 用border寫 空心三角箭頭 (兩種寫法),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-29
- 在 twitter 上發(fā)了一條推,給一道 CSS 題給大家做。有幾位同學(xué)給了回答,@zhiyelee 同學(xué)還給出了他的具體實(shí)現(xiàn)方案2012-06-27
CSS繪制三角形的實(shí)現(xiàn)代碼(border法)
這篇文章主要介紹了CSS繪制三角形的實(shí)現(xiàn)代碼(border法)的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-11