天天看點

惡補web之二:css知識(1)

    css指層疊樣式表(cascading style sheets)

    樣式定義如何顯示html元素,樣式通常存儲在樣式表裡。把樣式添加到html4.0中,是為了解決内容與表現分離的問題。外部樣式表可以極大提高工作效率,外部樣式表存儲在css檔案裡,多個樣式定義可層疊為一。

    html标簽原本被設計為用于定義文檔内容,由于netscape和ie不斷将新的html标簽和屬性(比如字型和顔色屬性)添加到html規範中,建立文檔内容清晰地獨立于文檔表現層的站點變得越來越困難。為解決該問題,w3c在html4.0之外創造出樣式。所有主流浏覽器均支援層疊樣式表。

    當同一個html元素定義不止一個樣式時,會優先使用小編号的樣式:

1.内聯樣式(html元素内部)

2.内部樣式表(位于<head>标簽内部)

3.外部樣式表

4.浏覽器預設設定

   css規則由2部分組成:選擇器以及一條或多條聲明。選擇器通常是需要改變樣式的html元素,而聲明由一個屬性和一個值組成:selector {property:value},比如以下代碼将h1元素内文字定義為紅色,同時字型大小設定為14象素:

h1 {color:red;font-size:14px;}

    是否包含空格不會影響css在浏覽器的效果,css也是大小寫不敏感的。不過存在一個例外:如果涉及到與html文檔一起工作的話,class和id名稱對大小寫是敏感的。

    選擇器的分組。你可以對選擇器分組,被分組的選擇器共享相同的聲明:

h1,h2,h3,h4 {

    color:green;

    }

    根據css,子元素從父元素繼承屬性,但實際不總是如此:

