CSS一般稱爲CSS樣式表或層疊樣式表(級聯樣式表),主要用於設置HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距等)以及版面的佈局等外觀顯示樣式。php
CSS以HTML爲基礎,提供了豐富的功能,如字體、顏色、背景的控制及總體排版等,並且還能夠針對不一樣的瀏覽器設置不一樣的樣式。css
CSS基礎語法html
CSS規則由兩個主要部分構成:選擇器以及一條或多條聲明。api
每條聲明由一個屬性和一個值組成。屬性(property)是設置的樣式屬性,每一個屬性有一個值,屬性和值被冒號分開。瀏覽器
好比 selector{property:value}
選擇器一般是須要改變樣式的HTML元素。佈局
好比 h1{color:red; font-size:14px;}
h1是選擇器,color和font-size是屬性,red和14px是值。字體
注意:
若是定義不止一個聲明則須要用分號將每一個聲明分開。例如:p{text-align:center;color:red}
url
若是值爲若干單詞,則要給值加引號: 例如:p {font-family: "sans serif";}
spa
CSS高級語法設計
選擇器的分組 h1,h2,h3,h4,h5,h6 { color: green; }
繼承及其問題:根據 CSS,子元素從父元素繼承屬性。 body { font-family: Verdana, sans-serif; }
CSS 建立樣式表分爲三種狀況:
<head> <style type="text/CSS"> 選擇器 {屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3;} div{width:200px; height:200px; border:1px solid red;} </style> </head>
<div style="width:200px;height:100px;border:1px solid black;"></div>
<head> <link rel="stylesheet" type="text/css" href="css/style.css"> </head>
樣式優先級:內聯樣式>內部樣式>外部樣式
三種樣式表區別:
行內樣式表:優勢書寫方便;缺點沒有實現樣式和結構相分離;使用狀況較少;控制範圍:控制一個標籤(少)。
內部樣式表:優勢部分結構和樣式相分離;缺點沒有完全分離;使用狀況較多;控制範圍:控制一個頁面(中)。
外部樣式表:優勢徹底實現結構和樣式相分離;缺點須要引入;使用狀況最多,推薦;控制範圍:控制整個站點(多)。
ID選擇器:
id 選擇器能夠爲標有特定 id 的 HTML 元素指定特定的樣式,id 屬性和身份證同樣具備惟一性。 HTML元素以 id 屬性來設置 id 選擇器,CSS 中 id 選擇器以 "#" 來定義。 注意: id 屬性不能以數字開頭。
語法: #id名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
class選擇器:
class 選擇器用於描述一組元素的樣式,也叫作類選擇器。 class 能夠在多個元素中使用,而且一個元素也能夠指定多個類名。在 CSS 中,類選擇器以一個點 "." 號來定義。一樣的類名的第一個字符也不能使用數字。
語法: .類名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
ID 選擇器和類(class)選擇器的區別:
相同點:均可以應用於任何元素
不一樣點:
ID 選擇器只能在文檔中使用一次,而類選擇器可使用屢次。
可使用類選擇器詞列表方法爲一個元素同時設置多個樣式(也就是一個元素能夠制定多個類名),而ID只能指定一個。
最多見的CSS選擇器就是元素選擇器,也就是標籤選擇器,也就是在HTML中元素的最基本的選擇器。
語法: 標籤名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; } 或者 元素名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
標籤選擇器最大的優勢是能快速爲頁面中同類型的標籤統同樣式,同時這也是他的缺點,不能設計差別化樣式。
background 屬性用於定義 HTML 元素的背景。
定義元素背景效果的 CSS 屬性有五種:
background-color 背景顏色
background-image 背景圖像
background-repeat 背景圖像設置水平或垂直平鋪或不平鋪
background-position 背景圖像設置定位
background-attachment 背景圖像設置固定或滾動
背景屬性簡寫: body{ background:green url('images/fix.gif') no-repeat fixed 12px 24px; } 當使用簡寫屬性時,屬性值的順序依次爲: background-color --> background-image --> background-repeat --> background-attachment --> background-position
CSS文本格式主要分爲:文本顏色(color)、文本對齊方式、文本修飾、文本陰影、文本縮進、文本間距、字間距、文本空白處理、文本轉換。
文本對齊方式:text-align屬性有四個值:left,center,right,justify(兩端對齊)。屬性默認值爲auto。
文本修飾:text-decoration 屬性用來設置或刪除文本的修飾。 主要是用來刪除超連接的下劃線,也可使用其餘值來設置文本的修飾,
text-decoration:overline, 設置文本上劃線。
text-decoration:line-through, 設置文本中間劃線。
text-decoration:underline; 設置文本下劃線。
文本陰影:text-shadow: x y shadow color;其中 x 是水平陰影的偏移值,y 是垂直陰影的偏移值,shadow 用於指定陰影的模糊值,即模糊效果的做用距離,不容許負值。color 指定陰影的顏色。該屬性有兩個做用,產生陰影和模糊主體。
文本縮進:用來指定文本的首行縮進,容許爲負值,若是值是負數,第一行則向左縮進。CSS表示爲:text-indent:2em,em 是相對文字大小的單位,1em 就是1個文字大小,2em 就是兩個文字大小。
文本間距:行高,也就是文本行的高度。例如:line-height:22px;
字間距:letter-spacing 和 word-spacing 這兩個屬性均可用來增長或減小文本間的空白,即字間距。
不一樣的是:letter-spacing 屬性設置字符間距,而 word-spacing 屬性設置單詞間距。
注意:word-spacing 屬性對中文無效,所以在設置中文的字間距時請使用 letter-spacing 屬性。
letter-spacing 和 text-align:justify 是兩個衝突的屬性,不能同時使用, text-align:justify 是設置內容根據寬度自動調整字間距,使各行的長度剛好相等,實現文本兩端對齊效果, 而 letter-spacing 是指定一個固定的字間距。
文本空白處理:white-space 屬性指定元素內的空白如何處理,默認值爲 normal 空白會被瀏覽器忽略。 該屬性還有4個值:nowrap 文本不會換行,禁止換行,文本會在同一行上繼續,直到遇到 <br> 標籤爲止。 pre 空白會被瀏覽器保留,這種方式相似 HTML 中的 <pre> 標籤,用於定義預格式文本。
pre-wrap 指定保留空白符序列,可是正常地進行換行。 pre-line 指定合併空白符序列,可是保留換行符,並容許自動換行。
文本轉換:text-transform 屬性控制文本中的字母。是用來指定在一個文本中的大寫和小寫字母,可用於將全部字句變成大寫或小寫字母,或每一個單詞的首字母大寫。 text-transform:capitalize; 定義文本中的每一個單詞以大寫字母開頭。
text-transform:uppercase; 定義文本僅有大寫字母。 text-transform:lowercase; 定義文本僅有小寫字母。
font 屬性可用於設置文本字體,定義樣式,如加粗,大小等,屬於複合屬性,也叫作簡寫屬性。
簡寫順序:
font-style(字體樣式) --> font-variant(字體變形) --> font-weight(字體加粗) --> font-size(字體大小)/line-height --> font-family(設置文本字體)
注意,font-size 和 font-family 的值是必需的,不然無效。
(1)是絕對或相對大小,可使用px、em、%和em組合來設置。
1 使用px設置:經過像素設置文本大小是設置的整個頁面。
2 使用em設置:1em等於當前的字體尺寸,好比設置的默認字體是12px,所以1em的默認大小就是12px。像素轉換em:px/12 = em
3 使用%和em組合設置:在全部瀏覽器的解決方案中,設置 <body> 元素的默認字體大小是 100%,能夠顯示相同的文本大小,並容許全部瀏覽器縮放文本的大小。
<head> <style> body{font-size:100%} p{font-size:2.5em; } /* 2.5\*16=40px \*/ </style> </head> <body> <p>使用%和em組合設置</p> </body>
(2)font-style 屬性主要用於指定斜體文字。
屬性有三個值:
連接的四種狀態是:
a:link - 正常,未訪問過的連接。
a:visited - 已訪問過的連接。
a:hover - 當鼠標滑動到連接上時。
a:active - 連接被點擊的那一刻。
做用:
修改列表項標記使用 list-style-type,使用圖像做爲標記能夠利用 list-style-image 屬性完成。
1 無序列表: 無序列表常常用來作導航欄菜單,一般都須要隱藏無序列表項的標記,那麼就使用 list-style-type:none,表示無標記。list-style-type 屬性的默認值爲 disc 實心圓,即小黑點。除了無標記還能夠修改標記,例如circle空心圓,square實心方塊。
2 有序列表: 有序列表項標記默認使用數字樣式顯示,即 list-style-type:decimal。
3 圖像做爲列表項標記 要指定列表項標記的圖像,可使用 list-style-image 屬性,只須要簡單地設置一個 url() 值,就能夠將圖像做爲標記類型。
列表屬性簡寫:list-style:list-style-type,list-style-position,list-style-image;
表格邊框: border
表格寬度和高度:width 和 height
表格對齊:text-align 和 vertical-align
表格內邊距:tr,td的padding設置
<head> <style> #tab{ width:50%; font-family:"微軟雅黑"; /*設置是否將表格邊框合併爲單一線條的邊框*/ border-collapse:collapse; } #tab th,#tab td{ /*表格邊框*/ border:1px solid #7AC942; /*表格內邊距*/ padding:5px 10px; } #tab th{ color:white; background-color:#9C3; font-size:1.125em; /*左對齊*/ text-align:left; padding-top:4px; padding-bottom:8px; } #tab .list td{ /*邊顏色*/ color:#000; /*背景顏色*/ background-color:#FFC; } caption{ margin-bottom:10px; font-weight:bold; } </style> </head> <body> <table id="tab"> <caption>食物類別</caption> <thead> <tr class="list"> <th>粗糧</th> <th>蔬菜</th> <th>水果</th> </tr> </thead> <tbody> <tr> <td>大豆</td> <td>黃瓜</td> <td>香蕉</td> </tr> <tr class="list"> <td>高粱</td> <td>菠菜</td> <td>檸檬</td> </tr> <tr class="list"> <td>燕麥片</td> <td>白菜</td> <td>西瓜</td> </tr> </tbody> </table> </body>
1 分組和嵌套選擇器
(1)分組選擇器,例如:
h1{color:gray;} p{color:gray;} 能夠寫成:h1, p{color:gray;}
(2)嵌套選擇器,例如:
.div1 p{ color:white; } .div1 p a{ color:yellow; font-weight:bold; } <div class="div1"> <p>嵌套選擇器 <a href="#">深層嵌套選擇器</a> </p> </div>
(3)通配符選擇器
*{ padding:0; margin:0; }
2 屬性選擇器
(4)屬性選擇器:屬性選擇器使用[attr]
例如:把全部帶有 title 屬性的元素的字體設置爲紅色
<head> <style> \[title\]{ color:red; } </style> </head> <body> <h1>h1 標題不帶有 title 屬性</h1> <h2 title="標題">h2 能夠設置樣式</h2> <a href="#" title="連接">超連接能夠設置樣式</a> </body>
(5)屬性和值選擇器:屬性選擇器使用[attr=value]
<head> <style> \[title=Hello\]{ color:blue; } </style> </head> <body> <h1 title="Hello world">h1 標題 title="Hello world"</h1> <h2 title="Hello">h2 能夠設置樣式</h2> <a href="#" title="Hello">超連接能夠設置樣式</a> </body>
(6)屬性和多個值的選擇器:使用有兩種狀況:屬性值用空格分隔使用:[attr~=value] 屬性值用連字符分隔則使用:[attr|=value] 例如:把包含 title='Hello' 的元素的字體設置爲綠色,使用 ~ 分隔屬性和值
<head> <style> \[title~=Hello\]{ color:green; } \[lang|=zh\]{ color:gray; } </style> </head> <body> <h1 title="world">h1 標題 title="world"</h1> <h2 title="Hello">h2 能夠設置樣式</h2> <h3 title="Hello Web">h3 能夠設置樣式</h2> <a href="#" title="Hello world">超連接能夠設置樣式</a> <a href="#" lang="zh-TW">超連接能夠設置樣式</a> </body>
(7)表單樣式:屬性選擇器在爲不帶有 class 或 id 的表單設置樣式時特別有用。例如:
<head> <style> input\[type="text"\]{ width:150px; display:block; margin-bottom:5px; background-color:yellow; } input\[type="button"\]{ width:120px; margin-top:5px; background-color:green; } </style> </head> <body> <form name="input" action="demo.php" method="get"> 用戶名:<input type="text" name="user" placeholder="請輸入登陸名"> 暱 稱:<input type="text" name="name" placeholder="請輸入角色名"> <input type="button" value="查詢"> </form> </body>
3 組合選擇器:合選擇符是包括各類簡單選擇器的組合方式,組合選擇符說明了兩個選擇器直接的關係。
(8)後代選則器:又稱爲包含選擇器,以空格分隔,子元素選擇器只能選擇做爲某元素子元素的元素。
(9)子元素選擇器:子元素選擇器只能選擇做爲某元素子元素的元素,以 > 分隔,子元素選擇器只能選擇做爲某元素子元素的元素。
(10)相鄰兄弟選擇器:可選擇緊接在另外一元素後的元素,且兩者有相同父元素,以 + 分隔。
(11)普通相鄰兄弟選擇器:選取全部指定元素的相鄰兄弟元素,以 ~ 分隔。
(12)選擇器組合:多種選擇器能夠結合起來使用。
CSS 僞類是用來向一些選擇器添加特殊的效果。
語法:選擇器:僞類{attr:value;} CSS 類也可使用僞類:選擇器.class:僞類{attr:value;}
(1)超連接僞類 在瀏覽器中,連接的不一樣狀態均可以以不一樣的方式顯示:
a:link{color:#FF0000;} /* 未訪問的連接顯示爲紅色 */ a:visited{color:#00FF00;} /* 已訪問的連接顯示爲綠色 */ a:hover{color:#FF00FF;} /* 鼠標劃過連接顯示爲紫紅色 */ a:active{color:#0000FF;} /* 已選中的連接顯示爲藍色 */
注意: 在 CSS 定義中,a:hover 必須被置於 a:link 和 a:visited 以後,a:active 必須被置於 a:hover 以後,纔是有效的。
(2)僞類和 CSS 類(僞類能夠與 CSS 類配合使用)
(3)CSS2 - :first - child 僞類 <body> <p>第一個 p 元素</p> <p>第二個 p 元素</p> <p>第三個 p 元素</p> </body> 選擇做爲任何元素的第一個子元素 p。選擇器使用 p:first-child。 選擇全部 p 元素中的第一個子元素 b。選擇器使用 p>b:first-child。 選擇全部做爲第一個子元素 p 中的全部 b 元素。選擇器使用 p:first-child b。
(4)CSS2 - :lang 僞類 使用 :lang 僞類能夠爲不一樣的語言定義特殊的規則: html:lang(zh-CN){ color:blue; } :lang(en)>p{ color:gray; }
CSS 僞元素是用來爲一些選擇器添加特殊的效果。
語法:選擇器:僞元素{attr:value;} CSS 類也可使用僞元素:選擇器.class:僞元素{attr:value;}
(1)CSS2 - :before 僞元素
h1:before{ content:url(images/logo.gif); }
(2)CSS2 - :after 僞元素
h1:after{ content:url(images/logo.gif); }
content 屬性與 :before 及 :after 僞元素配合使用,來插入生成內容,該屬性用於定義元素以前或以後放置的生成內容。
content 的內容通常能夠爲四種: content:none 該值是默認值,不插入內容。
content:"string" 插入文本。
content:attr(屬性) 插入標籤屬性值。
content:url(路徑) 使用指定的絕對或相對地址插入一個外部資源,能夠是圖像,音頻,視頻或瀏覽器支持的其餘任何資源。
塊級元素(block-level):每一個塊元素一般都會獨自佔據一整行或多整行,能夠對其設置寬度、高度、對齊等屬性,經常使用於網頁佈局和網頁結構的搭建。常見的塊元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標籤是最典型的塊元素。
塊級元素特色:
行內元素(inline-level):不佔有獨立的區域,僅僅靠自身的字體大小和圖像尺寸來支撐結構,通常不能夠設置高度,寬度,對齊等屬性,經常使用於控制頁面中文本的樣式。常見的行內元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標籤最典型的行內元素。
行內元素的特色:
注意:
1.只有文字才能組成段落,所以p裏面不能放塊級元素,同理還有這些標籤h1,h2,h3,h4,h5,h6,dt,他們都是文字類塊級標籤,裏面不能放其餘塊級元素。
2. 連接裏面不能再放連接。
在行內元素中有幾個特殊的標籤——<img />、<input />、<td>,能夠對它們設置寬高和對齊屬性,有些資料可能會稱它們爲行內塊元素。
行內塊元素的特色:
層疊、繼承、優先級
CSS層疊性:是指多種CSS樣式的疊加。
CSS繼承性:是指書寫CSS樣式表時,子標籤會繼承父標籤的某些樣式,如文本顏色和字號。想要設置一個可繼承的屬性,只需將它應用於父元素便可。簡單理解就是: 子承父業。
CSS優先級:定義CSS樣式時,常常出現兩個或更多規則應用在同一元素上,這時就會出現優先級的問題。使用了 !important聲明的規則。
考慮權重時,須要注意的一些點:
CSS三大模塊: 盒子模型 、浮動 、定位。
盒子模型:就是把HTML頁面中的元素看做是一個矩形的盒子,也就是一個盛裝內容的容器。 每一個矩形都由元素的內容、內邊距(padding)、邊框(border)和外邊距(margin)組成。
盒子邊框(border)
語法:border : border-width || border-style || border-color 經常使用屬性值:none:沒有邊框即忽略全部邊框的寬度(默認值)、solid線(單實線)、dashed(虛線)、dotted(點線)、double(雙實線)
1 外邊距實現盒子居中 知足兩個條件:
而後給元素左右的外邊距都設置爲auto。
例如:.header{ width:960px; margin:0 auto;}
2 文字盒子居中
按照優先使用寬度 (width)、其次 使用內邊距(padding)、再次 外邊距(margin)。
width > padding > margin
緣由:
1. margin 會有外邊距合併 還有 ie6下面margin 加倍的bug,因此最後使用。
2. padding 會影響盒子大小, 須要進行加減計算(麻煩) 其次使用。
3. width 沒有問題,咱們常用寬度剩餘法 高度剩餘法來作。
語法: box-shadow:水平陰影 垂直陰影 模糊距離 陰影尺寸 陰影顏色 內/外陰影;
CSS的定位機制有3種:普通流(標準流)、浮動和定位。
position 屬性值分爲四種:
疊放次序z-index的特色: