1. 程式人生 > >html day2 --CSS基礎

html day2 --CSS基礎

一、CSS簡介

注意:text-align/text-decoration/text-indent

CSS(cascading style sheets)WEB標準中的表現標準語言,表現標準語言在網頁中主要對網頁資訊的顯示進行控制,簡單說就是如何修飾網頁的顯示樣式。---級聯樣式表、層疊樣式表

目前推薦遵循的是W3C釋出的CSS3.0

     css3在包含了所有css2.0所支援的基礎上改變了改進,css遵循的是模組式開發,釋出的時間不是一個點而是一個時間段。

1998年5月21日由w3C正式推出的css2.0

   (在css1的基礎上增加了高階功能,浮動,定位,高階選擇器等(子選擇器,相鄰選擇器,通用選擇器)

1996年推出CSS1

  包含非常基本的屬性,比如字型,顏色、空白邊

歷史

在使用CSS之前,Web開發人員依賴於一些特定的HTML標籤和屬性來增強網頁的視覺體驗,而依賴表格來進行佈局設計。

和樣式有關的一些HTML標籤:

  • <basefont> 定義整個網頁文件的字型
  • <font> 定義一個具體的字型型別,顏色和它所包含的文字大小
  • <center> 水平居中它所包含的元素
  • <big> 使文字變大
  • <strike> 為文字新增刪除線

和樣式有關的一些HTML屬性:

  • bgcolor 定義元素的背景色
  • text 定義文字顏色
  • margin 定義元素的邊距

在頁面整體佈局的設計上曾經廣泛使用表格 <table> 元素。因為表格提供了一個視覺化的網格(grid)使得建立列、對齊和定位頁面中的各個元素要相對直觀一些;

 

這些樣式和佈局方法有很多缺點:

(1)內建的HTML元素和屬性,使得表現和內容繫結在一起,如果要提供多樣式的網頁,必然要提供多份HTML文件內容

(2)HTML表格的程式碼相當繁瑣,需要很多公式化標籤,吃力不討好

(3)HTML表格標記用法是語義錯誤的: 表格應該只是用來組織多維資料的,而不是用來佈局的

(4)改變佈局需要更改標記:如果我們想把左邊的列移到右邊,我們得修改HTML文件結構

(5)HTML表格容易出現語法錯誤:行和列需要遵循嚴格的排序和巢狀關係

(6)HTML表格標記用法可讀性差:需要使用巢狀表格來支援列中有列的佈局,結構將變得非常複雜

這就是為什麼內建HTML樣式和使用表格進行佈局在實踐中已經逐漸被拋棄,轉而使用div+CSS來代替的原因。

 

內容和表現分離的好處:

(1)同一份文件可以擁有不同的呈現,提高了文件的可複用性和設計靈活

(2) 內容和樣式分離使得HTML文件精簡清晰,可讀性高

(3) 由於瀏覽器會快取靜態檔案如CSS/JS,這將有助於提高網站效能和SEO評估

(4) 程式碼的可維護性好

 

二、css語法

選擇符{屬性:屬性值; 屬性:屬性值;}

選擇符:表示要定義樣式的物件

1)每個CSS樣式由兩部分組成,即選擇符和宣告,宣告又分為屬性和屬性值;

2)屬性必須放在{}內;

3)屬性與屬性值用冒號連線

4)當一個選擇符有多個屬性時,用分號隔開;

5)當一個屬性有多個屬性值時,用空格分隔;

6)使用空格、換行不影響css樣式的顯示。

簡單樣式

width:value+px;設定標籤的寬度

height:value+px;設定標籤的高度

background:#colorValue; 設定標籤的背景顏色

color:#colorValue;設定文字顏色;而不是font-color

border:1px  solid  #colorValue;  設定標籤的邊框

邊框型別:solid實線邊框  double雙線邊框  dashed虛線(v. 猛衝/猛擲)  dotted點狀線(v. 點綴佈滿)

樣式表分類

樣式:內部樣式  外部樣式 和 內聯樣式

1.內部樣式

語法:

    <style type="text/css">

           css語句

    </style>

注:使用style標記建立樣式時,最好將該標記寫在<head></head>裡面;

2.外部樣式

外部樣式的建立及呼叫(@charset "utf-8";在外部樣式表文件內使用。指定該樣式表使用的字元編碼。該規則後面的分號是必需的,如果省略了此分號,會生成錯誤資訊。)

a:外部樣式表的建立。         b:外部樣式表的匯入。

*方法 一

<link rel="stylesheet" type="text/css" href="目標檔案的路徑及檔名全稱" />

說明:使用link元素匯入外部樣式表時,需將該元素寫在文件頭部,即<head>與</head>之間。

*方法 二

<style type="text/css">

      @import url(目標檔案的路徑及檔名全稱);

</style>

注:@和import之間沒有空格 url和小括號之間也沒有空格;必須結尾以分號結束;

兩種匯入樣式的區別

link和import匯入外部樣式的區別:

差別1:

     link屬於XHTML標籤,而@import完全是CSS提供的一種方式。 link標籤除了可以載入CSS外,還可以做很多其它的事情,比如定義RSS,定義rel連線屬性等,@import就只能載入CSS。

差別2:

      載入順序的差別:當一個頁面被載入的時候(就是被瀏覽者瀏覽的時候),link引用的CSS會同時被載入,而@import引用的CSS會等到頁面全部被下載完再被載入。所以有時候瀏覽@import載入CSS的頁面時開始會沒有樣式。

差別3:

      相容性的差別:@import是CSS2.1提出的,所以老的瀏覽器不支援,@import只在IE5以上的才能識別,而link標籤無此問題。

差別4:

      使用dom控制樣式時的差別:當使用javascript控制dom去改變樣式的時候,只能使用link標籤,因為@import不是dom可以控制的

3.內聯樣式表(行間樣式,行內樣式,嵌入式樣式)

語法:<標籤 style="屬性:屬性值 ; 屬性:屬性值;"></標籤>

 

樣式表的優先順序

內聯樣式表的優先級別最高,內部樣式表與外部樣式表的優先順序和書寫的順序有關,後書寫的優先級別高

下面的優先順序高

 

三、選擇符(選擇器)

1) 元素選擇符/型別選擇符(element選擇器 )

語法:元素名稱{屬性:屬性值;}

說明:元素選擇符就是以文件語言物件型別作為選擇符,即使用結構中元素名稱作為選擇符。例如body、div、p,img,em,strong,span等。

用法:當統一或者改變文件某類元素的顯示效果時,可以使用型別選擇符;

2) id選擇器

語法:#id名{屬性:屬性值;}

說明:

1)使用id選擇符時,應該為每個元素定義一個id屬性

2)id選擇符的語法格式是:#id名{}

3) 起名時要取英文名,不能用關鍵字(所有的標記和屬性都是關鍵字)

4)一個id名稱只能對應文件中一個具體的元素物件,因為id只能定義頁面中某一個唯一的元素物件。

5) 最大的用處:建立網頁的外圍結構。

3)class選擇器

 語法:.class名{屬性:屬性值;}

說明: 使用類選擇符時,為每個元素定義一個類名稱,語法格式是:

  <div class=“top”></div>,在css中使用方式為:.top{}

用法:1)class選擇符更適合定義一類樣式;

                 div.top{}   p.top{}:p標籤下的有top類的那個元素

           2 ) 一個標記可以設定多個class名

          語法:<標記 class="名稱1   名稱2" ></標記>

          3)class名可以重複,class屬性可以有多個屬性值,中間用空格分割

4)群組選擇器

      語法:選擇符1,選擇符2,選擇符3{屬性:屬性值;}

說明:當有多個選擇符應用相同的樣式時,可以將選擇符用“,”分隔的方式,合併為一組。

5) 包含選擇器/後代選擇符

        語法:選擇符1   選擇符2{屬性:屬性值;}----------選擇符2只要是在選擇符裡面就可以了,不一定是子類,可以是祖孫類

說明:選擇符1和選擇符2用空格隔開,含義就是選擇符1中包含的所有選擇符2;

 

