黃小二的讀書筆記
有才而性緩定屬大才,有智而氣和斯為大智。人偏狹我受之以寬容,人險(xiǎn)仄我持之以坦蕩。緩事宜急干,敏則有功;急事宜緩辦,忙則多措。 --李叔同
首頁(yè)
新隨筆
聚合
管理
隨筆-7 評(píng)論-24 文章-102 trackbacks-0
[轉(zhuǎn)] 完美打造超完美CSS圓角框
原文轉(zhuǎn)自:
完美打造超完美CSS圓角框
http://www.siteengine.net/thread_13_13146_1.html
推薦網(wǎng)站:
Spiffy Corners
http://www.spiffycorners.com/index.php?sc=spiffy&bg=1FD477&fg=264ADA&sz=5px
只需要填入 前景色、背景色、邊框粗細(xì) 就可以自動(dòng)生成 圓角邊框 代碼。
完美打造超完美CSS圓角框
CSS圓角框的出現(xiàn)已經(jīng)不是一天兩天了,它出現(xiàn)的直接目的就是為了替換原有的以四個(gè)角上安放圖片為主的圓角框,它的優(yōu)勢(shì)在于不需要用圖片,對(duì)于統(tǒng)一主題中出現(xiàn)不同顏色樣式的需求,不需要用作圖工具重復(fù)制作多套圓角圖片,而可以直接從css抽取顏色信息,方便做成獨(dú)立的配色方案,其次,它對(duì)于圓角框長(zhǎng)寬等位置信息的設(shè)置具有比圖片圓角更為高明的自適應(yīng)能力,真正可以把程序員的注意力集中到內(nèi)容的排布而不是陷入對(duì)頁(yè)面布局應(yīng)對(duì)的泥藻中(這也可以作為一個(gè)簡(jiǎn)單的分離關(guān)注點(diǎn)的有效例子)。
CSS圓角框有如此優(yōu)秀,那么為什么不用呢,最近,在我和一位好兄弟合作的項(xiàng)目中出現(xiàn)了上述需求(這位兄才在web開發(fā)領(lǐng)域擁有多年的經(jīng)驗(yàn),曾經(jīng)自己寫過(guò)ajax框架,他做的東西精巧別致,思維獨(dú)特,始終是我心目中強(qiáng)悍的高手),于是決定在其中使用CSS圓角框替換傳統(tǒng)的圖片圓角,我把設(shè)想告訴他,但是他的第一反應(yīng)是讓我不要用CSS圓角,原因如下:
CSS圓角從所周知會(huì)出現(xiàn)鋸齒,難以處理
CSS圓角內(nèi)部一般都無(wú)法放置復(fù)雜的頁(yè)面元素,放置其中的元素要么會(huì)出現(xiàn)大小難以調(diào)節(jié),要么會(huì)使得整個(gè)圓角框發(fā)生嚴(yán)重的元素構(gòu)圖混亂(也就是整個(gè)頁(yè)面不聽我們的話,發(fā)生破裂)
CSS圓角很難跨瀏覽器,兼容性差
(人們常說(shuō)提出一個(gè)問題往往比解決一個(gè)問題更為難能可貴,更何況我的這位兄弟能在第一反應(yīng)給CSS圓角框的缺陷做出如此精辟的概括,更顯示出他在web開發(fā)領(lǐng)域扎實(shí)的基本功和對(duì)事物針砭時(shí)弊的觀察力,這一點(diǎn)始終讓我望塵莫及。)
上述CSS圓角框的缺陷都如我這位兄弟所說(shuō),的確都存在,而且沒有一個(gè)問題能夠輕易解決,但是有句話怎么說(shuō)來(lái)著,“車到山前未必有路,與其繞過(guò)這座山,還不如踏踏實(shí)實(shí)一步一個(gè)腳印的踏出一條路來(lái)”,一來(lái)方便自己行走,二來(lái)蔭庇后人。
那么讓我們一個(gè)一個(gè)的仔細(xì)分析上述問題,慢慢解決他們
問題一
首先看鋸齒,我們知道鋸齒的實(shí)質(zhì)是肉眼無(wú)法接受眼前所看到的現(xiàn)實(shí)的狀況,計(jì)算機(jī)在處理曲線圖形時(shí),若是沒有專門的解決方案,鋸齒可以說(shuō)無(wú)處不在,那么這個(gè)解決方案究竟在那里呢?聰明的你一定會(huì)在第一時(shí)間聯(lián)想到,我們的圖形處理利器photoshop(以下簡(jiǎn)稱ps),ps在圖形處理領(lǐng)域可謂一直是領(lǐng)軍羊,它不僅處理速度極快,而且在技術(shù)上擁有大量的積累。我們這里只看它是如何處理鋸齒的
下圖為鋸齒和抗鋸齒后圖形的對(duì)比
我們看到在使用了抗鋸齒的圓角邊緣呈現(xiàn)出一種漸進(jìn)的半透明狀態(tài),沒錯(cuò),它其實(shí)就是一個(gè)半透明,這也就是ps中抗鋸齒算法的本質(zhì)假設(shè)前景圖層上某A點(diǎn),背景圖層上某B點(diǎn),目標(biāo)半透明C點(diǎn),那么我們可以用如下公式來(lái)獲取目標(biāo)點(diǎn)C的RGB值:
XML/HTML代碼
R(C)=(R(A)*alpha+R(B)*(256-alpha))/256
G(C)=(G(A)*alpha+R(B)*(256-alpha))/256
B(C)=(B(A)*alpha+R(B)*(256-alpha))/256
alpha取值范圍 [0,256]
(R Red, G Green, B Blue)
這就是一個(gè)半透明的算法(其實(shí)是一個(gè)著差運(yùn)算),這個(gè)算法是方形(box)抗鋸齒算法的基礎(chǔ)(當(dāng)然,抗鋸齒本身就是一個(gè)高級(jí)話題,算法也有很多種,比如方形(box),三角(triangle),高斯(gauss),米西爾(mitchell),其中大多是動(dòng)態(tài)圖形抗鋸齒,有興趣的朋友可以自己研究一下,這里只討論最簡(jiǎn)單的靜態(tài)圖形抗鋸齒),方形抗鋸齒算法是在過(guò)濾區(qū)域內(nèi)使用均等的權(quán)重把采樣疊加在一起實(shí)現(xiàn)的,也就是說(shuō)離邊緣越近,alpha值越高,離邊緣越遠(yuǎn),alpha值越低,你可以在邊緣的各像素平均分布alpha值來(lái)達(dá)到抗鋸齒的目的
對(duì)于鋸齒和抗鋸齒有了基本的概念,那么解決方法也有了
1) 最簡(jiǎn)單的解決方法是在ps中做一個(gè)圓角矩形,放大后把邊緣的各像素點(diǎn)依葫蘆畫瓢照搬到頁(yè)面上去(用css控制border-color和background-color兩個(gè)屬相實(shí)現(xiàn))
2) 更為穩(wěn)妥的解決方法應(yīng)該是做一個(gè)專門的程序來(lái)解決抗鋸齒,這樣一通百通,原本想自己寫,可是得益于別人已經(jīng)做了這樣的工作
http://www.spiffycorners.com
這是一個(gè)php的實(shí)現(xiàn)版本,用的就是方形抗鋸齒算法,有了這么方便的工具,相信你可以最快速的做出沒有任何鋸齒的CSS圓角框來(lái)
問題二,三
在web2.0如火如荼的今天,圓角成為一種首推的web2.0標(biāo)志性設(shè)計(jì)元素和風(fēng)格,webstandard由于其強(qiáng)大的控制能力和便于修改的特性得到大面積推廣,這直接促使div(span)+css的設(shè)計(jì)模式越來(lái)越得到大家的認(rèn)可,于是CSS圓角框就有了它存在的最大理由,可惜的是,大多數(shù)圓角框的設(shè)計(jì)意圖僅僅是為了要在其中放置一些簡(jiǎn)單的頁(yè)面元素,諸如文本和圖片,由于需求的局限,設(shè)計(jì)者無(wú)法考慮到日后圓角框還有更大的活動(dòng)空間(不要去責(zé)怪設(shè)計(jì)者,CSS圓角框作為一種設(shè)計(jì)手段上的革新,本身就是一種偉大的顛覆和創(chuàng)造,我們又怎么忍心對(duì)設(shè)計(jì)者要求的如此十全十美,如此苛刻呢)
下圖為在Firefox(以下簡(jiǎn)稱ff)中頁(yè)面出現(xiàn)混亂的情況
正確的顯示效果
由于圓角框內(nèi)放置了復(fù)雜的頁(yè)面元素(包括了float屬性,margin屬性等),ff下混亂的頁(yè)面元素大家也看到了,可以用慘不忍睹來(lái)形容,而同樣的錯(cuò)誤在ie6, ie7中也會(huì)發(fā)生,那么究竟是什么導(dǎo)致了元素混亂不堪呢?
下面以spiffycorners生成的代碼為例
CSS代碼
.spiffy{display:block}
.spiffy *{
display:block;
height:1px;
overflow:hidden;
font-size:.01em;
background:#CC0000}
.spiffy1{
margin-left:3px;
margin-right:3px;
padding-left:1px;
padding-right:1px;
border-left:1px solid #e99191;
border-right:1px solid #e99191;
background:#d83f3f}
.spiffy2{
margin-left:1px;
margin-right:1px;
padding-right:1px;
padding-left:1px;
border-left:1px solid #f9e5e5;
border-right:1px solid #f9e5e5;
background:#d53030}
.spiffy3{
margin-left:1px;
margin-right:1px;
border-left:1px solid #d53030;
border-right:1px solid #d53030;}
.spiffy4{
border-left:1px solid #e99191;
border-right:1px solid #e99191}
.spiffy5{
border-left:1px solid #d83f3f;
border-right:1px solid #d83f3f}
.spiffyfg{
background:#CC0000}
XML/HTML代碼
<
div
>
<
b
class
="spiffy"
>
<
b
class
="spiffy1"
><
b
></
b
></
b
>
<
b
class
="spiffy2"
><
b
></
b
></
b
>
<
b
class
="spiffy3"
></
b
>
<
b
class
="spiffy4"
></
b
>
<
b
class
="spiffy5"
></
b
></
b
>
<
div
class
="spiffyfg"
>
<!
– content goes here –
>
</
div
>
<
b
class
="spiffy"
>
<
b
class
="spiffy5"
></
b
>
<
b
class
="spiffy4"
></
b
>
<
b
class
="spiffy3"
></
b
>
<
b
class
="spiffy2"
><
b
></
b
></
b
>
<
b
class
="spiffy1"
><
b
></
b
></
b
></
b
>
</
div
>
在仔細(xì)觀察了代碼之后我們發(fā)覺一個(gè)問題,在其中的容器元素spiffyfg的css中沒有出現(xiàn)float屬性,float是用于控制頁(yè)面元素浮動(dòng)的工具,它是負(fù)責(zé)頁(yè)面布局的強(qiáng)有力的手段,我們?cè)陧?yè)面設(shè)計(jì)中會(huì)用到大量的float控制代碼,但是,對(duì)于float而言,微軟的IE和Firefox有著不同的理解,在W3C對(duì)于webstandard的標(biāo)準(zhǔn)中,嚴(yán)格的規(guī)定了屬性的繼承法則,子元素必須以明文聲明某個(gè)屬性是從它的父元素繼承而來(lái),若是該屬性缺失,則認(rèn)為繼承終止,F(xiàn)irefox就嚴(yán)格的貫徹了這一標(biāo)準(zhǔn), 而微軟的產(chǎn)品一向以實(shí)用主義和尊重用戶體驗(yàn)聞名,這勢(shì)必導(dǎo)致他更遵從于產(chǎn)品的價(jià)值標(biāo)準(zhǔn),在IE中,瀏覽器對(duì)屬性的解釋會(huì)采取就近原則,如果子元素屬性缺失,就會(huì)從它的父元素獲取屬性。這種做法粗看上去方便了設(shè)計(jì)者,但已不適應(yīng)走向標(biāo)準(zhǔn)化的今天。
沒錯(cuò),我們已經(jīng)找到了問題的癥結(jié),于是我們?cè)谶@里可以把第二個(gè)和第三個(gè)問題歸結(jié)為由于ie和ff在float屬性上的不同解釋所引發(fā)的沖突和不兼容。
我們找到了問題的本質(zhì)原因,但又帶來(lái)了新的問題,如何編寫代碼適應(yīng)兩個(gè)不同的瀏覽器,出于同一屬性的不同解釋,也就意味著這是一個(gè)原子性問題,擅自改動(dòng)代碼,造成的結(jié)果只能是拆東墻補(bǔ)西墻,這時(shí)候,我們想,是否有一個(gè)工具,IE認(rèn)可,F(xiàn)F不認(rèn)可,那不就解決問題了,那么這樣的工具存在嗎,這個(gè)時(shí)候我的這位兄弟提醒了我,應(yīng)該說(shuō),上帝在關(guān)閉一扇門的時(shí)候總會(huì)為其打開另一扇門(不要把上帝認(rèn)為是比爾蓋茨^_^),微軟擅做決定改變了標(biāo)準(zhǔn),讓我們無(wú)法設(shè)計(jì)統(tǒng)一的代碼,但在其css的設(shè)計(jì)中也提供了一個(gè)他獨(dú)有的工具:表達(dá)式(expression),表達(dá)式的最初設(shè)計(jì)意圖是為了在css中插入可執(zhí)行的javascript代碼,方便對(duì)群組元素方便的賦值,而在實(shí)踐中我們發(fā)現(xiàn),這一工具不為ff認(rèn)可,于是問題就出現(xiàn)了轉(zhuǎn)機(jī)。
針對(duì)屬性繼承的問題,我們可以在容器元素spiffyfg的屬性中插入如下代碼
CSS代碼
.spiffyfg{
background:#CC0000
float:left; /*for Firefox*/
float:expression("none"); /*for IE */
}
還有一個(gè)小問題,兩款瀏覽器正對(duì)圓角邊框的顯示方法也會(huì)有不同,同樣的解決方法,在.spiffy *元素中插入
CSS代碼
.spiffy *{
display:expression("block");
display:-moz-box;
height:1px;
overflow:hidden;
font-size:.01em;
background:#CC0000
}
OK,到現(xiàn)在為止,借助與各種工具,我們成功的打造了一款沒有任何鋸齒,可以容納任意復(fù)雜元素而又沒有任何兼容性問題的圓角框本文在思考實(shí)踐和寫作過(guò)程中均受到了我的這位好兄弟的積極的啟發(fā)和引導(dǎo),可以說(shuō)沒有他的經(jīng)驗(yàn)和智慧,我們無(wú)法解決這些問題,文章的大量篇幅也不僅局限于解釋原理和解決問題,而是希望能通過(guò)這樣一個(gè)在常人看來(lái)不起眼的圓角框的改良過(guò)程,給大家以問題解決思路和攻克難關(guān)的精神上的啟發(fā)
問題雖小,我們或許也能找到迂回的道路,可人生中總會(huì)碰到絕境,如何逢生不在于工具,而在于你有沒有絕境逢生的信念。
CSS圓角有立體感的DIV邊框
CSS制作圓角有立體感的DIV邊框,沒有使用任何的修飾圖片哦,感覺酷棒,如果對(duì)顏色不滿意,可以自己改,不過(guò)要注意顏色之間的色差,要不然效果不理想。其實(shí)不用圖片的話網(wǎng)頁(yè)加載非常快,不過(guò)CSs定義略顯麻煩些。
折疊/展開
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
>
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=utf-8"
/>
<
title
>
圓角邊框
</
title
>
<
style
type
="text/css"
>
#sash_left
{
}
{
width
:
430px
;
float
:
left
;
}
#sash_left ul
{
}
{
text-align
:
left
;
vertical-align
:
middle
;
padding-left
:
75px
;
}
#sash_left ul li
{
}
{
line-height
:
16px
;
margin
:
2px 0
;
}
.b1, .b2, .b3, .b4
{
}
{
font-size
:
1px
;
overflow
:
hidden
;
display
:
block
;
}
.b1
{
}
{
height
:
1px
;
background
:
#AAA
;
margin
:
0 5px
;
}
.b2
{
}
{
height
:
1px
;
background
:
#E0E0E0
;
border-right
:
2px solid #AAA
;
border-left
:
2px solid #AAA
;
margin
:
0 3px
;
}
.b3
{
}
{
height
:
1px
;
background
:
#E3E3E3
;
border-right
:
1px solid #AAA
;
border-left
:
1px solid #AAA
;
margin
:
0 2px
;
}
.b4
{
}
{
height
:
2px
;
background
:
#E6E6E6
;
border-right
:
1px solid #AAA
;
border-left
:
1px solid #AAA
;
margin
:
0 1px
;
}
.contentb
{
}
{
height
:
186px
;
background
:
#E9E9E9
;
border-right
:
1px solid #AAA
;
border-left
:
1px solid #AAA
;
}
</
style
>
</
head
>
<
body
>
<
div
id
="sash_left"
>
<
b
class
="b1"
></
b
><
b
class
="b2"
></
b
><
b
class
="b3"
></
b
><
b
class
="b4"
></
b
>
<
div
class
="contentb"
>
<
ul
>
<
li
class
="dashedline"
>
JavaScript/CSS特效代碼
</
li
>
</
ul
>
</
div
>
<
b
class
="b4"
></
b
><
b
class
="b3"
></
b
><
b
class
="b2"
></
b
><
b
class
="b1"
></
b
>
</
div
>
</
body
>
</
html
>
posted on 2010-04-21 12:09
黃小二
閱讀(302)
評(píng)論(0)
編輯
收藏
所屬分類:
Web Design
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
html中圖片ATL參數(shù)分行、出錯(cuò)顯示
CSS網(wǎng)頁(yè)配色、隔行換色、選項(xiàng)卡、Div滾動(dòng)條
[轉(zhuǎn)] 完美打造超完美CSS圓角框
CSS 書寫相關(guān)
《重構(gòu)HTML: 改善Web應(yīng)用的設(shè)計(jì)》讀書筆記
正則表達(dá)式相關(guān)(增加收集中...)
網(wǎng)頁(yè)實(shí)際時(shí)用GBK還是UTF-8
Dreamweaver 8.0 里的樣式設(shè)計(jì)器
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
文章分類
(147)
[DB](5)
[DB].MySQL(7)
[DB].Oracle(14)
[DB].SQL Server(8)
Ajax(13)
ASP.NET(18)
C#(19)
J2EE(22)
J2SE(12)
S/S2SH(15)
Web Design(8)
雜談(6)
文章檔案
(108)
2010年6月 (1)
2010年5月 (12)
2010年4月 (18)
2009年9月 (3)
2009年8月 (2)
2009年7月 (6)
2009年6月 (3)
2009年5月 (7)
2009年4月 (10)
2009年3月 (1)
2009年1月 (1)
2008年12月 (4)
2008年11月 (1)
2008年10月 (17)
2008年9月 (17)
2008年8月 (2)
2008年7月 (3)
在線幫助
Java API Specifications
Java 開源大全
javaNB 在線文檔
MSDN 技術(shù)資源庫(kù)
MySQL 5.1參考手冊(cè)
Oracle Documentation
w3school 在線教程
開源軟件庫(kù)
Ajax/JavaScript腳本大全
Asp.net源碼專業(yè)站
CSDN開源頻道
CSS9.NET
源碼愛好者
社區(qū)
developerWorks 中國(guó)
最新評(píng)論
1.?re: SQL Server 2005/2008 對(duì)With Encryption選項(xiàng)創(chuàng)建的存儲(chǔ)過(guò)程解密
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--專業(yè)祛痘
2.?re: SQL Server 2005/2008 對(duì)With Encryption選項(xiàng)創(chuàng)建的存儲(chǔ)過(guò)程解密
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--lolola
3.?re: 在 WinForm中使用 WebClient上傳文件
44444444444444444444444
--熱熱
4.?re: 使用 HibernateTemplate 實(shí)現(xiàn)分頁(yè)查詢 (HibernateCallback接口)
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--redcoatjk
5.?re: SQL Server 2005/2008 對(duì)With Encryption選項(xiàng)創(chuàng)建的存儲(chǔ)過(guò)程解密
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--謝謝樓主
評(píng)論排行榜
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 黃小二
主站蜘蛛池模板:
两个人的视频www免费
|
国产亚洲精品91
|
精品亚洲永久免费精品
|
亚洲欧洲日本在线
|
国产成人高清精品免费观看
|
国产成人人综合亚洲欧美丁香花
|
在线看片免费不卡人成视频
|
亚洲 综合 国产 欧洲 丝袜
|
久久久亚洲精华液精华液精华液
|
免费观看的a级毛片的网站
|
亚洲国产成人片在线观看无码
|
国产v亚洲v天堂a无
|
精品一区二区三区无码免费直播
|
无码日韩精品一区二区三区免费
|
亚洲成AV人在线观看网址
|
伊人婷婷综合缴情亚洲五月
|
中文字幕视频免费在线观看
|
久久精品亚洲综合专区
|
爱情岛亚洲论坛在线观看
|
亚洲成a人片在线观看天堂无码
|
国产v片免费播放
|
中文永久免费观看网站
|
亚洲免费在线视频
|
精品国产免费人成网站
|
亚洲AV无码久久精品色欲
|
亚洲精品免费在线视频
|
亚洲高清在线视频
|
免费专区丝袜脚调教视频
|
亚洲国产精品美女久久久久
|
亚洲一级片内射网站在线观看
|
午夜精品免费在线观看
|
亚洲七久久之综合七久久
|
成人亚洲性情网站WWW在线观看
|
99视频在线看观免费
|
亚洲日韩精品无码专区加勒比☆
|
亚洲精品美女久久久久久久
|
亚洲国产婷婷综合在线精品
|
97视频免费观看2区
|
美女18一级毛片免费看
|
亚洲网站视频在线观看
|
成人a毛片视频免费看
|