欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CSS border三角、圓角圖形生成技術(shù)詳解

  發(fā)布時(shí)間:2010-12-27 22:23:03   作者:佚名   我要評(píng)論
利用CSS的border屬性可以生成一些圖形,例如三角或是圓角。

一、前言

利用CSS的border屬性可以生成一些圖形,例如三角或是圓角。純粹的CSS2的內(nèi)容,沒(méi)有兼容性的問(wèn)題,我之前在純CSS實(shí)現(xiàn)各類氣球泡泡對(duì)話框效果一文中算是比較詳細(xì)的講述了CSS border屬性生成三角的原理,以及實(shí)例。我覺(jué)得此技術(shù)相當(dāng)實(shí)用的,故本文再次簡(jiǎn)單敘述一下,另外,本文還將展示可能并不為眾人所知的CSS border圓角生成技術(shù)。好了,裹腳布的話就不說(shuō)了,直接進(jìn)入正題。

二、CSS border生成三角技術(shù)簡(jiǎn)介

效果搶鮮
下圖為使用CSS的border屬性實(shí)現(xiàn)的三角效果:
相鄰邊框顯示的效果 腳本之家


復(fù)制代碼
代碼如下:
.test{width:0; height:0; border-width:20px 10px; border-style:solid; border-color:#ff3300 #ff3300 #ffffff #ffffff;}

如何實(shí)現(xiàn)的,為何會(huì)有這樣的效果,不急,take it easy!

梯形圖案
看下面這段樣式:


復(fù)制代碼
代碼如下:
.test{width:10px; height:10px; border:10px solid; border-color:#ff3300 #0000ff #339966 #00ff00;}

當(dāng)某個(gè)div應(yīng)用了上面這個(gè)樣式后,結(jié)果會(huì)如何?見(jiàn)下圖(截自Firefox3.5,IE瀏覽器有細(xì)節(jié)上的差異):
Firefox瀏覽器下邊框交界處的顯示 腳本之家

更進(jìn)一步 – 部分邊框透明
現(xiàn)在,設(shè)想一下,如果我們現(xiàn)在只保留一個(gè)一個(gè)上邊框,其余邊框均transparent透明(或與背景色同色),那么是不是就只顯示一個(gè)上面紅色的邊框了,我們測(cè)試下,與上面類似的代碼,只是修改下其余三個(gè)邊框的顏色。


復(fù)制代碼
代碼如下:
.test{width:10px; height:10px; border:10px solid; border-color:#ff3300 #ffffff #ffffff #ffffff;}

結(jié)果如下圖(截自Firefox3.5):
邊框色域背景色一致后的效果 腳本之家

得到的是一個(gè)梯形。

從梯形到三角
上面的是梯形,我要想得到一個(gè)三角圖案該怎么辦呢?顯然,很簡(jiǎn)單,把div的高寬都變成0,只留一邊,不就是三角了嗎?如下代碼:


復(fù)制代碼
代碼如下:
.test{width:0; height:0; border:10px solid; border-color:#ff3300 #ffffff #ffffff #ffffff;}

結(jié)果如下(依舊截圖自Firefox3.5):
高寬置0后的顯示 腳本之家

從等腰直角三角形到普通等腰三角
上圖為等腰直角三角形,之所以為等腰直角,是因?yàn)樗械倪吙驅(qū)挾仁且粯拥模绻覀儗⑦吙驅(qū)挾仍O(shè)置為不同,那會(huì)怎樣?則會(huì)形成等腰三角形。如下代碼:


復(fù)制代碼
代碼如下:
.test{width:0; height:0; border-width:20px 10px; border-style:solid; border-color:#ff3300 #ffffff #ffffff #ffffff;}

得到的結(jié)果如下圖:
邊框大小不一致后的顯示 腳本之家

從等腰到不等腰
我們可以不局限于保留一條邊框,我們可以保留兩條,于是我們可以告別等腰,得到更加銳利的三角,正如一開(kāi)始所展示的那個(gè)三角:


復(fù)制代碼
代碼如下:
.test{width:0; height:0; border-width:20px 10px; border-style:solid; border-color:#ff3300 #ff3300 #ffffff #ffffff;}

相鄰邊框顯示的效果 腳本之家

實(shí)際的應(yīng)用
關(guān)于應(yīng)用,不多說(shuō),直接看圖:

鄰邊邊框尖角使用效果圖 腳本之家

說(shuō)明:
以上的測(cè)試代碼純粹為了說(shuō)明原理,所以使用#ffffff白色邊框,通過(guò)于背景融合來(lái)隱藏邊框。在實(shí)際的操作中,應(yīng)該使用transparent透明屬性,例如border-color:#ff3300 #ff3300 transparent transparent;,這同樣會(huì)有問(wèn)題,IE6瀏覽器不支持transparent透明屬性,不過(guò)沒(méi)有關(guān)系,就border生成三角技術(shù)而言,直接設(shè)置對(duì)應(yīng)的透明邊框的border-style屬性為dotted或是dashed即可解決這一問(wèn)題,為什么使用dotted和dashed可以修復(fù)此問(wèn)題呢?您有興趣可以參見(jiàn)默塵的這篇文章Dotted&Dashed終極分析及IE6透明邊框。

三、CSS border圓角生成技術(shù)簡(jiǎn)介

我看圓角
一提到圓角,我腦中閃過(guò)的詞就是“定位”,“嵌套”,“模擬”,“漸進(jìn)增強(qiáng)”,“濫用”。定位,也就是切四個(gè)角上下左右定位,這是淘寶首頁(yè)的做法,但是面對(duì)IE6的奇偶bug只能當(dāng)作看客;使用“嵌套”則不會(huì)有此問(wèn)題,“嵌套”分圖片背景嵌套和CSS邊框嵌套,使用圖片嵌套則圖片的重用性,大小優(yōu)化有待加強(qiáng),邊框嵌套則技術(shù)實(shí)現(xiàn)上有些難度;或使用“漸進(jìn)增強(qiáng)”,CSS3 border-radius屬性,而不要去鳥IE這類自我感覺(jué)良好的瀏覽器;或是學(xué)習(xí)Google使用CSS模擬,而一般的CSS模擬都是使用左右邊框+背景色的方式1像素1像素的拼合成的。這類方法各有優(yōu)缺點(diǎn),需根據(jù)實(shí)際情況采用。對(duì)于滿眼圓角的設(shè)計(jì)圖我是很不喜歡的,該用則用,切勿為了圓角而圓角。

border圓角圖案生成法
這里介紹的實(shí)現(xiàn)圓角的得到與上面提到的都是不一樣的,雖然也屬于CSS模擬的范疇,但是其高效的程度確實(shí)相當(dāng)驚人的,可謂最佳實(shí)踐之一。

我們先看看效果,見(jiàn)下圖,截自Firefox3.6:

border屬性生成圓角 腳本之家

上述效果的實(shí)現(xiàn)僅僅使用了三個(gè)標(biāo)簽,如下代碼:

HTML:

復(fù)制代碼
代碼如下:
<div class="box"> <div class="top"></div> <div class="center">我是一只小小鳥、小小鳥!</div> <div class="bot"></div></div>

CSS:


復(fù)制代碼
代碼如下:
.box{width:500px;}.top{border-bottom:3px solid; border-top-color:#cc0000; border-bottom-color:#cc0000; border-left:3px dotted transparent; border-right:3px dotted transparent;}.center{padding:10px 20px; color:white; font-size:14px; background:#cc0000;}.bot{border-top:3px solid; border-top-color:#cc0000; border-bottom-color:#cccccc; border-left:3px dotted transparent; border-right:3px dotted transparent;}

我們看看這段代碼在IE6下的效果:

IE6下border屬性生成圓角 腳本之家

這里的高效在于,僅僅使用了一層標(biāo)簽就模擬了3像素的圓角,按照曾經(jīng)我對(duì)CSS圓角模擬的理解,模擬1像素的圓角需要一層標(biāo)簽(background+borderLeft+borderRight),兩像素的需要兩層標(biāo)簽,三像素的需要三層標(biāo)簽。

有點(diǎn)神奇,但是就像看劉謙的魔術(shù)一樣,說(shuō)穿了也就那么回事,其實(shí)這里的圓角模擬在本文的上面已經(jīng)展示了,就是這樣圖片:

邊框色域背景色一致后的效果 腳本之家

您可能會(huì)疑問(wèn),是不是搞錯(cuò)圖片啦,這顯然不是一個(gè)模樣的,非也非也,就本質(zhì)上而言,圓角的實(shí)現(xiàn)與上面的梯形圖就是同樣的東西?,F(xiàn)在,盯著上面這張圖,我們想象一下,用力的想象——上面的梯形寬度越來(lái)越寬(不是拉伸),一直寬到500像素,是不是與上面實(shí)現(xiàn)的圓角的下邊緣一致啊?

也就是說(shuō),那個(gè)含有“我是一只小小鳥……”文字的圓角圖形是有一個(gè)上梯形+矩形+下梯形組成的。參見(jiàn)下面的分離效果圖:

圓角上下分離示意圖 腳本之家

CSS border圓角生成demo

局限性
人無(wú)完人,金無(wú)足赤,此方法雖然簡(jiǎn)潔高效,兼容性上佳,但是依然有局限性,在實(shí)現(xiàn)實(shí)色背景的圓角效果時(shí),此方法可謂首選;如果是純粹的圓角邊框,此方法也可以實(shí)現(xiàn),需要用到邊框重疊,但是標(biāo)簽數(shù)幾乎要翻倍,其權(quán)衡效用將大打折扣,反不如其他圓角方法來(lái)的實(shí)在。

四、結(jié)語(yǔ)

如果在web制作中,需要用的一些直接可以使用CSS+單標(biāo)簽?zāi)M的圖片,我的建議是“毫不猶豫使用CSS模擬”,例如實(shí)色的三角,或是實(shí)現(xiàn)實(shí)色的圓角效果,這可以說(shuō)是最高效,最利于擴(kuò)展維護(hù)的前端實(shí)現(xiàn)方法了。我們需要開(kāi)闊的思維,而不要僅僅局限于眼前的技術(shù),武俠中所謂的“無(wú)招勝有招”還是有著一定的哲學(xué)道理的,長(zhǎng)遠(yuǎn)來(lái)看,意識(shí)與海納百川的心態(tài)比當(dāng)下的一點(diǎn)技術(shù)更來(lái)得重要。我還羽翼未豐,青澀稚嫩,誠(chéng)惶誠(chéng)恐不敢隨性多說(shuō)。不管怎樣,希望本文的內(nèi)容能夠?qū)δ膶W(xué)習(xí)有所幫助,如果您發(fā)現(xiàn)文章中有表述不準(zhǔn)確之處,歡迎指正。

相關(guān)文章

  • 前端CSS Grid 布局示例詳解

    CSS Grid 是一種二維布局系統(tǒng),可以同時(shí)控制行和列,相比 Flex(一維布局),更適合用在整體頁(yè)面布局或復(fù)雜模塊結(jié)構(gòu)中,這篇文章主要介紹了前端CSS Grid 布局詳解,需要的朋
    2025-04-16
  • CSS Padding 和 Margin 區(qū)別全解析

    CSS 中的 padding 和 margin 是兩個(gè)非?;A(chǔ)且重要的屬性,它們用于控制元素周圍的空白區(qū)域,本文將詳細(xì)介紹 padding 和 margin 的概念、區(qū)別以及如何在實(shí)際項(xiàng)目中使用它們
    2025-04-07
  • CSS will-change 屬性示例詳解

    will-change 是一個(gè) CSS 屬性,用于告訴瀏覽器某個(gè)元素在未來(lái)可能會(huì)發(fā)生哪些變化,本文給大家介紹CSS will-change 屬性詳解,感興趣的朋友一起看看吧
    2025-04-07
  • CSS去除a標(biāo)簽的下劃線的幾種方法

    本文給大家分享在 CSS 中,去除a標(biāo)簽(超鏈接)的下劃線的幾種方法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-07
  • 前端高級(jí)CSS用法示例詳解

    在前端開(kāi)發(fā)中,CSS(層疊樣式表)不僅是用來(lái)控制網(wǎng)頁(yè)的外觀和布局,更是實(shí)現(xiàn)復(fù)雜交互和動(dòng)態(tài)效果的關(guān)鍵技術(shù)之一,隨著前端技術(shù)的不斷發(fā)展,CSS的用法也日益豐富和高級(jí),本文將
    2025-04-07
  • css中的 vertical-align與line-height作用詳解

    文章詳細(xì)介紹了CSS中的`vertical-align`和`line-height`屬性,包括它們的作用、適用元素、屬性值、常見(jiàn)使用場(chǎng)景、常見(jiàn)問(wèn)題及解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-03-26
  • 淺析CSS 中z - index屬性的作用及在什么情況下會(huì)失效

    z-index屬性用于控制元素的堆疊順序,值越大,元素越顯示在上層,它需要元素具有定位屬性(如relative、absolute、fixed或sticky),本文給大家介紹CSS 中z - index屬性的作用
    2025-03-21
  • CSS @media print 使用詳解

    文章詳細(xì)介紹了CSS中的打印媒體查詢@mediaprint包括基本語(yǔ)法、常見(jiàn)使用場(chǎng)景和代碼示例,如隱藏非必要元素、調(diào)整字體和顏色、處理鏈接的URL顯示、分頁(yè)控制、調(diào)整邊距和背景等
    2025-03-18
  • CSS模擬 html 的 title 屬性(鼠標(biāo)懸浮顯示提示文字效果)

    本文介紹了如何使用CSS模擬HTML的title屬性,通過(guò)鼠標(biāo)懸浮顯示提示文字效果,通過(guò)設(shè)置`.tipBox`和`.tipBox.tipContent`的樣式,實(shí)現(xiàn)了提示內(nèi)容的隱藏和顯示,感興趣的朋友一起
    2025-03-10
  • 前端 CSS 動(dòng)態(tài)設(shè)置樣式::class、:style 等技巧(推薦)

    本文介紹了Vue.js中動(dòng)態(tài)綁定類名和內(nèi)聯(lián)樣式的兩種方法:對(duì)象語(yǔ)法和數(shù)組語(yǔ)法,通過(guò)對(duì)象語(yǔ)法,可以根據(jù)條件動(dòng)態(tài)切換類名或樣式;通過(guò)數(shù)組語(yǔ)法,可以同時(shí)綁定多個(gè)類名或樣式,此外
    2025-02-26

最新評(píng)論