6) 偽類選擇器(偽類選擇符)

      語法 : :link{屬性:屬性值;}超連結的初始狀態;

       :visited{屬性:屬性值;}超連結被訪問後的狀態;

       :hover{屬性:屬性值;}滑鼠懸停,即滑鼠劃過超連結時的狀態;(div ,p,span,li等等)

       :active{屬性:屬性值;}超連結被啟用時的狀態,即滑鼠按下時超連結的狀態;

說明:
1)當這4個超連結偽類選擇符聯合使用時,應注意他們的順序,正常順序為:a:link,a:visited,a:hover,a:active,錯誤的順序有時會使超連結的樣式失效; 

2)使用與超連結相關的偽類選擇符時,應為a元素定義href屬性;

 

7)萬用字元

語法:*{屬性:屬性值;}

說明:通配選擇符的寫法是“*”,其含義就是所有元素。

用法:常用來重置樣式

全域性樣式

*{margin:0;padding:0;}

margin:0 auto; 讓子元素相對父元素水平居中顯示

header會繼承body的寬高,body會繼承html的寬高,html會繼承瀏覽器硬體頁面的寬高

選擇符權重

3.對文字的設定是可以繼承的,對border和bg的設定不能整合

 

css中用四位數字表示權重,權重的表達方式如:0,0,0,0

型別選擇符的權重為     0001

偽元素選擇符的權重為  0001

class選擇符的權重為    0010

屬性選擇符的權重為     0010

偽類選擇符的權重為     0010

id選擇符的權重為      0100

內聯樣式的權重為      1000

萬用字元的權重為          0000

子選擇符(>)的權重為      0000 

繼承樣式的權重為      0000

兄弟選擇符的權重為   0000

包含選擇符的權重:為包含選擇符的權重之和

 

擴充套件:

1.偽類選擇符:

 

 

2.子選擇器(IE6不支援)

子元素選擇器只能選擇作為某元素的子元素的元素,子選擇器使用了大於號(這個大於號的權重是0,子結合符);

子結合符兩邊可以有空白符,因此,以下寫法都沒有問題:h1 > strong     h1> strong    h1 >strong     h1>strong  

 

3.相鄰兄弟選擇器(IE6不支援) +:

如果需要選擇緊接在另一個元素後的元素,而且二者有相同的父元素,可以使用相鄰兄弟選擇器,相鄰兄弟選擇器使用加號“+”做為連線符。

普通兄弟選擇器(IE6不支援) ~:

普通兄弟選擇器選取所有指定元素的兄弟元素,使用”~”作為連線符。向下找不會向上找

屬性選擇器

選擇器[att][att] 匹配所有具有att屬性的元素。
選擇器[att=val] 匹配所有att屬性等於“val”的元素。
選擇器[att~=val]選擇具有att屬性且屬性值為包含val的字串的元素(如果忽略了波浪號,則說明需要完成完全匹配)。
選擇器[att|=val]選擇具有att屬性且屬性值為以val開頭並用連線符"-"分隔的字串的E元素。   

浮動:float可以使塊狀元素並列顯示,給所有需要並列顯示的元素(如圖片和文字對齊時總有點錯位)都新增浮動

子元素可以把父元素撐大,但當設定浮動時,不會把body撐大,元素設定浮動之後,會脫離正常文件流。

高度塌陷:如果父元素在沒有設定高度時,高度為0,叫父元素的高度塌陷;

解決辦法:,在設定浮動的元素下面設定

  1. line-height:2   實際預設的單位為em,表示行高為字元的文字高度*number倍數
  2. line-height:100%,表示行高與當前字型大小一樣,200%=fontsize*2
  3. line-height:34px;

這樣量行高:給文字設定行高後,字型會預設垂直居中。

文字水平居中text-align:center

經常對a標籤設定,如a{text-decoration:none;}

 

正的值往右走,給負值往左走.文字中經常用到

百分比是基於父元素的尺寸

若父元素有高度,則不會出現高度塌陷

text-align/text-decoration/text-indent

li和a都可寫:hover,但範圍不一樣