Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
角邊框的繪制是Web頁面和Web應(yīng)用程序中經(jīng)常用來美化頁面效果的手法之一。今天,小海前端(頭條號)為大家介紹CSS3提供的可以將矩形變?yōu)閳A角矩形的一個(gè)屬性
承接文章:利用CSS3制作信紙背景,巧妙使用新增的背景屬性,樣式變得更有趣
技術(shù)等級:中級 | 適合有一定的CSS基礎(chǔ)的人士閱讀。
本節(jié)涉及到的CSS3屬性為:
border-radius
一、圓角屬性的取值:
CSS3 使用border-radius屬性設(shè)置圓角效果
該屬性可以通過設(shè)置圖片或塊級元素四個(gè)角的圓角半徑像素?cái)?shù)來實(shí)現(xiàn)該效果。W3C規(guī)定該屬性的可能取值為:
none,默認(rèn)值,表示元素沒有圓角效果
length,由浮點(diǎn)數(shù)字和單位標(biāo)識組成的長度值
%,由百分比設(shè)置的圓角值
該屬性可以分別設(shè)置元素的四個(gè)圓角效果,采用下列格式來實(shí)現(xiàn)。
格式:border-radius: 左上角 右上角 右下角 左下角;
通常,四個(gè)方向的角半徑均采用length取值來實(shí)現(xiàn),該取值必須為浮點(diǎn)數(shù)字和單位標(biāo)識共同組成。同時(shí)規(guī)定,該取值不得取負(fù)數(shù)。
例1:利用整數(shù)來實(shí)現(xiàn)圓角取值。
div{
width: 200px; height: 150px;
border: solid 1px #aaaaaa;
border-radius: 10px 5px 10px 5px;
background-color: #ff5857;
}
上述實(shí)例設(shè)置了一個(gè)div塊級元素,其寬度為200px,高度為150px。為了能夠看到其圓角效果,增加了顏色為#ff5857的背景顏色,并且添加了1px大小的邊框,其邊框?yàn)閷?shí)線,邊框顏色為#aaaaaa。最后設(shè)置其圓角效果,左上角和右下角均為10px,右上角和左下角均為5px。
下面我們通過圖示的形式,以左上角為10像素為例,來看一下這10元素是指哪段距離。一個(gè)角的圓角效果包括兩部分:“水平角半徑”和“垂直角半徑”。一個(gè)角的取值為一個(gè)數(shù)據(jù),表示其“水平角半徑”和“垂直角半徑”是相等的。
水平角半徑與垂直角半徑相等
看來,border-radius屬性的取值應(yīng)該為四個(gè)值,表示四個(gè)方向的圓角幅度。若該屬性在取值時(shí),取值個(gè)數(shù)小于四個(gè),又應(yīng)該如何理解呢?
例2:查看下列CSS代碼。
(1)border-radius: 10px 5px 15px 20px;
(2)border-radius: 10px 5px 15px;
(3)border-radius: 10px 5px;
(4)border-radius: 10px;
上述四組代碼中,只有組(1)提供了完全符合格式的四個(gè)數(shù)據(jù),其他三組均只提供了小于四個(gè)的數(shù)據(jù)。這種情況下,數(shù)據(jù)依然按照“左上角 右上角 右下角 左下角”的順序進(jìn)行排列,沒有涉及到的角方向按照其對角的圓角數(shù)據(jù)進(jìn)行設(shè)置。
因此,組(2)的數(shù)據(jù)表示:左上角為10px,右上角為5px,右下角為15像素,左下角為右上角的像素設(shè)置,即5px。請同學(xué)們根據(jù)這樣的方法,理解一下組(3)的圓角含義。
組(4)就設(shè)置了一個(gè)數(shù)據(jù),這表示四個(gè)方向的角半徑均為10px。
二、獨(dú)立設(shè)置元素的四個(gè)圓角效果:
若只想設(shè)置一個(gè)塊級元素右上角的圓角效果,該如何實(shí)現(xiàn)呢?這里W3C為border-radius屬性派生出了表示四個(gè)方向的獨(dú)立圓角效果的子屬性。
border-top-left-radius, 定義左上角的圓角效果
border-top-right-radius, 定義右上角的圓角效果
border-bottom-right-radius, 定義右下角的圓角效果
border-bottom-left-radius, 定義左下角的圓角效果
上述四個(gè)子屬性的取值規(guī)則和border-radius屬性的取值規(guī)則是完全相同的。
例3:設(shè)置p標(biāo)記的圓角效果,其中左下角沒有圓角效果,其他三個(gè)方向角的圓角效果均為25px。
方法1:利用border-radius屬性統(tǒng)一設(shè)置。
p{border-radius: 25px 25px 25px 0;}
方法2:利用border-radius屬性的派生子屬性設(shè)置。
p{
border-top-left-radius: 25px;
border-top-right-radius: 25px;
border-bottom-right-radius: 25px;
}
方法3:利用border-radius屬性設(shè)置所有角方向均為25px,再利用border-radius屬性的派生子屬性設(shè)置左下角沒有圓角效果。
p{
border-radius: 25px;
border-bottom-left-radius: none;
}
三、設(shè)置水平角半徑和垂直角半徑不同的圓角效果
W3C也提供了兩個(gè)角半徑不相同的圓角效果設(shè)置方式,這里依然以左上角為例,來展示兩個(gè)角半徑不同的設(shè)置方式。
格式:border-top-left-radius:水平角半徑/垂直角半徑;
上述格式中,兩個(gè)方向的角半徑之間利用斜杠(/)間隔。
例4:設(shè)置div塊級元素的左上角圓角效果為:水平角半徑50px,垂直角半徑25px。
div{border-top-left-radius: 50px/25px;}
水平角半徑與垂直角半徑不相等
例5:設(shè)置div塊級元素為一個(gè)半徑為100px的正圓形。
div{
width: 200px; height: 200px;
background-color: #ff5857;
border: solid 1px #aaaaaa;
border-radius: 100px;
}
上述代碼中將塊級元素的圓角效果半徑設(shè)置為寬度或高度的一半,這樣就可以得到一個(gè)半徑為寬度或高度的一半的正圓形。
例6:設(shè)置div塊級元素為一個(gè)長半軸為100px,短半軸為75px的橢圓形。
div{
width: 200px; height: 150px;
background-color: #ff5857;
border: solid 1px #aaaaaa;
border-radius: 100px/75px;
}
上述代碼中將塊級元素的水平角半徑設(shè)置為寬度的一半,垂直角半徑設(shè)置為高度的一半。由于這個(gè)塊級元素的寬度和高度不一樣,因此就可以得到一個(gè)橢圓形。
四、利用百分比實(shí)現(xiàn)圓角效果:
W3C規(guī)定,同樣可以使用百分比來實(shí)現(xiàn)塊級元素的圓角效果。這里,百分比值是相對于塊級元素的寬度或高度來作為依據(jù)的。水平角半徑的大小相對于塊級元素的寬度值依據(jù),垂直角半徑的大小相對于塊級元素的高度值依據(jù)。
例7:查看下列CSS代碼。
div{
width: 200px; height: 200px;
border-radius: 20%;
}
上述代碼中,div標(biāo)記的圓角效果中,水平角半徑為寬度的20%,即200px * 20% = 40px。垂直角半徑為高度的20%,也為40px。
例8:查看下列代碼。
div{
width: 200px; height: 100px;
border-radius: 20%;
}
上述代碼中,div標(biāo)記的圓角效果中,水平角半徑為寬度的20%,即200px * 20% = 40px。垂直角半徑為高度的20%,即100px * 20% = 20px。
也就是說,只要border-radius的取值為50%,則當(dāng)寬度和高度相同時(shí),得到一個(gè)正圓形;當(dāng)寬度和高度不相同時(shí),得到一個(gè)橢圓形。
在頭條上發(fā)表的這些文章都是從前端開發(fā)的基礎(chǔ)開始一步一步講起的。我非常希望能有更多的前端開發(fā)初學(xué)者通過我寫的文章,逐步學(xué)到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學(xué)過程中的經(jīng)驗(yàn),每寫一篇時(shí)我都盡量把握好措辭,用簡單易懂的語言描述,同時(shí)精心設(shè)計(jì)版面,讓版面更加豐富,激發(fā)閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費(fèi)小海老師很久的時(shí)間。
希望收藏了這篇文章的你同時(shí)也可以關(guān)注一下“小海前端”的頭條號,因?yàn)檫@些文章都是連載的,并且是經(jīng)過系統(tǒng)的歸納和總結(jié)的。塌下心來認(rèn)真閱讀,你一定會(huì)學(xué)到對你有用的知識。
關(guān)注“小海前端”,我會(huì)繼續(xù)為大家奉上更加深入的前端開發(fā)文章,也希望更多的初學(xué)者跟著學(xué)下去,我們共同將前端開發(fā)的路努力堅(jiān)持的走下去。
在CSS3技術(shù)中,與邊框相關(guān)的還包括一個(gè)名為border-image的屬性,該屬性用于為邊框添加圖片。但是該屬性的派生子屬性較多,實(shí)現(xiàn)原理較為復(fù)雜。下一篇文章中,小海前端(頭條號)帶領(lǐng)小伙伴們認(rèn)識這個(gè)CSS3新增的邊框圖像屬性。
css3之前,并沒有直接的設(shè)置元素圓角的屬性,那如何實(shí)現(xiàn)設(shè)計(jì)圖中的圓角設(shè)定呢?
如:表單demo中的文本框圓角。
一般通過在PS 軟件中截取上左、上右、下左、下右四個(gè)邊角的圓角圖片,通過background-position背景圖屬性設(shè)定位置,從而實(shí)現(xiàn)圓角的設(shè)定。
或是將四個(gè)圓角圖片當(dāng)做四個(gè)img標(biāo)簽,通過position定位屬性找尋設(shè)定的位置,如:
通過圖片設(shè)定圓角
在IE6、7、8還比較盛行的時(shí)候,如果要兼容到IE瀏覽器,需要使用CSS hack兼容IE瀏覽器版本,高級瀏覽器可以直接使用border-radius屬性設(shè)定圓角,對低版本瀏覽器使用圖片定位的方式實(shí)現(xiàn)設(shè)計(jì)圖呈現(xiàn)。但隨著近幾年瀏覽器版本的不斷更新迭代,我們需要做的就是,如果需要兼容低版本瀏覽器,只需保證呈現(xiàn)正常即可,無需過分的追求展示效果與設(shè)計(jì)圖的還原度。但實(shí)現(xiàn)的思想在web布局中是很重要的。
角屬性border-radius屬性,一個(gè)比較簡單但用處很大的一個(gè)重要css3屬性,繪制圓形、圓角矩形 、橢圓形。
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。