極致CSS(9)-背景和邊框

首先我們還是從邊框開始, 邊框的概念還是很好理解的, 就是盒子的邊. 但是涉及到三個(gè)屬性, 除了border-width之外, 還有border-color和border-style. 加上下左右四個(gè)方向的組合. border-width的默認(rèn)值是medium, 也就是3px, 但是border-style 默認(rèn)值是 none, 所以元素默認(rèn)不會(huì)顯示邊框. 實(shí)際場(chǎng)景中我們多數(shù)是使用實(shí)線純色邊框, 并且多數(shù)時(shí)候都會(huì)使用簡(jiǎn)寫同時(shí)設(shè)置三個(gè)屬性, 類似border: 2px solid #F1F1F1, 先后順序其實(shí)是沒有限制的, 但是出于規(guī)范和習(xí)慣, 一般都是按width style color的順序書寫. border-color的默認(rèn)值是currentcolor, 也就是取元素color屬性的值, 和元素字體的顏色一樣, 也可以設(shè)置為transparent透明邊框.

border的理解和使用一般還是挺簡(jiǎn)單的, 設(shè)計(jì)師一般也不會(huì)制作過于復(fù)雜的邊框, 照著設(shè)計(jì)定好的寬度和色值書寫即可. 需要注意的是首先, border會(huì)影響到width屬性的計(jì)算規(guī)則, 由于box-sizing的默認(rèn)值是content-box, 也就是border的寬度會(huì)加在width和height的外面, 使得元素視覺尺寸變大. 此時(shí)為了方便可以直接設(shè)置box-sizing: border-box, 避免手工計(jì)算尺寸. 另外, border-width不支持百分比值.

其他幾種border-style可以用于繪制圖形. 比如border-style: dashed可以繪制虛線. border-style: dotted可以繪制一系列方點(diǎn)或圓點(diǎn)(根據(jù)瀏覽器不同). 不過更復(fù)雜的圖形現(xiàn)在通常都是用圖片或svg實(shí)現(xiàn). 所以我們也不過度關(guān)注了.

邊框圓角的需求在設(shè)計(jì)稿中也是經(jīng)常見到, 通過border-radius屬性實(shí)現(xiàn), 也可以單獨(dú)設(shè)置四個(gè)角的圓角半徑, 如果設(shè)置的半徑超過了元素尺寸的50%, 元素將表現(xiàn)為圓形. 另外有一個(gè)細(xì)節(jié), 圓角是繪制在邊框的外邊緣上, 內(nèi)部是沒有圓角效果的.

CSS3也增加了border-image屬性, 可以在邊框上繪制圖形, 由于邊框的使用主要是出于裝飾, 邊框圖形也主要是為了更多美化界面, 如果涉及到需要復(fù)雜裝飾的場(chǎng)景, 可以考慮使用, 現(xiàn)在的兼容性應(yīng)該也可以接受了, 不過我也還沒有實(shí)際使用過, 以后有用到再補(bǔ)充吧.

邊框還有一些應(yīng)用是繪制三角形等簡(jiǎn)單圖形, 主要是利用邊框的折角和顏色, 視覺上拼出所需要的圖形, 有時(shí)會(huì)遇到, 不過現(xiàn)在也有了transform或者linear-gradient等其他實(shí)現(xiàn)方式, 如果遇到這種場(chǎng)景, 可以比較一下, 選擇最簡(jiǎn)單的方式.

然后我們看一下padding. 一般介紹盒模型時(shí)會(huì)把margin和padding對(duì)照, 稱為內(nèi)邊距, 不過我感覺, padding和border的關(guān)系更近, 可以理解為內(nèi)邊框. padding出現(xiàn)在邊框之內(nèi), content之外, 默認(rèn)值是0, 只可以設(shè)置寬度也就是長(zhǎng)度值, 沒有style和color的設(shè)置, 而且寬度的百分比全都是相對(duì)于包含塊的寬度計(jì)算. padding本身也不復(fù)雜, 同樣是由于box-sizing的問題, 需要注意對(duì)寬度計(jì)算的影響. 為了簡(jiǎn)單, 我的一般原則是不用padding, 如果偶爾用到, 記得考慮box-sizing.

