利用CSS3實現(xiàn)圓角的outline效果的示例分析

利用CSS3實現(xiàn)圓角的outline效果的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

為荔波等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及荔波網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計、荔波網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

一、首先,outline是個很牛的東西
1. border近親
outline和border是近親,為什么這么講呢?首先,都是給元素外面套框框的;其次,支持的屬性值幾乎都是一樣的,例如,outline-style和border-style值dotted, dashed, solid, ...之類的,一些語法也幾乎一樣。如果這都不算近親,你讓絕對定位和浮動何言以對。

2. IE8+支持
outline嚴格來講屬于CSS3屬性,但是IE8+瀏覽器就支持了。外掛一句,IE9+瀏覽器的outline還支持invert,專門針對outline-color. 所以,如果你的項目不用管IE6/IE7瀏覽器,可以把outline掛在心中,有時候說不定會幫忙。

3. 不占據(jù)空間
默認的盒模型下,假設(shè)元素100*100像素,我們給元素設(shè)置border:10px solid,則實際該元素占據(jù)的尺寸至少就是120*120像素,元素的偏移、布局啊什么的,就需要多多思量。但是,outline不一樣,你哪怕outline:100px solid,元素占據(jù)的尺寸還是100*100像素。這種行為表現(xiàn),與transform以及box-shadow等CSS3屬性很類似,雖然外形豐滿了,但是,占據(jù)的真實空間沒有影響。于是,我們在實現(xiàn)一些交互效果的時候,例如hover變化,我們就可以專注于效果本身,而不用被布局所左右,是很棒的體驗。

4. 直角!圓角?
正好承上啟下一下。
二、outline的直角與圓角

一排60*60像素的直角圖片,選中的圖片外框2像素帶圓角高亮。瀏覽器兼容要求,IE9+以及其他現(xiàn)代瀏覽器。

一般而言,我們的第一反應是使用border + border-radius。但是,有個問題,就是,這里的外部高亮邊框效果是外擴的,要知道,border是會增加元素的尺寸的,于是,為了我們的完美對齊效果,還需要對選中元素做重定位,上下左右的margin值都需要改變。我丟,想想就煩!

像這種UI表現(xiàn),天生就是outline干的事情。于是,我們大手一揮:

CSS Code

  1. outline: 2px solid #26C2A7;   

親愛的朋友,千萬不要妄圖通過border-radius來改變outline的圓角,要知道,outline跟border是近親,穿一個開襠褲長大的。但是,媳婦可不能共享哈!border-radius和border是登記在案的光明夫妻,看,連姓氏都隨了夫君了,人家只認border, 你outline沒戲,找自己的媳婦止渴去。

但是,outline貌似是個單身狗,沒有媳婦啊,難道outline注定一輩子直角,掰不彎了?
三、outline的圓角效果

茫茫CSS海,乍一看去,貌似沒有能讓outline圓角的東西。注意措辭,“貌似”,我們?nèi)绻须p犀利的眼睛,還是會發(fā)現(xiàn)某處藏可以讓outline圓角的東西。

在FireFox瀏覽器中,就有和outline匹對的圓角夫妻outline-radius,

其關(guān)系,就和border和border-radius的關(guān)系一樣。

由于目前還只是FireFox瀏覽器私有的屬性,因此,目前的使用需要加-moz-前綴,也就是-moz-outline-radius.

相關(guān)CSS代碼如下:

CSS Code

img {   
outline: 30px solid #cd0000;    
-moz-outline-radius: 30px;   
}

 

是不是很松松啊!如果你觀察足夠仔細,會發(fā)現(xiàn),outline-radius和border-radius還是有區(qū)別的?看出來沒,區(qū)別在哪里?答對有獎……哈,沒錯,你們都答錯了!沒有任何區(qū)別,outline-radius的圓角規(guī)則、語法之類跟border-radius就是一樣的。

唯一的區(qū)別,也就是兼容性問題,不是看出來的,是試出來的。告訴大家一個不幸的消息,目前,除了FireFox瀏覽器支持outline-radius,其他瀏覽器都是空大屁!

如果是僅webkit/blink瀏覽器支持還好說,至少移動端還可以用用,搞了個僅僅FireFox支持,玩毛線啊!不對,連毛線都沒得玩!

親,不要絕望啊,車到山前必有路,此路進去……
四、box-shadow模擬outline的圓角效果

outline-radius雖然沒戲了,但是,我們可以使用其他屬性,可以實現(xiàn)類似的效果,比方說,圖形構(gòu)建大神之一的box-shadow.

我們平時使用box-shadow最多的是前面3個參數(shù),水平/垂直偏移以及模糊大小,可能有一些小伙伴并不清楚其第4個可選參數(shù)值究竟有何用?box-shadow第4個參數(shù)值,名外擴展,可以把投影范圍擴大,當然,擴大的區(qū)域是實色區(qū)域。我們就可以利用這一特性,模擬實現(xiàn)不影響元素占據(jù)尺寸的outline實色邊框效果啦!

實例先行,您可以狠狠地點擊這里:CSS3 box-shadow模擬outline radius圓角Demo

CSS代碼如下: 

  1. img {   
        border-radius: 1px;   
        box-shadow: 0 0 0 30px #cd0000;   
    }

CSS3用的多的小伙伴應該知道,box-shadow的投影形狀與border-radius一脈相承,也就是border-radius是圓角的,box-shadow的投影也是圓弧形的。

下面簡單解釋下兩行CSS代碼的含義:

  •     border-radius: 1px表示圓角大小1像素。有同學可能奇怪了,怎么是1像素啊,截圖圓角明明好幾十像素,下面正好就解釋了;
        box-shadow: 0 0 0 30px #cd0000出現(xiàn)了4個數(shù)值,分別是水平偏移0, 垂直偏移0,模糊0(純色), 擴展大小30像素。我們可以想象成,光線直接從盒子的正上方照下來,因為沒有偏移沒有模糊,我們看不到任何陰影。實際上,盒子的陰影正好就是盒子的大小(外帶1像素圓角),此時,擴展30像素,我們可以腦補一下,1像素圓角的陰影再擴展30像素。喲,不就是我們需要的效果嘛,不就是截圖展示的效果嘛!

    知道border-radius 1像素的左右了吧,擴展30像素后,圓角就是30像素大小了。

然而,雖然肉眼看不出來,上面的方法實際有瑕疵,因為圖片不是純正的直角,有1像素的圓角。如果你想實現(xiàn)完美的內(nèi)方外圓的效果,可以套一層標簽,外面的標簽使用border-radius和box-shadow就可以了。

css的三種引入方式

1.行內(nèi)樣式,最直接最簡單的一種,直接對HTML標簽使用style=""。2.內(nèi)嵌樣式,就是將CSS代碼寫在之間,并且用

進行聲明。3.外部樣式,其中鏈接樣式是使用頻率最高,最實用的樣式,只需要在之間加上

就可以了。其次就是導入樣式,導入樣式和鏈接樣式比較相似,采用@import樣式導入CSS樣式表,不建議使用。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站題目:利用CSS3實現(xiàn)圓角的outline效果的示例分析
標題鏈接:http://muchs.cn/article28/jopcjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)電子商務(wù)、營銷型網(wǎng)站建設(shè)、外貿(mào)建站、軟件開發(fā)定制開發(fā)

廣告

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

商城網(wǎng)站建設(shè)