日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

新手必看:CSS背景使用攻略

 春夏秋冬jun 2009-09-21

新手必看:CSS背景使用攻略

作者:糖伴西紅柿   類型:編譯   來源:前端觀察

  

原文鏈接:Backgrounds In CSS: Everything You Need To Know (Michael Martin)
譯文鏈接:css 背景全攻略

背景(background)css中一個重要的的部分,也是需要知道的css的基礎(chǔ)知識之一。這篇文章將會涉及css背景(background)的基本用法,包括諸如 background-attachment 等的屬性,也會介紹一些有關(guān)背景(background)的常用技巧,以及 css3 中的 背景(background)(包含4個新的背景(background)屬性)

css2 中的背景(background)

  概述

  CSS2中有5個主要的背景(background)屬性,它們是:

  ·background-color: 指定填充背景的顏色。
  ·background-image: 引用圖片作為背景。
  ·background-position: 指定元素背景圖片的位置。
  ·background-repeat: 決定是否重復(fù)背景圖片。
  ·background-attachment: 決定背景圖是否隨頁面滾動。

  這些屬性可以全部合并為一個縮寫屬性: background。需要注意的一個要點是背景占據(jù)元素的所有內(nèi)容區(qū)域,包括paddingborder,但是不包括元素的margin。它在Firefox, Safari ,Opera以及IE8中工作正常,但是IE6IE7中,background沒把border計算在內(nèi)。


1

  基本屬性

  背景色(background-color)

  background-color屬性用純色來填充背景。有許多方式指定這個顏色,以下方式都得到相同的結(jié)果。

background-color: blue;
background-color: rgb(0, 0, 255);
background-color: #0000ff;

  background-color 也可被設(shè)置為透明(transparent),這會使得其下的元素可見。

  背景圖(background-image)

  background-image屬性允許指定一個圖片展示在背景中??梢院?/span>background-color連用,因此如果圖片不重復(fù)地話,圖片覆蓋不到地地方都會被背景色填充。代碼很簡單,只需要記住,路徑是相對于樣式表的,因此以下的代碼中,圖片和樣式表是在同一個目錄中的。

background-image: url(image.jpg);

  但是如果圖片在一個名為images的子目錄中,就應(yīng)該是:

background-image: url(images/image.jpg);

  糖伴西紅柿注釋:使用 ../ 表示上一級目錄,比如background-image: url(../images/image.jpg); 表示圖片位于樣式表的上級目錄中的images子目錄中。有點繞,不過這個大家應(yīng)該都知道了,我就不詳說了。

  背景平鋪(background-repeat)

  設(shè)置背景圖片時,默認把圖片在水平和垂直方向平鋪以鋪滿整個元素。這也許是你需要的,但是有時會希望圖片只出現(xiàn)一次,或者只在一個方向平鋪。以下為可能的設(shè)置值和結(jié)果:

background-repeat: repeat; /* 默認值,在水平和垂直方向平鋪 */
background-repeat: no-repeat; /* 
不平鋪。圖片只展示一次。 */
background-repeat: repeat-x; /* 
水平方向平鋪(沿 x ) */
background-repeat: repeat-y; /* 
垂直方向平鋪(沿 y ) */
background-repeat: inherit; /* 
繼承父元素的 background-repeat 屬性*/

  背景定位(background-position)

  background-position屬性用來控制背景圖片在元素中的位置。技巧是,實際上指定的是圖片左上角相對于元素左上角的位置。

  下面的例子中,設(shè)置了一個背景圖片并且用background-position屬性來控制它的位置,同時也設(shè)置了background-repeatno-repeat計量單位是像素。第一個數(shù)字表示x (水平)位置,第二個是y (垂直) 位置。

/*  1: 默認值 */
background-position: 0 0; /* 
元素的左上角 */
 
/* 
 2: 把圖片向右移動 */
background-position: 75px 0;
 
/* 
 3: 把圖片向左移動 */
background-position: -75px 0;
 
/* 
 4: 把圖片向下移動 */
background-position: 0 100px;