背景

之后我們看background, 如果說定位會(huì)在頁(yè)面之上創(chuàng)建層, background就是在頁(yè)面之下創(chuàng)建層. 最基礎(chǔ)的是background-color設(shè)置背景色, 默認(rèn)是transparent, 透明背景, 也可以設(shè)置background-image, 背景圖片, 同時(shí)設(shè)置的話, 圖片會(huì)顯示在背景顏色之上. CSS3之后, 背景圖片可以設(shè)置多個(gè), 用逗號(hào)隔開, 但是背景色依然只有一個(gè), 要實(shí)現(xiàn)多個(gè)背景色, 可以使用gradient, 但是gradient的類型是image, 所以也要通過background-image來設(shè)置.

由于在頁(yè)面上顯示圖片是一種常見的需求, 使用img標(biāo)簽顯示圖片需要更改html, 所以background-image就成為在CSS中設(shè)置圖片的主要方式.(偽元素也可以用來顯示圖片, 但是樣式不好控制, 基本不會(huì)用到) background的大部分屬性都是在設(shè)置圖片的顯示方式. 首先是圖片的位置和大小, 由background-position和background-size確定, background-position的默認(rèn)值是0, 也就是從左上角開始擺放, background-size默認(rèn)是auto, 按圖片原始尺寸顯示. 當(dāng)然由于是背景圖片, 不可能超過所在元素的范圍顯示, 所以有一個(gè)屬性background-clip可以設(shè)置背景顯示的范圍, 默認(rèn)是border-box, 也就是背景不超過邊框的外邊界. 也可以設(shè)置為padding-box或content-box, 比較好理解. 但是還有一個(gè)background-origin屬性, 規(guī)定了背景計(jì)算參照的起始位置, 取值也是這三個(gè)box, 默認(rèn)是padding-box, 其實(shí)他們都是為了確定圖片顯示的計(jì)算方式, 實(shí)際效果一試便知, 而且用到的機(jī)會(huì)也不是很多, 除非有復(fù)雜的背景定位需求.

還有兩個(gè)background屬性, background-repeat和background-attachment, 是網(wǎng)頁(yè)技術(shù)早期保留下來的, 現(xiàn)代基本很少會(huì)用到. 特別是background-repeat默認(rèn)是repeat非常心煩, 基本每次都需要重置, 屬性名又長(zhǎng), 所以我在全局設(shè)置了background-repeat: no-repeat; background-size: 100%; background-position: center;, 因?yàn)榇蟛糠謺r(shí)候, 背景圖片都是和元素等尺寸居中顯示的.

裝飾

如果把padding理解為內(nèi)邊框, 那么outline就可以理解為外邊框. outline的語(yǔ)法和border類似, 但是不能單獨(dú)設(shè)置每條邊的樣式, 另外, outline不能表現(xiàn)出元素的圓角, 由于繪制在margin區(qū)域, 也不能用于擴(kuò)大點(diǎn)擊區(qū)域, 但是其不影響布局的特性, 使得他用來繪制蒙層比較合適, 尤其是需要鏤空效果的蒙層, 可以通過設(shè)置一個(gè)寬度很大的outline實(shí)現(xiàn). 但是現(xiàn)在outline還沒法跟隨元素的圓角, 所以在圓角元素上需要用box-shadow制作鏤空蒙層. CSS3增加了一個(gè)outline-offset屬性, 可以改變outline繪制的位置, 如果遇到復(fù)雜的多重邊框, 可以嘗試用一下.