body {

    font-family:verdana,sans-serif;

根據上條規則,站點的body元素使用特定字型。通過css繼承,子元素将繼承最進階元素(本例中為body)所擁有的屬性,這些子元素諸如p,td,ul,ol,li,dl,dt;這樣所有body子元素都應該顯示body設定的字型,子元素的子元素也一樣,并且在大多數現代浏覽器中,也确實如此。但某些浏覽器不支援繼承,而且忽略應用于body元素的規則;ie直到ie6還存在相關問題:在表格内字型樣式會被忽略。

    如果不希望子元素繼承父元素屬性,可以單獨為子元素建立一個特殊規則即可:

body  {

     font-family: verdana, sans-serif;

     }

td, ul, ol, ul, li, dl, dt, dd  {

p  {

     font-family: times, "times new roman", serif;

    派生選擇器允許你根據上下文關系來确定某個标簽的樣式;比如你隻希望清單中的strong元素變為斜體字,而不是通常的粗體字,可以如下定義派生選擇器:

li strong {

    font-style: italic;

    font-weight: normal;

  }

在上面例子中,隻有li中的strong元素會發生改變。

    id選擇器可以為标有特定id的html元素指定特定的樣式,id選擇器以”#“來定義。

#red {color:red;}

#green {color:green;}

下面是如何應用上述樣式:

<p id="red">xxx</p>

<p id="green">xxx</p>

    在現代布局中,id選擇器常用來建立派生選擇器:

#sidebar p{

    font-sytle:italic;

    text-align:right;

以上樣式隻會應用于出現在id是sidebar元素的段落。

    即使id隻能在文檔中出現一次,但id選擇器作為派生選擇器也可以被使用多次:

#sidebar p {...}

#sidebar h2 {...}

    id選擇器可以獨立發揮作用:

#sidebar{

    border: 1px dotted #000;

    padding:10px;

老版本的ie浏覽器會忽略該規則,除非你特别定義這個選擇器所屬的元素:

div#sidebar {...}

    在css中,類選擇器以一個點号顯示:

.center {text-align:center}

在上面例子中,所有擁有center類的html元素均居中顯示。類名第一個字元不能使用數字,它在firefox中不起作用。

    和id一樣,class也可以被用作派生選擇器:

.fancy td {...}

以上代碼表示類名為fancy更大元素内部的表格單元的樣式資訊。

    元素也可以基于它們的類而被選擇:

td.fancy {...}

表示類名為fancy的表格單元的樣式資訊:<td class="fancy"></td>

    可以為擁有指定屬性的html元素設定樣式,而不僅限于class和id屬性。(隻有在規定了!doctype時,ie7和ie8才支援屬性選擇器,更低的ie版本不支援。)

    下面代碼為帶有title屬性以及title屬性為hello的所有元素設定樣式:

[title]

{

color:red;

}

[title=hello]

color:5px solid blue;

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<html>

<head>

<style type="text/css">

[title=w3school]

border:5px solid blue;

</style>

</head>

<body>

<h1>可以應用樣式:</h1>

<img title="w3school" src="/i/w3school_logo_white.gif" />

<br />

<a title="w3school" href="http://w3school.com.cn">w3school</a>

<hr />

<h1>無法應用樣式:</h1>

<p title="greeting">hi!</p>

<a class="w3school" href="http://w3school.com.cn">w3school</a>

</body>

</html>

下面代碼為包含指定值(不必嚴格比對)的title屬性所有單元設定樣式,适合于空格分隔的屬性值:

[title~=hello]{color:red;}

下面代碼為帶有包含指定值得lang屬性的所有元素設定樣式,适用于連字元分隔的屬性值:

[lang|=en]{color:red;}

    屬性選擇器在為不帶有class或id的表單設定樣式時特别有用:

input[type="text"]

  width:150px;

  display:block;

  margin-bottom:10px;

  background-color:yellow;

  font-family: verdana, arial;

input[type="button"]

  width:120px;

  margin-left:35px;

下表列出了其他的比對模式:

選擇器    描述

[attribute]    用于選取帶有指定屬性的元素。

[attribute=value]    用于選取帶有指定屬性和值的元素。

[attribute~=value]    用于選取屬性值中包含指定詞彙的元素。

[attribute|=value]    用于選取帶有以指定值開頭的屬性值的元素,該值必須是整個單詞。

[attribute^=value]    比對屬性值以指定值開頭的每個元素。

[attribute$=value]    比對屬性值以指定值結尾的每個元素。

[attribute*=value]    比對屬性值中包含指定值的每個元素。

應用樣式表的3種方法:

1 外部樣式表。

<link rel="stylesheet" type="text/css" href="xxx.css" />

外部樣式表可以在任何文本編輯器中編輯,其中不能包含任何html标簽,字尾應該是.css.

2 内部樣式表。

  hr {...}

  p {...}

  body {...}

3 内聯樣式。

<p style="color:sienna;margin-left:20px">

this is a box

</p>

    css背景。css運作應用純色作為背景,也允許适用背景圖像。css在這方面的能力遠在html之上。

    p {background-color:gray;}    #将元素背景設定為灰色

    p {background-color:rap;padding:20px;} #如上,不過背景色像外略有延伸(增加一些内邊距)

    body {background-image:url;} #設定背景圖像

    也可以為屬于某個類的某個元素設定背景圖像:

p.flower {...}

a.hello {...}

理論上,設定可以向textures和select等替換元素的背景應用圖像,不過不是所有浏覽器都能很好的處理這種情況。另外background-image不能繼承。事實上,所有背景屬性都不能繼承。

    背景重複。如果在頁面上對背景圖像進行平鋪,可以使用background-repeat屬性。

    背景定位。可以用background-position屬性改變圖像在背景中的位置。

    背景關聯。可以用background-attachment屬性防止背景滾動(聲明圖像為fixed)。

css 文本屬性

屬性    描述

color    設定文本顔色

direction    設定文本方向。

line-height    設定行高。

letter-spacing    設定字元間距。

text-align    對齊元素中的文本。

text-decoration    向文本添加修飾。

text-indent    縮進元素中文本的首行。

text-shadow    設定文本陰影。css2 包含該屬性,但是 css2.1 沒有保留該屬性。

text-transform    控制元素中的字母。

unicode-bidi    設定文本方向。

white-space    設定元素中空白的處理方式。

word-spacing    設定字間距。