你好,我這里用CSS實(shí)現(xiàn)了三種帶邊框三角,效果分別如圖:
普陀網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
實(shí)例代碼如下,根據(jù)你個(gè)人的情況調(diào)整代碼吧:
!DOCTYPE?html
html?lang="en"
head
meta?charset="UTF-8"
titleArrow/title
/head
body
style
/*?scale?*/
.arrow,
.arrow:after{
position:?relative;
display:?inline-block;
width:?0;
height:?0;
border-top:?0;
border-left:?30px?dotted?transparent;
border-right:?30px?dotted?transparent;
border-bottom:?30px?dashed?#000;
}
.arrow:after?{
position:?absolute;
top:?0;
content:?'';
transform:?translateX(-50%)?scale(.8);
border-bottom:?30px?dashed?#fff;
}
/*?width??height?*/
.arrow1,
.arrow1:after?{
position:?relative;
display:?inline-block;
width:?0;
height:?0;
border-top:?0;
border-left:?30px?dotted?transparent;
border-right:?30px?dotted?transparent;
border-bottom:?30px?dashed?#000;
}
.arrow1:after?{
position:?absolute;
left:?-26px;?
top:?2px;
content:?'';
width:?0;?
height:?0;?
border-top:?0;?
border-left:?26px?dotted?transparent;?
border-right:?26px?dotted?transparent;?
border-bottom:?26px?dashed?#fff;
}
/*?border??after?*/
.arrow2?{
position:?relative;
display:?inline-block;
width:?28px;
height:?28px;
border:?0;
border-top:?2px?solid?#000;
border-right:?2px?solid?#000;
-webkit-transform:?translate(7px,?14px)?rotate(-45deg);
-ms-transform:?translate(7px,?14px)?rotate(-45deg);
-o-transform:?translate(7px,?14px)?rotate(-45deg);
transform:?translate(7px,?14px)?rotate(-45deg);
}
.arrow2:after?{
position:?absolute;
left:?0;
top:?-2px;
width:?42px;
height:?2px;
content:?'';
border-radius:?2px;
background-color:?#000;
-webkit-transform-origin:?left?top;
-moz-transform-origin:?left?top;
-ms-transform-origin:?left?top;
-o-transform-origin:?left?top;
transform-origin:?left?top;
-webkit-transform:?rotate(45deg);
-ms-transform:?rotate(45deg);
-o-transform:?rotate(45deg);
transform:?rotate(45deg);
}
/style
span?class="arrow"/span
span?class="arrow1"/span
span?class="arrow2"/span
/body
/html
希望能幫到你,如有疑問請追問,望采納~
使用CSS制作小三角形實(shí)際就是通過控制塊元素的邊框來實(shí)現(xiàn)的。
例如:
style
.triangle-up?{
width:?0;
height:?0;
border-left:?50px?solid?transparent;
border-right:?50px?solid?transparent;
border-bottom:?100px?solid?red;
}
.triangle-down?{
width:?0;
height:?0;
border-left:?50px?solid?transparent;
border-right:?50px?solid?transparent;
border-top:?100px?solid?red;
}
.triangle-left?{
width:?0;
height:?0;
border-top:?50px?solid?transparent;
border-right:?100px?solid?red;
border-bottom:?50px?solid?transparent;
}
.triangle-right?{
width:?0;
height:?0;
border-top:?50px?solid?transparent;
border-left:?100px?solid?red;
border-bottom:?50px?solid?transparent;
}
/style
div?class='triangle-down'/div?!--向下三角形--
div?class='triangle-up'/div?!--向上三角形--
div?class='triangle-left'/div?!--向左三角形--
div?class='triangle-right'/div?!--向右三角形--
原理就是設(shè)置塊元素的三條邊透明掉(tranparent)
我們的思路是使用border邊框來實(shí)現(xiàn)三角形的樣式,因?yàn)閎order的邊框是由四個(gè)三角形組成的。
請點(diǎn)擊輸入圖片描述
首先我們創(chuàng)建一個(gè)帶邊框的div:
具體代碼實(shí)現(xiàn)如下:
width: 40px;
height: 40px;
border-width: 40px;
border-style: solid;
border-color: red green blue brown;
請點(diǎn)擊輸入圖片描述
然后我們將內(nèi)部DIV的寬高設(shè)置為0:
width: 20px;
height: 20px;
border-width: 10px;
border-style: solid;
border-color: red green blue brown;
請點(diǎn)擊輸入圖片描述
將其他的三個(gè)邊框給取消點(diǎn):
width: 0;
height: 0;
border-width: 40px;
border-style: solid;
border-color: red transparent transparent transparent;
請點(diǎn)擊輸入圖片描述
利用更改border的邊框,我們可以隨意控制寫出我們想要的三角形,通過控制邊框的大小來實(shí)現(xiàn)三角形的大小,通過控制邊框的位置來改變?nèi)切蔚奈恢谩?/p>
請點(diǎn)擊輸入圖片描述
6
使用上面的方式實(shí)現(xiàn)三角形有一個(gè)問題就是,三角形的方位不太好控制,但是使用其他的方式依然會(huì)面臨這樣的問題。
請點(diǎn)擊輸入圖片描述
1、理論
三角形實(shí)現(xiàn)原理:寬度width為0;height為0;
(1)有一條橫豎邊(上下左右)的設(shè)置為border-方向:長度 solid red,這個(gè)畫的就是底部的直線。其他邊使用border-方向:長度 solid transparent。
(2)有兩個(gè)橫豎邊(上下左右)的設(shè)置,若斜邊是在三角形的右邊,這時(shí)候設(shè)置top或bottom的直線,和右邊的斜線。若斜邊是在三角形的左邊,這時(shí)候設(shè)置top或bottom的直線,和左邊的斜線。
二、實(shí)現(xiàn)
2.1 Triangle Up
#triangle-up {width:0;? ? height:0;? ??
border-left:50px solid transparent;? ??
border-right:50px solid transparent;? ??
border-bottom:100px solid red;}
2.2 Triangle Down
#triangle-down {width:0;? ? height:0;??
border-left:50px solid transparent;? ??
border-right:50px solid transparent;? ??
border-top:100px solid red;}
2.3 Triangle Left
#triangle-left {
width:0;??
height:0;??
border-top:50px solid transparent;??
border-right:100px solid red;? ?
border-bottom:50px solid transparent;}
2.4 Triangle Right
#triangle-right {width:0;? ??
height:0;? ??
border-top:50px solid transparent;? ?
border-left:100px solid red;? ??
border-bottom:50px solid transparent;}
2.5 Triangle Top Left
#triangle-topleft {width:0;??
height:0;? ??
border-top:100px solid red;? ?
border-right:100px solid transparent;}
2.6?Triangle Top Right
#triangle-topright {width:0;? ?
height:0;??
border-top:100px solid red;? ??
border-left:100px solid transparent; }
2.7 Triangle Bottom Left
#triangle-bottomleft {width:0;? ?
height:0;? ??
border-bottom:100px solid red;? ?
border-right:100px solid transparent;}
2.8 Triangle Bottom Right
#triangle-bottomright {width:0;? ??
height:0;? ?
border-bottom:100px solid red;? ??
border-left:100px solid transparent;}
在select外面套一個(gè)div ,給這個(gè)div設(shè)置固定寬度,并且設(shè)置overflow:hidden; 然后再給select設(shè)置寬度(select的款度要大于外面div的寬度)
.selectbox { width:120px; overflow:hidden; border-right:1px #000 solid;}
select { width:140px;}
div class="selectbox"
selectoptionftwgw/option/select
/div
在日常開發(fā)中,經(jīng)常會(huì)用到各種形狀的三角形,我們可以通過圖標(biāo)來實(shí)現(xiàn)自己先要的效果,但如何用樣式快速寫出一個(gè)適合自己的三角形呢,如果你不太明白請看接下例子。
結(jié)果如下:
這樣簡單的4個(gè)不同方位的三角形就做好了,其實(shí)實(shí)現(xiàn)三角形很簡單,為了更直觀的看到三角形實(shí)現(xiàn)原理我們來看接下來的例子。
結(jié)果如下
從圖上我們可以清晰的看出,當(dāng)我們給DOM元素設(shè)置寬高為0的時(shí)候,此時(shí)設(shè)置邊框,上、下、左、右、將以上圖右中圓心散開往外擴(kuò)展(圓心標(biāo)點(diǎn)是方便觀察點(diǎn)的,真實(shí)是不存在的),最終形成一個(gè)由四個(gè)相同三角形組成的,寬度是border寬度2倍的正方向,每一個(gè)三角形正是我們設(shè)置的不同方位的border邊框??吹竭@里其實(shí)我們想要的三角形效果已經(jīng)完后,但是還不夠完美,細(xì)心的小伙伴可能會(huì)有疑問。 為什么我設(shè)置的寬度是20px,但是卻生成了一個(gè)寬度為40的正方形 ?那我們就再看一下圖例:
圖100px;
上圖中我們給div設(shè)置了寬高,當(dāng)此的變寬分別變成了一個(gè)梯形,在border寬度逐漸縮小的過程中,邊框逐漸趨于直線,直到小到肉眼看不清相鄰邊框拼接處的結(jié)合,就成了我們眼中所謂的直線。
反過來亦是如此,讓我們的邊框設(shè)置的很寬的時(shí)候,相鄰邊框相交部位將按照對角線分別形成兩個(gè)三角形,填充變寬(不然相交處出現(xiàn)空白,4個(gè)邊框分別外延也就沒有邊框的意義了),
這也就是為什么我們生成的正方向的寬度是邊框2倍的原因。
提到上面一點(diǎn)還想就是提醒小伙伴們,在平時(shí)用css繪制三角形的時(shí)候,為了避免多占空間,我們可以省去對邊邊框的設(shè)置。
上圖例子圖像設(shè)置除了沒有設(shè)置下邊框,其余的和demo5均相同,我們可看到,箭頭依然完好無損,但圖標(biāo)實(shí)際占用空間卻節(jié)省了一半,所有在平時(shí)開發(fā)中我們要注意這個(gè) 隱藏的小坑 !
好啦,利用css繪制三角形就說到這里,相信小伙伴們早就一目了然, 只要把其中的一條邊框的color設(shè)置成固定顏色,其他邊框color設(shè)置透明 ,就可以畫出自己心儀的三角形了。通過設(shè)置寬度的不同,還可以畫出其他不一樣的效果哦,是不是很簡單,趕緊動(dòng)手試試吧!