中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

CSS3的border-radius屬性規(guī)范與圓角制作

2024-04-21    分類(lèi): 網(wǎng)站建設(shè)

圓角因使人感覺(jué)舒適的友好風(fēng)格而變得無(wú)處不在。這個(gè)無(wú)處不在也讓很多前端工程師帶來(lái)困擾:實(shí)現(xiàn)麻煩、兼容困難、性能不佳。而W3C早在 2002年的CSS3草案 中就加入了一個(gè)叫 border-radius 的屬性,通過(guò)它可以直接來(lái)定義HTML元素的圓角制作
CSS3的border-radius規(guī)范
最新草案 中其主要信息如下:
屬性:
border-top-right-radius
border-bottom-right-radius
border-bottom-right-radius
border-bottom-right-radius
值: ?。它們分別是定義角形狀的四分之一橢圓的兩個(gè)半徑。

    1. 第一個(gè)值是水平半徑。
    2. 如果第二個(gè)值省略,則它等于第一個(gè)值,這時(shí)這個(gè)角就是一個(gè)四分之一圓角。
    3. 如果任意一個(gè)值為0,則這個(gè)角是矩形,不會(huì)是圓的。
    4. 值不允許是負(fù)值。
  1. 屬性:border-radius。它是上面四個(gè)屬性值的簡(jiǎn)寫(xiě)。
    值:{1,4} [ / {1,4} ]?
    1. 如果斜線前后的值都存在,那么斜線前的值設(shè)置水平半徑,且斜線后的值設(shè)置垂直半徑。如果沒(méi)有斜線,則水平半徑和垂直半徑相等。
    2. 四個(gè)值是按照top-left、top-right、 bottom-right、 bottom-left的順序來(lái)設(shè)置的。如果bottom-left省略,那么它等于top-right。如果bottom-right省略,那么它等于top-left。如果top-right省略,那么它等于top-left。
  2. 應(yīng)用范圍:所有的元素,除了table的樣式屬性border-collapse是collapse時(shí)
  3. 內(nèi)邊半徑等于外邊半徑減去對(duì)應(yīng)邊的厚度。當(dāng)這個(gè)結(jié)果是負(fù)值時(shí),內(nèi)邊半徑是0。所以內(nèi)外邊曲線的圓心并不一定是一致的。
  4. border-radius也會(huì)導(dǎo)致該元素的背景也是圓的,即使border是none。如果 background-clip 是padding-box,則背景(background)會(huì)被曲線的內(nèi)邊裁剪。如果是border-box則被外邊裁剪。border和padding定義的區(qū)域也一樣會(huì)被曲線裁剪。
  5. 所有的邊框樣式(solid、dotted、inset等)都遵照角的曲線。如果設(shè)置了border-image,則曲線以外的部分會(huì)被裁剪掉。
  6. 如果角的兩個(gè)相鄰邊有不同的寬度,那么這個(gè)角將會(huì)從寬的邊平滑過(guò)度到窄的邊。其中一條邊甚至可以是0。
  7. 兩條相鄰邊顏色和樣式轉(zhuǎn)變的中心點(diǎn)是在一個(gè)和兩邊寬度成正比的角上。比如,兩條邊寬度相同,這個(gè)點(diǎn)就是一個(gè)45°的角上,如果一條邊是另外一條邊的兩倍,那么這個(gè)點(diǎn)就在一個(gè)30°的角上。界定這個(gè)轉(zhuǎn)變的線就是連接在內(nèi)外曲線上的兩個(gè)點(diǎn)的直線
  8. 角不允許相互重疊,所以當(dāng)相鄰兩個(gè)角半徑的和大于所在矩形區(qū)域的大小時(shí),用戶代理(瀏覽器)比如縮小一個(gè)或多個(gè)角半徑。運(yùn)算法則如下:f = min(Li/Si),i ∈ {top, right, bottom, left},Ltop = Lbottom = 所在矩形區(qū)域的寬,Lleft = Lright = 所在矩形區(qū)域的高。如果f < 1,那么所有角半徑都乘以f。

瀏覽器支持

