CSS基礎知識解析?

自W3C(The World Wide Web Consortium)制定了代號為Cougar的HTML的4.0版本以來,存在在Web頁面中的動態效果首次被正式的承認了,W3C把動態超文字(Dynamic HTML)的實現分為了三個部分:指令碼、支援動態效果的瀏覽器和CSS。前兩者也許你經常用到,但CSS是什麼或許你並不清楚,如果有過製作Web頁面的經歷,你可能聽說過樣式單或風格單,如果對此你亦無耳聞,不要緊,只要你想製作出具有更多新特性的Web頁,本文將同樣適合於你。(請使用IE4或IE5對CSS手冊中的屬性例項進行驗證)

一、什麼是CSS?

CSS是Cascading Style Sheet的縮寫,有些書上把它譯為"層疊樣式單"或"級聯樣式單"(下文簡稱"樣式單"),在1997年W3C頒佈HTML4標準的同時也公佈了有關樣式單的第一個標準CSS1。樣式單是對以前的HTML(3.2以前的HTML版本)語法的一次重大革新,以前的HTML版本中,各種功能的實現是通過標記元素實現的,這也造成了各個瀏覽器廠商為了標新立意建立各種只有自家支援的標記,各種標記互相巢狀,就可以達到不同的效果,比如要在一段文字中把一部分文字變成紅色,HTML3.2中應該是這樣的:

這裡顯示紅色字

而在樣式單中,把某些標記(如上例中的"font"標記)屬性化,利用樣式單,上例可以變成:

這裡顯示紅色字

這就是樣式單的全部功能嗎?遠遠不是!前面說過樣式單是DHTML的一部分,建立樣式單的真正意義在於把物件真正引入了HTML,使得可以使用指令碼程式(如Javascript、VBScript)呼叫物件屬性,並且可以改變物件屬性,達到動態的目的,這在以前的HTML中是無法實現的,如果你使用過如VB等面向物件的程式設計工具,你會更快的發現,用樣式單做DHTML是多麼容易。樣式單的另一項貢獻是簡化了HTML中各種繁瑣的標記,使得各個標記的屬性更具有一般性和通用性,並且樣式單擴充套件了原先的標記功能,能夠實現更多的效果,樣式單甚至超越了Web頁面的本身顯示功能,而把樣式擴充套件到多種媒體上,顯示了難以抗拒的魅力。

樣式單自從CSS1的版本之後,又在1998年5月釋出了CSS2版本,樣式單得到了更多的充實。Internet Explorer4和Netscape Navigator4都宣傳支援樣式單,但從各方面來看IE4的效果都要超過NE4,這是因為IE4和NE4的Javascript文件模型(DOM)不同而造成的,從表面看,二者的模型區別不大,但實質上卻是大相徑庭,IE4的模型能夠更加容易的把動態效果引入Web頁面,雖然現在IE4的模型只有微軟自己支援,但它卻已被清楚的寫入了W3C的DHTML標準;而NE4的樣式單並不能通過指令碼呼叫物件的屬性,說的不好聽一點,它的樣式單只是徒有其表罷了。(Netscape公司自己開發了一種樣式單稱作JSSS,它利用Javascript來定義樣式,但是並沒有得到W3C的承認。)

二、進一步瞭解樣式單

Cascading Style Sheet中的Cascading是"層疊"的意思,也就是說在同一個Web文件中可以有多個樣式單存在,這些樣式單根據所在的位置,擁有不同的優先順序,優先順序越高,就會被最後在顯示時採用。從樣式單插入的形式來看可以分為三種:

•內聯式樣式單:它利於現有的HTML標記,把特殊的樣式加入到那些由標記控制的資訊中,比如剛才的例子。

•嵌入式樣式單:它和Javascript一樣可以嵌入到HTML檔案的頭部中去(和標記之間),使用容器裝載,例如:"",這樣會對頁面中所有

標記都起作用。

•外部式樣式單:是一種保

101平臺線上http://101zaixian.net/

101娛樂平臺線上

存在外部的樣式單檔案,外部檔案以.CSS為副檔名,例如" "。

在應用時可以根據需要隨意運用以上三種方式,但在實際中內聯式樣式單和嵌入式樣式單使用得更多一些。

三、樣式單的語法特徵

樣式單有自己獨特的書寫方法,掌握了它的語法特徵,再瞭解它的各種屬性,那麼你會發現在Web頁面中運用樣式單會是多麼輕鬆。例如有一個最簡單的HTML文件:

Text goes here…

我們可以用嵌入式樣式單規定樣式。

這裡顯示紅色字

可以看到,在這個文件裡,多了"Style"標記,之間用

利用ClassID顯示內容。

其中.someclass代表類,#someID代表ID。類和ID也可以和元素標記合用,比如:

p.bigFont {……}

則表示必須在某個為bigFont類的P標記(

)才執行樣式單,同樣的也適合於ID。為了簡化宣告某些重複屬性的標記,可以用","把不同的選擇器隔開,表示它們都表示成相同的屬性,如:

H1,H2 Div, p.mytext {……}

有時我們還希望能夠在特定的範圍內使樣式單生效:

p em

元素標記間又空格隔開,表示在

間的 用紅色表示。另外還可以利用"~"表示一個選擇器後面緊跟另一個選擇器,並且兩邊以"/"圍住:

/ Selector1 ~ Selector2/ {……}

表示如果Selector2緊跟著Selector1則使用該樣式單。

2、屬性值的單位

在樣式單中,屬性的單位多為長度單位,包括px(象素)、pt(磅)、em(一種排版中的單位,1em=12pt)、mm(毫米)、cm(釐米)、pc(1pc=12pt)、in(英寸),這些單位可以使用整數(如px)表示,也可以使用實數(如em)表示,並且元素中對數值還有繼承(inherit)的關係比如:

body H1

那麼在顯示中H1的text-indent屬性就不是36pt而是45pt。

有的屬性的單位甚至可以是負值,如margin,可以達到一些特殊的效果,如元素之間的重疊。另外還有一些其他的單位如角度,它的單位有deg(度)、grad(梯度)和rad(弧度);頻率的單位,Hz和kHz,這些都是我們非常熟悉的。

3、註釋及空格

101平臺線上http://101zaixian.net/

101娛樂平臺線上

樣式單也有註釋語句:可以用"/*……*/"作為註釋標記,在瀏覽器中有一個對樣式單的分析器,它負責對樣式單的檢查,分析器將忽略註釋標記之間的內容。空格在樣式單中是有效的,如果字元之間有超過一個空格存在,它將省略其餘空格,而只保留一個,特別是在宣告某些字型的時候,空格一定不能省略。

2 要注意的方面

首先,樣式單是區分大小寫的,所以要注意拼寫;其次對於CSS2未宣告的屬性和方法,樣式單的分析器會忽略它的存在,如:

H1 ,H2 H3 ,H4 & H5 P {color:blue ;font-variant:small-caps}

其中"&"是樣式單中沒有的標號,第二行整個被分析器略過,第三行中的font-variant不是一個合法屬性,也被略過("color:blue"有效)。

瞭解了以上規則,你就已經對樣式單入門了,下面將詳細介紹樣式單的各種屬性及屬性值。

CSS屬性:

1、媒體(Media)型別

樣式單的一個最重要的特點就是它可以作用於多種媒體,比如頁面、螢幕、電子合成器等等。特定的屬性只能作用於特定的媒體,如"font-size"屬性只對可捲動的媒體型別有效(螢幕)。

宣告一個媒體屬性可以用@import或@media引入:

@import url(loudvoice.css) speech;@media print {/* style sheet for print goes here */}

也可以在文件標記中引入媒體:

可以看出,@import和@media的區別在於,前者引入外部的樣式單用於媒體型別,後者直接引入媒體屬性。@import的使用方法是@import加樣式單檔案的URL地址再加媒體型別,可以多個媒體共用一個樣式單,媒體型別之間用","分割符分開。@media用法則是把媒體型別放在前面,其他規則和rule-set基本一樣。下面列出各種媒體型別:

SCREEN:指計算機螢幕。PRINT:指用於印表機的不透明介質。PROJECTION:指用於顯示的專案。BRAILLE:盲文系統,指有觸覺效果的印刷品。AURAL:指語音電子合成器。TV:指電視型別的媒體。HANDHELD:指手持式顯示裝置(小螢幕,單色)ALL:適合於所有媒體。

CSS屬性:

2、BOX模型(BOX Model)屬性

什麼是BOX?CSS把HTML中以 …… 的部分稱為BOX(容器),BOX有三類屬性:padding、margin和border。

Margin屬性:

Margin屬性分為margin-top、margin-right、margin-bottom、margin-left和margin五個屬性,分別表示BOX裡內容離邊框的距離,它的屬性值是數值單位,可以是長度、百分比或auto,margin甚至可以設為負值,造成BOX與BOX之間的重疊顯示,關於margin的屬性詳見下表:

屬性名稱: 'margin-top'、'margin-right'、'margin-bottom'、'margin-left'屬性值: 初始值: 0適合物件: 所有元素是否繼承: no百分比備註: 相對於BOX的寬度

例如:

H1 { margin-top: 2em }H2 { margin-right: 12.3% }

Margin還有一個快捷的書寫方法,就是直接用margin屬性,例如:

BODY { margin: 1em 2em 3em 2em}

等同於:

BODY {margin-top:1em;margin-right:2em;margin-bottom:3em;margin-left:2em;}

margin屬性後面可以有四個值,中間用空格隔開(記住不是逗號),順序是"上右下左",當然margin後面可以不足四個值,例如:

BODY { margin: 2em } /* 所有的margin都設為2em */BODY { margin: 1em 2em } /* 上下margin為1em,右左margin為2em */BODY { margin: 1em 2em 3em } /* 上margin為1em,右左margin為2em,下margin為3em*/

Padding屬性:

Padding屬性用來描述BOX的邊框和內容之間插入多少空間,和margin屬性類似,它也分為上右下左和一個快捷方式padding,關於padding的屬性詳見下表:

屬性名稱: 'padding-top'、'padding-right'、'padding-bottom'、'padding-left' 、'padding'屬性值: 初始值: 0適合物件: 所有元素是否繼承: no百分比備註: 相對於BOX的寬度

例如:

BLOCKQUOTE { padding-top: 0.3em }

padding屬性和margin類似此處略去。

Border屬性:

平時我們在檢視HTML文件時,看到一段文字,並不會把它當作一個BOX,實際上BOX是有邊框的,只是平時不顯示出來罷了,而border屬性就是用來描述BOX邊框的。Border屬性分為border-width、border-color和border-style,而這些屬性下面又有分支。

border-width屬性:

border-width屬性又分為:border-top-width、border-right-width、border-bottom-width、border-left-width和border-width屬性,border-width用長度表示為"thin/medium/thick"或長度單位表示,下面是border-width屬性的詳細列表:

屬性名稱: 'border-top-width'、'border-right-width'、'border-bottom-width'、'border-left-width'、'border-width'屬性值: 初始值: medium適合物件: 所有元素是否繼承: no百分比備註: 被禁止

border-width為快捷方式,順序為上右下左,值之間用空格隔開。

border-color屬性:

border-color屬性用來顯示BOX邊框顏色,分為border-top-color、border-right-color、border-bottom-color、border-right-color和border-color屬性,屬性值為顏色,可以用十六進位制表示,也可用rgb()表示,屬性見下:屬性名稱: 'border-top-color'、'border-right-color'、'border-bottom-color'、'border-left-color'、'border-color'

屬性值: 初始值: 元素顏色的初始值適合物件: 所有元素是否繼承: no百分比備註: 被禁止

border-color為快捷方式,順序為上右下左,值之間用空格隔開。

border-style屬性:

border-style屬性用來設定BOX物件邊框的樣式,它的屬性值為CSS規定的關鍵字,平常看不到border是因為,初始值是none的緣故。屬性見下:

屬性名稱: 'border-top-style'、'border-right-style'、'border-bottom-style'、'border-left-style'、'border-style'屬性值: 初始值: none適合物件: 所有元素是否繼承: no百分比備註: 被禁止

border-color為快捷方式,順序為上右下左,值之間用空格隔開。

屬性值的名稱和代表意義如下:

none:無邊框。dotted:邊框為點線。dashed:邊框為長短線。solid:邊框為實線。double:邊框為雙線。groove、ridge、inset和outset:顯示不同效果的3D邊框(根據color屬性)。

border屬性:

border屬性為Border的快捷方式,屬性值間用空格隔開,順序是"邊框寬度 邊框樣式 邊框顏色",例如:

hello!

還可以用border-top、border-right、border-bottom、border-left分別作為上右下左的快捷方式,屬性值順序同border屬性。

相關問題答案