然后我們就說到了box-shadow. 從本意上來說, 這個(gè)屬性的作用是給元素添加陰影, 但是這個(gè)屬性設(shè)計(jì)的非常強(qiáng)大, 甚至可以生成任意圖形, 例如shadow-image. 由于語(yǔ)法太多, 實(shí)際應(yīng)用少, 我們就不過多介紹了, 可以查閱MDN文檔, 也有相應(yīng)的可視化生成工具生成box-shadow代碼. 我們上面說到的用box-shadow生成鏤空蒙層, 用到的是其中一種比較完整的寫法box-shadow: 0 0 0 100vh rgba(0,0,0,.7);, box-shadow生成的陰影會(huì)跟隨元素的圓角效果, 但是如果陰影尺寸過大, 陰影外邊緣的圓角半徑可能和元素自身的圓角半徑相差較大, 如果要實(shí)現(xiàn)內(nèi)外同等半徑的投影, 還是需要嵌套多級(jí)元素分別設(shè)置圓角.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柄瑰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赔硫,老刑警劉巖母廷,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荆烈,死亡現(xiàn)場(chǎng)離奇詭異氯迂,居然都是意外死亡贼涩,警方通過查閱死者的電腦和手機(jī)茅逮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門璃赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人献雅,你說我怎么就攤上這事碉考。” “怎么了惩琉?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵豆励,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我瞒渠,道長(zhǎng)良蒸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任伍玖,我火速辦了婚禮嫩痰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窍箍。我一直安慰自己串纺,他們只是感情好丽旅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纺棺,像睡著了一般榄笙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祷蝌,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天茅撞,我揣著相機(jī)與錄音,去河邊找鬼巨朦。 笑死米丘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糊啡。 我是一名探鬼主播拄查,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼棚蓄!你這毒婦竟也來了堕扶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤癣疟,失蹤者是張志新(化名)和其女友劉穎挣柬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睛挚,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邪蛔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扎狱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侧到。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淤击,靈堂內(nèi)的尸體忽然破棺而出匠抗,到底是詐尸還是另有隱情,我是刑警寧澤污抬,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布汞贸,位于F島的核電站,受9級(jí)特大地震影響印机,放射性物質(zhì)發(fā)生泄漏矢腻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一射赛、第九天 我趴在偏房一處隱蔽的房頂上張望多柑。 院中可真熱鬧,春花似錦楣责、人聲如沸竣灌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)初嘹。三九已至及汉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間削樊,已是汗流浹背豁生。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工兔毒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漫贞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓育叁,卻偏偏與公主長(zhǎng)得像迅脐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子豪嗽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第2章:背景與邊框 1.半透明邊框 背景知識(shí):RGBA/HSLA顏色-給一個(gè)容器設(shè)置白色背景和一道半透明白色邊框谴蔑,...
    普通不平庸閱讀 826評(píng)論 0 1
  • 所有圖都在body背景設(shè)置為green下的截圖,請(qǐng)不要把最外層的綠色當(dāng)成邊框 半透明邊框 如果我們想給一個(gè)容器設(shè)置...
    hcxowe閱讀 3,940評(píng)論 0 6
  • 工具函數(shù) 如果我們想要檢測(cè)某個(gè)具體的屬性值是否支持龟梦,那就需要把它賦給對(duì)應(yīng)的屬性隐锭,然后再檢查瀏覽器是不是還保存著這個(gè)...
    Eastboat閱讀 430評(píng)論 0 0
  • 半透明邊框 RGBA/HSLA顏色H:Hue(色調(diào))。0(或360)表示紅色计贰,120表示綠色钦睡,240表示藍(lán)色,也可...
    牛牛_lz閱讀 394評(píng)論 0 1
  • 最近在閱讀CSS Secrets這本書躁倒,發(fā)現(xiàn)作者講解了很多容易被忽略的CSS小技巧荞怒,感受到作者在寫代碼的過程中,不...
    hershin閱讀 473評(píng)論 0 0