CSS(Cascading Style Sheet)層疊樣式表;決定了如何顯示HTML元素;由W3C創造css
行內式:即標籤中用style標籤設定css樣式(不推薦)html
內嵌式:在成對的head標籤中嵌入style標籤(對於多個網頁,若修改樣式麻煩)瀏覽器
導入式ide
將一個獨立的.css文件引入html文件中,導入式使用css規則引入外部css文件佈局
<head> <style type="text/css"> @import"mystyle.css"; </style> </head>
缺點:導入式會在整個網頁裝載完後再裝載css文件;這就形成了一個問題字體
若網頁比較大則會出現先顯示無樣式的頁面,閃爍一下以後,再出現網頁的樣式url
連接式code
此方式 也是將一個.css文件引入到html文件中,但它與導入式不一樣的是使用html規則引入外部css文件orm
<head> <link rel="stylesheet" href="mystyle.css" type="text/css" /> </head>
優點:在網頁文件主體裝載前裝載完成,顯示出的網頁一開始就是帶樣式效果的htm
問:當同一個 HTML 元素被不止一個樣式定義時,會使用哪一個樣式呢?
答:通常而言,全部的樣式會根據下面的規則層疊於一個新的虛擬樣式表中,其中數字4擁有最高優先級
簡介
css規則由兩個主要的部分構成:選擇器以及一條或者多條聲明
選擇器一般是您須要改變樣式的html元素
每一條聲明由一個屬性和一個值組成
注意:
若值爲若干單詞,則要給值添加引號
p {font-family:"sans serif"}
css 對大小寫不敏感;注意空格以便編輯
body { color: #0000; margin: 0; padding: 0; }
h1,h2,h3,h4,h5,h6{ /*用逗號隔開*/ color:green; }
子元素從父元素繼承屬性
body { font-family:Verdana,sans-serif; } /*body裏面的全部子元素都使用 Verdana字體*/
若要擺脫繼承,能夠獨立建立一個針對某標籤的特殊規則
body { font-family:Verdana,sans-serif; } p { font-family:Times,"Times New Roman",serif; }
<html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> #red {color: red;} #green {color: green;} </style> </head> <body> <p id="red">這個段落是紅色</p> <p id="green">這個段落是綠色</p> </body> </html>
<html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> .center { text-align: center; } </style> </head> <body> <h1 class="center"> This heading will be center-aligned </h1> <p class="center"> This paragraph will also be center-aligned </p> </body> </html>
class選擇器和派生選擇器
.fancy td { color: #f60; background: #666 } /*在上述列子中,類名爲fancy的更大的元素內部的表格單元都會以灰色背景顯示橙色文字 (名爲fancy的更大元素多是一個表格或div)*/
元素也能夠基於它們的類而被選擇
td.fancy{ color: #f60; background: #666; } <!--在上述列子中,類名爲fancy的表格單元將是帶有灰色背景的橙色文字 僅僅做用於td元素下的.fancy類-->
經過依據元素在其位置的上下文關係來定義樣式,使標記更加簡潔
<html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> li strong { font-style: italic; font-weight: normal; } </style> </head> <body> <p> <strong> 我是粗體字 </strong> </p> <ol> <li> <strong> 我是斜體字,這是由於我是在li列表中 </strong> </li> <li> 我是正常字體 </li> </ol> </body> </html>
id選擇器和派生選擇器
在現代佈局種,id選擇器經常用於創建派生選擇器
<html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> #sidebar p { font-style: italic; text-align: right; marign-top: 0.5em; color:red; } </style> </head> <body> <p id="sidebar">這個段落是紅色</p> <p id="green">這個段落是綠色</p> </body> </html>
對帶有指定屬性的html元素設置樣式
[title] { color: red; }
屬性和值選擇器(單個值)
[title="W3School"] { border: 5px solid blue; }
屬性和值選擇器(多個值)
<!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> [title~=hello] /*適用於由空格分隔的屬性值*/ { color:red; } </style> </head> <body> <h1>能夠應用樣式:</h1> <h2 title="hello world">Hello world</h2> <p title="student hello">Hello W3School students!</h1> <hr /> <h1>沒法應用樣式:</h1> <h2 title="world">Hello world</h2> <p title="student">Hello W3School students!</p> </body> </html>
<!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> [lang|=en] /*適用於由連字符分隔的屬性值*/ { color:red; } </style> </head> <body> <h1>能夠應用樣式:</h1> <p lang="en">Hello!</p> <p lang="en-us">Hi!</p> <hr /> <h1>沒法應用樣式:</h1> <p lang="us">Hi!</p> <p lang="zh">Hao!</p> </body> </html>
經常使用場景:設置表單的樣式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> 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; display:block; font-family: Verdana, Arial; } </style> </head> <body> <form name="input" action="" method="get"> <input type="text" name="Name" value="Bill" size="20"> <input type="text" name="Name" value="Gates" size="20"> <input type="button" value="Example Button"> </form> </body> </html>
後代選擇器亦包含選擇器;能夠選擇做爲某元素後代的元素
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> h1 em {color:red;} /* 元素em爲h1的後代;兩元素的層次間隔是無限的 */ </style> </head> <body> <h1>This is a <em>important</em> heading</h1> <p>This is a <em>important</em> paragraph.</p> </body> </html>
若是您不但願選擇任意的後代元素,而是但願縮小範圍,只選擇某個元素的子元素,用此選擇器
子結合符( > )
<!DOCTYPE html> <html> <head> <style type="text/css"> h1 > strong {color:red;} /*這個規則會把第一個h1下面的兩個strong元素內容變紅色,其它則不受影響*/ </style> </head> <body> <h1>This is <strong>very</strong> <strong>very</strong> important.</h1> <h1>This is <em>really <strong>very</strong></em> important.</h1> </body> </html>
若是須要選擇緊接在另外一個元素後的元素,並且兩者有相同的父元素,可用此選擇器
相鄰兄弟結合符( + )
注意:用一個結合符只能選擇兩個相鄰兄弟中第二個元素
<!DOCTYPE html> <html> <head> <style type="text/css"> li + li {font-weight:bold;} /*上面這個選擇器只會把列表中的第二個和第三個列表項變爲粗體;第一個列表項不受影響*/ </style> </head> <body> <div> <ul> <li>List item 1</li> <li>List item 2</li> <li>List item 3</li> </ul> <ol> <li>List item 1</li> <li>List item 2</li> <li>List item 3</li> </ol> </div> </body> </html>
結合其它結合符例子
html>body table + ul{ margin-top: 20px; } /*解釋:選擇緊接在table元素後的全部兄弟ul元素,該table元素包含在一個body元素中,body元素自己也是html元素的子元素*/
css僞類 ( pseudo-classes)用於 向某些選擇器添加特殊 的效果
語法
selector/selector.class : pseudo-class{ property: value; }
錨僞類
連接的不一樣狀態分別以不一樣的方式顯示(對大小寫不敏感)
a:link {color: #FF0000} /*未訪問的狀態*/ a:visited {color: #00FF00} /* 已訪問的狀態*/ a:hover {color: #FF00FF} /*鼠標移動到連接上的狀態*/ a:active {color:#0000FF} /*選定的連接*/ /*注意順序,必須按照上面的順序,不然無效*/
僞類與css類配合使用
a.red : visited{ color:#FF0000; } <a class="red" href="css_syntax.asp">CSS Syntax</a> /*假如上面的列子中的連接被訪問過,那麼它將顯示爲紅色*/
僞元素(pseudo-element)用於向某些選擇器設置特殊效果
語法
selector/selector.class : pseudo-element{ property: value; }
after僞元素
能夠在元素的內容後面插入新內容
<!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8"> <style type="text/css"> h1:before { content:url(/i/w3school_logo_white.gif) } </style> </head> <body> <h1>This is a heading</h1> <p>The :before pseudo-element inserts content before an element.</p> <h1>This is a heading</h1> <p><b>註釋:</b>若是已規定 !DOCTYPE,那麼 Internet Explorer 8 (以及更高版本)支持 content 屬性。 </body> </html>
效果:
反之before僞元素是插在元素內容前面
後續跟進……