實(shí)際中,目前沒(méi)有任何一款瀏覽器支持這個(gè)屬性,只有部分瀏覽器利用其私有屬性支持部分實(shí)現(xiàn):

  1. Firefox對(duì)border-radius的支持 :
    -moz-border-radius: {1,4} | inherit
    -moz-border-radius-bottomleft : | inherit
    -moz-border-radius-bottomright: | inherit
    -moz-border-radius-topleft: | inherit
    -moz-border-radius-topright : | inherit
    1. 只對(duì)每個(gè)角設(shè)置一個(gè)半徑,只支持實(shí)現(xiàn)四分之一圓角,并不支持橢圓形圓角。
    2. 具體每個(gè)角的命名規(guī)則也和W3C不一致,這個(gè)比較討厭。
    3. Firefox3圓角已經(jīng)相當(dāng)圓滑了,F(xiàn)irefox2比較糟糕,好在它即將終結(jié)了。
  2. Safari和Chrome對(duì)border-radius的支持 :
    -webkit-border-radius: {1,2} | inherit
    -webkit-border-bottom-left-radius : {1,2} | inherit
    -webkit-border-bottom-right-radius : {1,2} | inherit
    -webkit-border-top-left-radius: {1,2} | inherit
    -webkit-border-top-right-radius : {1,2} | inherit
    1. 每個(gè)屬性有1個(gè)或2個(gè)值,當(dāng)有兩個(gè)值時(shí)1個(gè)表示水平半徑,一個(gè)表示垂直半徑writing-mode改變也隨之而變)。所以,Safari和Chrome中的圓角可以是橢圓角。
    2. webkit的實(shí)現(xiàn)方法和 W3C的CSS3草案2005年版本 非常一致,和當(dāng)前的草案大不同就是簡(jiǎn)寫(xiě)屬性-webkit-border-radius的屬性值也只有1個(gè)或2個(gè)值,意義和前面相同。
    3. Chrome中圓角鋸齒比較嚴(yán)重,基本上和Firefox2是同一水平,或許是它的webkit版本較低造成的。
    4. 由于webkit出生于kHTML,所以把 上面屬性中的webkit換成khtml即會(huì)得到以khtml為核心的瀏覽器支持的屬性了。
    5. 當(dāng)相鄰的角半徑之和大于所在矩形區(qū)域的大小時(shí),都會(huì)直接設(shè)置所有的角半徑為0,即圓角失效,而不會(huì)像Firefox那樣同比率縮小。
  3. Opera尚不支持border-radius,雖然 Opera10 alpha擁有眾多的CSS3改進(jìn) ,但是依舊看不到對(duì)其支持的希望。
  4. IE就不用說(shuō)了,標(biāo)準(zhǔn)的不支持了。從MSDN的 CSS Compatibility and Internet Explorer 中可以看出IE8已經(jīng)鐵定不支持了。

實(shí)際應(yīng)用

最簡(jiǎn)單的應(yīng)用就是支持的用圓角,不支持的用方角。比如wordpress2.7的后臺(tái)、 雅虎口碑UED 的blog和 今天你帶傘了嗎? ?;A(chǔ)代碼如下:

border-width: 1px;
border-style: solid;
-moz-border-radius: 11px;
-kHTML-border-radius: 11px;
-webkit-border-radius: 11px;
border-radius: 11px;

利用VML可以實(shí)現(xiàn)從IE5-7的圓角 ,但是貌似IE8不支持VML了。 組件DD_roundies 就是綜合以上解決方案的一個(gè)具體應(yīng)用。說(shuō)實(shí)話這樣實(shí)現(xiàn)出來(lái)的圓角也比較粗糙了,我感覺(jué)還不如不要。

像VML一樣,Canvas也能實(shí)現(xiàn)圓角,切除了IE外,所有的主流瀏覽器都支持。所以就有了兩者結(jié)合實(shí)現(xiàn)的組件 Cornerz 。

如果上面的現(xiàn)實(shí)太痛苦,而又非要用圓角的話,要么一個(gè)像素一個(gè)像素去拼裝,比如Chunky Borders;要么就老老實(shí)實(shí)用圖片來(lái)實(shí)現(xiàn)吧,比如 CSS Mojo 的方式。

分享標(biāo)題:CSS3的border-radius屬性規(guī)范與圓角制作
當(dāng)前地址:http://www.rwnh.cn/news37/324637.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)頁(yè)設(shè)計(jì)公司網(wǎng)站維護(hù)、軟件開(kāi)發(fā)、ChatGPT、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
石嘴山市| 滁州市| 安塞县| 麟游县| 平顺县| 怀仁县| 阿鲁科尔沁旗| 高阳县| 甘洛县| 阿尔山市| 土默特右旗| 新闻| 洪泽县| 色达县| 无极县| 民权县| 龙游县| 仁布县| 武川县| 河池市| 曲松县| 盐亭县| 行唐县| 绵竹市| 广河县| 咸阳市| 城口县| 柳州市| 东丽区| 双流县| 金华市| 泰州市| 二连浩特市| 龙海市| 静海县| 通化县| 黔西| 福贡县| 临泽县| 吉林市| 厦门市|