--- > css3-邊框

border

css3在很大程度上拓展了border的樣式,讓我們可以做出更加豐富的效果

border-radius

border-radius屬性是向元素添加圓角邊框。

使用方法
border-radius:10px; /* 所有角都使用半徑為10px的圓角 */ 
border-radius: 5px 4px 3px 2px; /* 四個半徑值分別是左上角、右上角、右下角和左下角,順時針 */ 

方法: 把高度(height)和寬度(width)設為相等,并且設置圓角半徑(border-radius)的值與高度(height)的值一致.

div{
    height:100px;
    width:100px;/*與height相等*/
    background:#9da;
    border-radius:50px;/*半徑至少設置為height的值*/
}
實心上半圓

方法: 把高度(height)設為寬度(width)的一半,并且只設置左上角和右上角的半徑與元素的高度一致.

div{
    height:50px;/*是width的一半*/
    width:100px;
    background:#9da;
    border-radius:50px 50px 0 0;/*半徑至少設置為height的值*/
}
課堂任務
  • 實現實心左半圓形, 實心左右圓形, 實心下半圓形
  • 實現1/4半圓

box-shadow

box-shadow是向盒子添加陰影。支持添加一個或者多個。

box-shadow:inset x-offset y-offset blur-radius spread-radius color

box-shadow屬性至多有6個參數設置

  • inset: 陰影類型, 可選參數, 如果不設值,其默認的投影方式是外陰影;如果取其唯一值inset,就是將外陰影變成內陰影
  • x-offset: 陰影水平偏移量, 如果為正值, 陰影向左偏移, 如果為負值, 陰影向右偏移
  • y-offset: 陰影垂直偏移量, 如果為正值, 陰影向下偏移, 如果為負值,陰影向上偏移
  • blur-radius: 模糊半徑, 可選參數, 只能為正值, 數值越大, 模糊效果越明顯
  • spread-radius: 擴展半徑, 可選參數, 如果值為正,則整個陰影都延展擴大,反之值為負值是,則縮小
  • color: 陰影顏色

box-shadow測試

關于偏移量

這張圖可以幫助我們記憶偏移量的規則(同樣適用于絕對定位, 元素的移動(translate)等跟位置相關的場景), 我們可以在想象一個坐標軸, 以x-offset為例, 當x-offset為正值的時候, 相當于原點向左移動了, 為負數的時候, 相當與原點向右移動了, y-offset也是同樣的道理

內陰影
div{
    height:100px;
    width:100px;
    border: 1px solid #111;
    box-shadow: inset 0px 0px 20px red;
}
外陰影
div{
    height:100px;
    width:100px;
    border: 1px solid #111;
    box-shadow:  0px 0px 20px red;
}
單邊陰影

方法: 先設置模糊半徑, 設置擴展半徑為負數, 縮小陰影大小, 直到看不到陰影, 然后將陰影向上移動.

div{
    margin: 30px;
    width: 200px;
    height: 100px;
    border: 1px solid #ccc;
    box-shadow: 0px -4px 5px -3px red;
}

展示效果:
<p data-height="500" data-theme-id="dark" data-slug-hash="vGzERB" data-default-tab="result" data-user="lulupy" data-embed-version="2" class="codepen">See the Pen <a >vGzERB</a> by lulu (<a >@lulupy</a>) on <a >CodePen</a>.</p>
<script async src="http://assets.codepen.io/assets/embed/ei.js"></script>

多重陰影
div{
    width: 200px;
    height: 100px;
    border: 1px solid #ccc;
    margin: 30px;
    box-shadow: 0 0 0 1px red, 
                0 0 0 5px blue, 
                0 0 0 8px green, 
                0 0 0 12px yellow, 
                0 0 0 16px orange, 
                0 0 0 20px #06c,
                0 0 5px 24px lime;/*每個陰影用逗號隔開, 最先定義的顯示在最上面*/
}
綜合應用-3d搜索框

<p data-height="266" data-theme-id="dark" data-slug-hash="PNdwVG" data-default-tab="result" data-user="lulupy" data-embed-version="2" class="codepen">See the Pen <a >PNdwVG</a> by lulu (<a >@lulupy</a>) on <a >CodePen</a>.</p>
<script async src="http://assets.codepen.io/assets/embed/ei.js"></script>

border-image

屬性用來給元素邊框添加背景圖片; 瀏覽器應用了 border-image 則不再應用 border-style.

border-image是由以下幾個屬性組成的:

  • border-image-source: none (默認值)
  • border-image-slice: 100% (默認值)
  • border-image-width: 1 (默認值)
  • border-image-repeat: stretch (默認值)

border-image-source(圖片地址)

    border-image-source: url(xx.png);

border-image-slice (圖片裁剪)

border-image-slice: [<number> | <percentage>]{1,4} && fill?

取值為長度或百分比(相對于圖片) 分別設置四個變, 簡寫遵循上右下左原則

fill
顯示中間的圖片

border-image-width (圖片邊框大小)

簡寫遵循上右下左原則

取值:

<length>

表示邊框寬度. 可以是絕對長度或相對長度. 不能使用負值。

<percentage>

按照元素的百分比(%)表示邊框寬度. 不能使用負值.

<number>

根據元素 border-width 屬性,用倍數表示邊框寬度. 不能使用負值

border-image-repeat (圖片的排列方式)

或為單個值,設置所有的邊框;或為兩個值,分別設置水平與垂直的邊框。

可選值:

  • stretch 拉伸圖片以填充邊框
  • repeat 平鋪圖片以填充邊框(從中間向兩邊平鋪,超出部分裁剪)
  • round 類似于repeat,不過是整數次平鋪(不會裁剪,而是適當的拉伸圖片)

border-image繪制原理簡述:

共存在兩個九宮格,一個是邊框圖片,還有一個就是邊框本身,九個方位關系一一對應。邊框本身的特性讓其變成了一個九宮格,四條邊框交錯,加上其圍住的區域,正好形成一個九宮格。邊框圖片則是通過圖片剪裁實現了九宮格。這是理解繪制原理的基礎。

  1. 調用邊框圖片
    border-image的url屬性,通過相對或絕對路徑鏈接圖片。

  2. 邊框圖片的剪裁
    border-image的數值參數剪裁邊框圖片,形成九宮格。

  3. 剪裁圖片填充邊框
    邊框圖片被切割成9部分,以一一對應的關系放到div邊框的九宮格中,然后再壓縮(或拉伸)至(border-image-width)的寬度大小。

  4. 執行重復屬性
    被填充至邊框九宮格四個角落的的邊框圖片是不執行重復屬性的。上下的九宮格執行水平方向的重復屬性(拉伸或平鋪),左右的格子執行垂直方向的重復屬性,而中間的那個格子則水平重復和垂直方向的重復都要執行。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • border-radius 定義: border-radius屬性是一個簡寫屬性,用于設置四個border-*-r...
    lx_smile閱讀 540評論 2 3
  • 3.5 CSS3盒子陰影屬性 box-shadow用來定義元素的盒子陰影。 3.5.1 box-shadow屬性的...
    白小蟲閱讀 322評論 0 0
  • 1、屬性選擇器:id選擇器 # 通過id 來選擇類名選擇器 . 通過類名來選擇屬性選擇器 ...
    Yuann閱讀 1,655評論 0 7
  • border-radius 設置邊框圓角 border-image 用圖片作為邊框的修飾 box-shadow 邊...
    蓋被吹空調閱讀 242評論 0 1
  • 3.3 CSS3圖片邊框屬性 border-image效果在CSS2中,只有使用背景圖片來制作,而且制作過程非常復...
    白小蟲閱讀 229評論 0 0