CSS給選中元素增加倒三角形


需求如下:

 

 給選中的item添加一個select樣式,並且生成一個下三角形

一、三角形的實現原理

寬度width為0;height為0;根據三角形的朝向設置上下左右的border,只能設置其中的三個邊框,不用給朝向的那一邊設置border。

(1)有一條橫豎邊(上下左右)的設置為border-方向:長度 solid white,這個畫的就是底部的直線。其他邊使用border-方向:長度 solid transparent。

(2)有兩個橫豎邊(上下左右)的設置,若斜邊是在三角形的右邊,這時候設置top或bottom的直線,和右邊的斜線。若斜邊是在三角形的左邊,這時候設置top或bottom的直線,和左邊的斜線。

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、 Triangle Down

#triangle-down { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid red; }

 

3 、Triangle Left

#triangle-left { width: 0; height: 0; border-top: 50px solid transparent; border-right: 100px solid red; border-bottom: 50px solid transparent; }

 

4、 Triangle Right

#triangle-right { width: 0; height: 0; border-top: 50px solid transparent; border-left: 100px solid red; border-bottom: 50px solid transparent; }

 

5、 Triangle Top Left

#triangle-topleft { width: 0; height: 0; border-top: 100px solid red; border-right: 100px solid transparent; }

 

6、 Triangle Top Right

#triangle-topright { width: 0; height: 0; border-top: 100px solid red; border-left: 100px solid transparent; }

 

7、 Triangle Bottom Left

#triangle-bottomleft { width: 0; height: 0; border-bottom: 100px solid red; border-right: 100px solid transparent; }

 

8 、Triangle Bottom Right

#triangle-bottomright { width: 0; height: 0; border-bottom: 100px solid red; border-left: 100px solid transparent; }

二、通過 :after選擇器進行美化

現在我們知道了三角形的實現原理,接下來就是將這個三角形固定到選中元素的底部,我們可以利用 :after選擇器。

對於 :before 和 :after 選擇器,大家並不陌生,但是很少有人會主動去用它們。先解釋下它們的定義和用法:

:before 選擇器在被選元素的內容前面插入內容,:after 選擇器在被選元素的內容后面插入內容,都會使用 content 屬性來指定要插入的內容。

所以我們就可以這么來實現了:

 .select { background: #fff; position: relative;
                } .select:after{ content: ""; width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 10px solid #fff; position: absolute; bottom: -10px; left: 40px;
                }

select是被選元素的樣式,通過:after 將三角形插入到被選元素的后面。一定要注意的是content:"",不能少,否則不生效。

 


免責聲明!

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



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