css細節:尖角處理


在各種網站里面,我們會經常看到類似於這樣的尖角:(示例:新浪微博)

尖角示例 

它實現的方式有多種,哪種才是最簡單的?哪種才是最優秀的?首先我聲明一下,我還不清楚這個東西具體叫什么名字(哪位知道還望告知),暫且叫尖角吧,通俗易懂。我查看了各大互聯網公司的網站,包括騰訊、百度、新浪、天貓、去哪網, 

騰訊:

騰訊尖角示例 

百度:

百度尖角示例 

去哪網:

去哪網尖角示例 

天貓:

天貓尖角示例

 

其中,百度和騰訊直接用的背景圖片,簡單粗暴,沒有藝術細菌。

優點:形狀隨意;

缺點:不方便維護;

 

下面要說的是新浪微博,右鍵小尖角,查看元素,可以看到一段代碼:

<div class="WB_arrow"><em class="S_line1_c"></em><span class="S_bg1_c"></span></div>

可以發現,新浪是利用◆文字圖標,顏色與背景色一致,外層邊框同理,兩個◆疊起來留,一上一下留出一個像素就算是邊框了,很巧妙。為了便於理解,我把這兩塊◆改成便於區分的顏色,如下圖:

新浪微博尖角示例

藍色塊剛好把紅色塊”下半身“遮住了。如果不太明白,請直接移步新浪微博查看源碼。

優點:大小顏色隨意、方便維護;

缺點:形狀固定;

 

讓人欣慰的是天貓和去哪網的做法,完全代碼實現。以天貓為例:

html部分:

<i class="market-nav-arrow"></i>

css部分:

height: 0;
font-size: 0;
line-height: 0;
border-style: solid;
border-width: 7px 7px 7px 0;
border-color: transparent #f3f3f3;

利用css邊框來模擬尖角,最重要的一句是

border-color: transparent #f3f3f3;

上下邊框透明,左右設定尖角需要的顏色,而左邊框的大小為0,剩下一個大小為7px的右邊框,就構成了上圖天貓中的尖角,讓我把右邊框大小設為7px,結果就這個樣子:

border-width: 7px 7px 7px 7px;

天貓尖角示例

左右兩個尖角,如果需要向右的尖角,只需要把右邊框大小設置為0px即可:

border-width: 7px 0px 7px 7px;

天貓尖角示例

上下尖角同理,去哪網也是這么干的,個人比較喜歡這種方式。

優點:大小、顏色隨意,方便維護;

缺點:形狀單一

 

又凌晨半點了,該洗洗睡了,以后看到好的做法再來補充~

補充:如果不考慮IE6和7,最好的方式是利用偽類實現尖角效果:

<style>
.WB_arrow{width: 200px; height: 200px; border: 2px solid blue; position: relative; margin: 100px auto;}
.WB_arrow:before,.WB_arrow:after{ content: ""; width: 0; height: 0; position: absolute;display: block; border-width: 20px; border-style: solid;  }
.WB_arrow:before{right: -40px; top: 40px; border-color: transparent transparent transparent blue;}
.WB_arrow:after{right: -38px; top: 40px; border-color: transparent transparent transparent white;}

</style>

<div class="WB_arrow"></div>

效果:

優點:大小、顏色隨意,方便維護,減少不必要的代碼;

缺點:不兼容IE6/7


免責聲明!

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



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