2

  background-position屬性可以用其它數(shù)值,關(guān)鍵詞和百分比來指定,這比較有用,尤其是在元素尺寸不是用像素設(shè)置時。

  關(guān)鍵詞是不用解釋的。x軸上:

  ·* left
  ·* center
  ·* right

  y 軸上:

  ·* top
  ·* center
  ·* bottom

  順序方面和使用像素值時的順序幾乎一樣,首先是x軸,其次是y軸,像這樣:

background-position: top right;

  使用百分數(shù)時也類似。需要主要的是,使用百分數(shù)時,瀏覽器是以元素的百分比數(shù)值來設(shè)置圖片的位置的??蠢泳秃美斫饬?。假設(shè)設(shè)定如下:

  使用百分數(shù)定位時,其實是將背景圖片的百分比指定的位置和元素的百分比位置對齊。也就是說,百分數(shù)定位是改變了背景圖和元素的對齊基點。不再像使用像素和關(guān)鍵詞定位時,使用背景圖和元素的左上角為對齊基點。例如上例的background-position: 100% 50%; 就是將背景圖片的100%(right) 50%(center)這個點,和元素的100%(right) 50%(center)這個點對齊。

  這再一次說明了,我們一直認為已經(jīng)掌握的簡單的東西,其實還有我們有限的認知之外的知識。

  最終的效果是笑臉圖片被定位在元素的最右邊,離元素頂部是元素的一半,效果和 background-position: right center; 一樣。


3

  背景附著

  background-attachment屬性決定用戶滾動頁面時圖片的狀態(tài)。三個可用屬性為scroll(滾動)fixed(固定) inherit(繼承)。inherit 單純地指定元素繼承他的父元素的background-attachment 屬性。

  為了正確地理解background-attachment,首先需要明白頁面(page)和視口(view port)是如何協(xié)作地。視口(view port)是瀏覽器顯示網(wǎng)頁的部分(就是去掉工具欄的瀏覽器)。視口(view port)的位置固定,不變動。

  當向下滾動網(wǎng)頁時,視口(view port)是不動的,而頁面的內(nèi)容向上滾動??雌饋砻菜埔暱?/span>(view port)向頁面下方滾動了。如果設(shè)置 background-attachment: scroll,就設(shè)置了當元素滾動時,元素背景也必需隨著滾動。簡而言之,背景是緊貼元素的。這是 background-attachment 默認值。

  用一個例子來更清楚地描述下:

background-image: url(test-image.jpg);
 
background-position: 0 0;
background-repeat: no-repeat;
background-attachment: scroll;


4

  當向下滾動頁面時,背景向上滾動直至消失。

  但是當設(shè)置background-attachmentfixed時,當頁面向下滾動時,背景要待在它原來的位置(相對于瀏覽器來說)。也就是不隨元素滾動。

  用另一個例子描述下:

background-image: url(test-image.jpg);
background-position: 0 100%;
background-repeat: no-repeat;
background-attachment: fixed;


5

  頁面已經(jīng)向下滾動了,但是圖像仍然保持可見。

  需要重視的一點是背景圖只能出現(xiàn)在它父元素能達到的區(qū)域。即使圖片是相對于視口(view port)定位地,如果它的父元素不可見,圖片就會消失。參見下面的例子。此例中,圖片位于視口(view port)的左下方,但是只有元素內(nèi)的圖片部分是可見的。

background-image: url(test-image.jpg);
background-position: 0 100%;
background-repeat: no-repeat;
background-attachment: fixed;


6

  因為圖片開始在元素之外,一部分圖片被切除了。

  背景的簡寫屬性

  可以把背景的各個屬性合為一行,而不用每次都單獨把他們寫出來。格式如下:

background: <color> <image> <position> <attachment> <repeat>

  例如,下面的聲明

background-color: transparent;
background-image: url(image.jpg);
background-position: 50% 0 ;
background-attachment: scroll;
background-repeat: repeat-y;

  可以合為單獨一行:

background: transparent url(image.jpg) 50% 0 scroll repeat-y;

  而且不需要指定每一個值。如果省略值地話,就使用屬性地默認值。例如,上面那行和下面這個效果一樣:

background: url(image.jpg) 50% 0 repeat-y;

  背景的一般用法

  除了可以用來使元素更加優(yōu)雅這類顯然的用法之外,背景也可以用于其它的目的。

  仿欄

  當使用cssfloat屬性來定位布局元素時,要確保兩欄或多欄有相同的長度是比較困難的。如果長度不同,其中一欄的背景會比另外的短,這會破壞整個設(shè)計。

  仿欄是個非常簡單的背景技巧,這個技巧最早發(fā)表在A List Apart 。思路很簡單:不再給每列單獨設(shè)置背景,而是給各列的父元素設(shè)置一個背景圖。所有欄的設(shè)計都包含在這張圖片之中。

  文本替換

  在網(wǎng)頁上,對于字體的選擇是相當有限的。可以使用sIFR之類的工具來定制字體,但是這需要用戶啟用JavaScript 。一個適用于任意瀏覽器的簡單方法是,用想用的字體來做一張文本圖片,并用這張圖片作為背景。這樣,文本依然出現(xiàn)在文檔標記中以供搜索引擎檢索和屏幕瀏覽器識別,但是在瀏覽器中就會顯示首選的字體。

  例如,HTML標記可能是這樣的:

<h3>Blogroll</h3>

  假如有一個20075的圖片,上面有更好看的字體,就可以用如下方式來替換文本:

h3.blogroll {
width: 200px;
height: 75px; /* So that the element will show the whole image. */
background:url(blogroll-text.jpg) 0 0 no-repeat; /* Sets the background image */
text-indent: -9999px; /* Hides the regular text by moving it 9999 pixels to the left */
}

  簡單的圓點

  無需列表中的圓點看起來很難看。不用再處理所有不同的list-style 屬性,只需要簡單地把他們隱藏并用背景圖代替就可以了。因為圖片可以隨意選擇,這些圓點就可以看起來更漂亮。

  下面,我們把一個無需列表改造成有圓滑圓點的:

ul {
list-style: none; /* Removes default bullets. */
}
 
ul li {
padding-left: 40px; /* Indents list items, leaving room for background image on the left. */
background: url(bulletpoint.jpg) 0 0 no-repeat;
}

CSS3 中的背景

  CSS3中的背景有較多改進。最顯著的是多背景圖片的選項,同時也增加了4個新屬性。

  多背景

  CSS3中,可以對一個元素應(yīng)用一個或多個圖片作為背景。代碼和css2中的一樣,只需要用逗號來區(qū)別各個圖片。第一個聲明的圖片定位在元素頂部,其它的圖片按序在其下排列,例如:

background-image: url(top-image.jpg), url(middle-image.jpg), url(bottom-image.jpg);

  新屬性:背景修剪(background-clip)

  這又把我們帶回了文章開始討論的那個關(guān)于邊框內(nèi)圖片顯示的話題。它被描述為背景描繪區(qū)。

  background-clip屬性用來增強背景顯示位置的控制能力。可能的值為:

  ·background-clip: border-box;
  背景顯示在邊框內(nèi)。

  ·background-clip: padding-box;
  背景顯示在內(nèi)補白(padding)內(nèi),而不是邊框內(nèi)。

  ·background-clip: content-box;
  只在內(nèi)容內(nèi)顯示背景,而不是內(nèi)補白(padding)和邊框內(nèi)。

  ·background-clip: no-clip;
  默認值,和 border-box 一樣。

  新屬性:背景原點(background-origin)

  這個屬性和 background-position 結(jié)合起來使用??梢詮倪吙?,內(nèi)補白或者內(nèi)容盒子開始計算 background-position (類似于 background-clip)。

  ·background-origin: border-box;
  以邊框為原點開始計算 background-position.

  ·background-origin: padding-box;
  以內(nèi)補白為原點開始計算 background-position

  ·background-origin: content-box;
  以內(nèi)容盒子為原點開始計算 background-position

  對于 background-clip background-origin 不同的一個解釋參看 CSS3.info

  新屬性:背景尺寸(background-size)

  background-size用來調(diào)整背景圖的大小。有好幾個可能值:

  ·background-size: contain;
  縮小圖片來適應(yīng)元素的尺寸(保持像素的長寬比)

  ·background-size: cover;
  擴展圖片來填滿元素(保持像素的長寬比)

  ·background-size: 100px 100px;
  調(diào)整圖片到指定大小

  ·background-size: 50% 100%;
  調(diào)整圖片到指定大小。百分比是相對于包含元素的尺寸的。

  可以看一下CSS3規(guī)則網(wǎng)站上的幾個例子。

  新屬性:(background-break)

  CSS3 中,元素可以被分成幾個獨立的盒子(例如 使內(nèi)聯(lián)元素 span 跨越多行)background-break屬性用來控制背景怎樣在這些不同的盒子中顯示。

  可能值為:

  ·Background-break: continuous;
  默認值。忽略盒之間的距離(也就是像元素沒有分成多個盒子,依然是一個整體一樣)

  ·Background-break: bounding-box;
  把盒之間的距離計算在內(nèi)

  ·Background-break: each-box;
  為每個盒子單獨重繪背景

  背景色(background-color)的改進

  background-colorcss3中有了稍許改進。除了設(shè)置背景顏色之外,如果元素底層的背景圖不可用,還可以設(shè)置一個回退色。

  通過在回退色之前增加一個斜杠(/)來實現(xiàn),例如:

background-color: green / blue;

  此例中,背景色應(yīng)該是綠色(green)。然而,如果底層背景圖不能使用的話,背景色就是藍色而不是綠色。如果在斜杠前不指定顏色,默認為透明(transparent)。

  背景平鋪(background-repeat)的改進

  CSS2中當圖片平鋪時,會被元素在末端截斷。CSS3引入了兩個屬性來修正這個問題:

  ·space: 應(yīng)用同等數(shù)量的空白到圖片之間,直到填滿整個元素
  ·round: 縮小圖片直到正好平鋪滿元素

  關(guān)于background-repeat: space; 的一個例子,可以在CSS3規(guī)則網(wǎng)站看到。

  背景附著(background-attachment)的改進

  background-attachment屬性增加了一個新值:local。這是用來配合可以滾動的元素的(設(shè)置為 overflow: scroll; 的元素)。當 background-attachment 設(shè)置為滾動(scroll)時,背景圖不會隨元素內(nèi)容的滾動而滾動。

  設(shè)置為background-attachment :local; 時,背景圖會隨內(nèi)容的滾動而滾動。

  總結(jié)

  總結(jié)一下,css中關(guān)于背景有許多需要知道的知識。但是一旦把這些知識融會貫通了,這些技術(shù)和命名約定就變得非常有意義而且很快就會成為潛意識行為了。

  如果剛接觸css,主要不斷聯(lián)系就可以較快地掌握背景的要點了。如果是老手,我希望你可以和我一樣期待css3 。

  關(guān)于作者

  Michael Martin 的文章大多涉及網(wǎng)頁設(shè)計,WordPres Pro Blog Design 工作??梢圆榭锤嚓P(guān)于博客設(shè)計的文章或者在 twitter 上關(guān)注他。

  糖伴西紅柿:一看到這么長篇大論的也頭暈,花了好幾天的時間折騰這篇文章。全是基礎(chǔ)的只是,沒有什么花哨的,但是我覺得最基礎(chǔ)的也是最重要的。

  鑒于好多網(wǎng)站都會轉(zhuǎn)載別人的文章,當然了,好的文章我們也會轉(zhuǎn)載,不過有些人直接把別人辛辛苦苦的勞動付出拿來當自己的東西。

  這些人真的很無恥,這個大環(huán)境也真的很悲哀,沒人愿意踏踏實實地做事。這就是為什么我們總是翻譯國外的文章,而不是把咱們的文章翻譯成外語讓外國人看的根本所在。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多