標簽的語法
1. 標簽由英文尖括號<
和>
括起來,如<html>
就是一個標簽。
2. html中的標簽一般都是成對出現的,分開始標簽和結束標簽。結束標簽比開始標簽多了一個/
。
3. 標簽與標簽之間是可以嵌套的,但先后順序必須保持一致,如:<div>里嵌套<p>,那么</p>必須放在</div>的前
4. HTML標簽不區分大小寫,<h1>
和<H1>
是一樣的,但建議小寫,因為大部分程序員都以小寫為准
認識html文件基本結構
1. <html></html>
稱為根標簽,所有的網頁標簽都在<html></html>中。
2. <head>
標簽用於定義文檔的頭部,它是所有頭部元素的容器。頭部元素有<title>
、<script>
、 <style>
、<link>
、 <meta>
等標簽,頭部標簽在下一小節中會有詳細介紹。
3. 在<body>
和</body>
標簽之間的內容是網頁的主要內容,如<h1>
、<p>
、<a>
、<img>
等網頁內容標簽,在這里的標簽中的內容會在瀏覽器中顯示出來
認識head標簽
下面這些標簽可用在 head 部分:
<head> <title>...</title> <meta> <link> <style>...</style> <script>...</script> </head>
<title>
標簽:在<title>和</title>標簽之間的文字內容是網頁的標題信息,它會出現在瀏覽器的標題欄中。網頁的title標簽用於告訴用戶和搜索引擎這個網頁的主要內容是什么,搜索引擎可以通過網頁標題,迅速的判斷出網頁的主題。每個網頁的內容都是不同的,每個網頁都應該有一個獨一無二的title。
了解HTML的代碼注釋
<!--注釋文字-->
em標簽標示強調
了解<hx>標簽,為你的網頁添加標題
文章的段落用<p>
標簽,那么文章的標題用什么標簽呢?在本節我們將使用<hx>
標簽來制作文章的標題。
標題標簽一共有6個,h1、h2、h3、h4、h5、h6
分別為一級標題、二級標題、三級標題、四級標題、五級標題、六級標題。並且依據重要性遞減。<h1>
是最高的等級
因為h1
標簽在網頁中比較重要,所以一般h1
標簽被用在網站名稱上。騰訊網站就是這樣做的。如:<h1>騰訊網</h1>
加入強調語氣,使用<strong>和<em>標簽
但兩者在強調的語氣上有區別:<em> 表示強調,<strong> 表示更強烈的強調。並且在瀏覽器中<em> 默認用斜體表示,<strong> 用粗體表示。兩個標簽相比,目前國內前端程序員更喜歡使用<strong>表示強調。
使用<span>標簽為文字設置單獨樣式
這一小節講解<span>標簽,我們對<em>
、<strong>
、<span>
這三個標簽進行一下總結:
1. <em>
和<strong>
標簽是為了強調一段話中的關鍵字時使用,它們的語義是強調。
2. <span>
標簽是沒有語義的,它的作用就是為了設置單獨的樣式用的。
<q>標簽,短文本引用
想在你的html中加一段引用嗎?比如在你的網頁的文章里想引用某個作家的一句詩,這樣會使你的文章更加出彩,那么<q>
標簽是你所需要的
注意這里用<q>標簽的真正關鍵點不是它的默認樣式雙引號(如果這樣我們不如自己在鍵盤上輸入雙引號就行了),而是它的語義:引用別人的話。
<blockquote>標簽,長文本引用
<blockquote>的作用也是引用別人的文本。但它是對長文本的引用,如在文章中引入大段某知名作家的文字,這時需要這個標簽
瀏覽器對<blockquote>標簽的解析是縮進樣式。
使用<br>標簽分行顯示文本
語法:
xhtml1.0寫法:
<br />
html4.01寫法:
<br>
大家注意,現在一般使用 xhtml1.0 的版本的寫法(其它標簽也是),這種版本比較規范。
總結:在 html 代碼中輸入回車、空格都是沒有作用的。在html文本中想輸入回車換行,就必須輸入<br />
。
為你的網頁中添加一些空格
在上一節的例子,我們已經講解過在html代碼中輸入空格、回車都是沒有作用的。要想輸入空格,必須寫入
。
語法:
認識<hr>標簽,添加水平橫線
語法:
html4.01版本 <hr>
xhtml1.0版本 <hr />
注意:
1. <hr />
標簽和<br />
標簽一樣也是一個空標簽,所以只有一個開始標簽,沒有結束標簽。
2. <hr />
標簽的在瀏覽器中的默認樣式線條比較粗,顏色為灰色,可能有些人覺得這種樣式不美觀,沒有關系,這些外在樣式在我們以后學習了css樣式表之后,都可以對其修改。
3. 大家注意,現在一般使用 xhtml1.0 的版本(其它標簽也是),這種版本比較規范。
<address>標簽,為網頁加入地址信息
一般網頁中會有一些網站的聯系地址信息需要在網頁中展示出來,這些聯系地址信息如公司的地址就可以<address>標簽。也可以定義一個地址(比如電子郵件地址)、簽名或者文檔的作者身份。
語法:
<address>聯系地址信息</address>
在瀏覽器上顯示的樣式為斜體,如果不喜歡斜體,當然可以,可以在后面的課程中使用 css 樣式來修改它<address>
標簽的默認樣式。
想加入一行代碼嗎?使用<code>標簽
在介紹語言技術的網站中,避免不了在網頁中顯示一些計算機專業的編程代碼,當代碼為一行代碼時,你就可以使用<code>標簽了,如下面例子:
<code>var i=i+300;</code>
注意:在文章中一般如果要插入多行代碼時不能使用<code>標簽了。
語法:
<code>代碼語言</code>
注:如果是多行代碼,可以使用<pre>標簽。
使用<pre>標簽為你的網頁加入大段代碼
<pre>語言代碼段</pre>
<pre> 標簽的主要作用:預格式化的文本。被包圍在 pre 元素中的文本通常會保留空格和換行符。
注意:<pre>
標簽不只是為顯示計算機的源代碼時用的,在你需要在網頁中預顯示格式時都可以使用它,只是<pre>
標簽的一個常見應用就是用來展示計算機的源代碼。
使用<dl></dl><dt></dt><dd></dd>
<dl></dl>用來創建一個普通的列表,<dt></dt>用來創建列表中的上層項目,<dd></dd>用來創建列表中最下層項目,<dt></dt>和<dd></dd>都必須放在<dl></dl>標志對之間
<html>
<head>
<title>一個普通列表</title>
</head>
<body text="blue">
<dl>
<dt>中國城市</dt>
<dd>北京 </dd>
<dd>上海 </dd>
<dd>廣州 </dd>
<dt>美國城市</dt>
<dd>華盛頓 </dd>
<dd>芝加哥 </dd>
</dl>
</body>
</html>
使用ul,添加新聞信息列表
在瀏覽網頁時,你會發現網頁上有很多信息的列表,如新聞列表、圖片列表,
ul-li是沒有前后順序的信息列表。
語法:
<ul> <li>信息</li> <li>信息</li> ...... </ul>
舉例:
<ul> <li>精彩少年</li> <li>美麗突然出現</li> <li>觸動心靈的旋律</li> </ul>

使用ol,添加圖書銷售排行榜
如果想在網頁中展示有前后順序的信息列表,怎么辦呢?
語法:
<ol> <li>信息</li> <li>信息</li> ...... </ol><ol>
在網頁中顯示的默認樣式一般為:每項<li>
前都自帶一個序號,序號默認從1
開始,
認識div在排版中的作用
在網頁制作過程過中,可以把一些獨立的邏輯部分划分出來,放在一個<div>
標簽中,這個<div>標簽的作用就相當於一個容器。
語法:
<div>…</div>
確定邏輯部分:
什么是邏輯部分?它是頁面上相互關聯的一組元素。如網頁中的獨立的欄目版塊,就是一個典型的邏輯部分。如下圖所示:圖中用紅色邊框標出的部分就是一個邏輯部分,就可以使用<div>
標簽作為容器。
給div命名,使邏輯更加清晰
在上一小節中,我們把一些標簽放進<div>里,划分出一個獨立的邏輯部分。為了使邏輯更加清晰,我們可以為這一個獨立的邏輯部分設置一個名稱,用id
屬性來為<div>
提供唯一的名稱,這個就像我們每個人都有一個身份證號,這個身份證號是唯一標識我們的身份的,也是必須唯一的。
如下兩圖進行比較,如果設計師把兩個圖給你,哪個圖你看上去能更快的理解呢?是不是右邊的那幅圖呢。
語法:
<div id="版塊名稱">…</div>
table標簽,認識網頁上的表格
有時候我們需要在網頁上展示一些數據,如某公司想在網頁上展示公司的庫存清單。如下表:
想在網頁上展示上述表格效果可以使用以下代碼:
創建表格的四個元素:
table、tbody、tr、th、td
1、<table>…</table>:整個表格以<table>
標記開始、</table>
標記結束。
2、<tbody>…</tbody>:當表格內容非常多時,表格會下載一點顯示一點,但如果加上<tbody>標簽后,這個表格就要等表格內容全部下載完才會顯示。如右側代碼編輯器中的代碼。
3、<tr>…</tr>:表格的一行,所以有幾對tr 表格就有幾行。
4、<td>…</td>:表格的一個單元格,一行中包含幾對<td>...</td>
,說明一行中就有幾列。
5、<th>…</th>:表格的頭部的一個單元格,表格表頭。
6、表格中列的個數,取決於一行中數據單元格的個數。
用css樣式,為表格加入邊框
Table表格在沒有添加css樣式之前,是沒有邊框的。這樣不便於我們后期合並單元格知識點的講解,所以在這一節中我們為表格添加一些樣式,為它添加邊框。
在右側代碼編輯器中添加如下代碼:
<style type="text/css"> table tr td,th{border:1px solid #000;} </style>
上述代碼是用css樣式代碼(后面章節會詳細講解),為th
,td
單元格添加粗細為一個象素的黑色邊框
在table前面加這段代碼,即可在表格中加邊框
caption標簽,為表格添加標題和摘要
表格還是需要添加一些標簽進行優化,可以添加標題和摘要。代碼如下:
摘要
摘要的內容是不會在瀏覽器中顯示出來的。它的作用是增加表格的可讀性(語義化),使搜索引擎更好的讀懂表格內容,還可以使屏幕閱讀器更好的幫助特殊用戶讀取表格內容。
語法:<table summary="表格簡介文本">摘要,不能顯示在網頁上的
<caption>標題文本</caption>
使用<a>標簽,鏈接到別一個頁面
使用<a>
標簽可實現超鏈接,它在網頁制作中可以說是無處不在,只要有鏈接的地方,就會有這個標簽。
語法:
<a href="目標網址" title="鼠標滑過顯示的文本">鏈接顯示的文本</a>
例如:
<a href="http://www.imooc.com" title="點擊進入慕課網">click here!</a>
上面例子作用是單擊click here!
文字,網頁鏈接到http://www.imooc.com
這個網頁。
在新建瀏覽器窗口中打開鏈接
<a>
標簽在默認情況下,鏈接的網頁是在當前瀏覽器窗口中打開,有時我們需要在新的瀏覽器窗口中打開。
如下代碼:
<a href="目標網址" target="_blank">click here!</a>
:hover
在CSS1中此偽類僅可用於a對象。且對於無href屬性(特性)的a對象,此偽類不發生作用。在CSS2中此偽類可以應用於任何對象。
語法:編輯
2說明:編輯
3示例:編輯
使用mailto在網頁中鏈接Email地址
認識<img>標簽,為網頁插入圖片
在網頁的制作中為使網頁炫麗美觀,肯定是缺少不了圖片,可以使用<img>
標簽來插入圖片。
語法:
<img src="圖片地址" alt="下載失敗時的替換文本" title = "提示文本">
舉例:
<img src = "myimage.gif" alt = "My Image" title = "My Image" />
講解:
1、src:標識圖像的位置;
2、alt:指定圖像的描述性文本,當圖像不可見時(下載不成功時),可看到該屬性指定的文本;
3、title:提供在圖像可見時對圖像的描述(鼠標滑過圖片時顯示的文本);
4、圖像可以是GIF,PNG,JPEG格式的圖像文件。
使用表單標簽,與用戶交互
網站怎樣與用戶進行交互?答案是使用HTML表單(form)。表單是可以把瀏覽者輸入的數據傳送到服務器端,這樣服務器端程序就可以處理表單傳過來的數據。
語法:
<form method="傳送方式" action="服務器文件">
講解:
1.<form> :<form>標簽是成對出現的,以<form>開始,以</form>結束。
2.action :瀏覽者輸入的數據被傳送到的地方,比如一個PHP頁面(save.php)。
3.method : 數據傳送的方式(get/post)。
<form method="post" action="save.php"> <label for="username">用戶名:</label> <input type="text" name="username" /> <label for="pass">密碼:</label> <input type="password" name="pass" /> </form>
注意:
1、所有表單控件(文本框、文本域、按鈕、單選框、復選框等)都必須放在<form></form>標簽之間(否則用戶輸入的信息可提交不到服務器上哦!)。
2、method:post/get的區別這一部分內容屬於后端程序員考慮的問題
<form method="post" action="save.php">
<label for="username">用戶名:</label>
<input type="text" name="username" id="username" value="" />
<label for="pass">密碼:</label>
<input type="password" name="pass" id="pass" value="" />
<input type="submit" value="確定" name="submit" />
<input type="reset" value="重置" name="reset" />
運行后的結果是:
文本輸入框、密碼輸入框
當用戶要在表單中鍵入字母、數字等內容時,就會用到文本輸入框。文本框也可以轉化為密碼輸入框。
語法:
<form> <input type="text/password" name="名稱" value="文本" /> </form>
1
、type:
當type="text"時,輸入框為文本
輸入框;
當type="password"時,
輸入框為密碼輸入框。
2
、name:
為文本框命名,以備后台程序ASP 、PHP使用。
3
、value:
為文本輸入框設置默認值。(一般起到提示作用)
舉例
:
<form> 姓名: <input type="text" name="myName"> <br/> 密碼: <input type="password" name="pass"> </form>
文本域,支持多行文本輸入
當用戶需要在表單中輸入大段文字時,需要用到文本輸入域。
語法:
<textarea
rows="
行數"
cols="
列數"
>
文本</textarea>
1
、<textarea>標簽是成對出現的,以<textarea>開始,以</textarea>結束。
2
、cols :
多行輸入域的列數。
3
、rows :
多行輸入域的行數。
4
、在<textarea></textarea>標簽之間可以輸入默認值。
舉例
:
<form method="post" action="save.php"><label>
聯系我們</label>
<textarea cols="50" rows="10" >
在這里輸入內容...
</textarea>
</form>
注意:代碼中的<label>標簽在本章5-9中講解。
在瀏覽器中顯示結果:
使用單選框、復選框,讓用戶選擇
在使用表單設計調查表時,為了減少用戶的操作,使用選擇框是一個好主意,html中有兩種選擇框,即單選框和復選框,兩者的區別是單選框中的選項用戶只能選擇一項,而復選框中用戶可以任意選擇多項,甚至全選。請看下面的例子:
語法:
<input type="radio/checkbox" value="值" name="名稱" checked="checked"/>
1、type:
當 type="radio" 時,控件為單選框
當 type="checkbox" 時,控件為復選框
2、value:提交數據到服務器的值(后台程序PHP使用)
3、name:為控件命名,以備后台程序 ASP、PHP 使用
4、checked:當設置 checked="checked" 時,該選項被默認選中
如下面代碼:
注意:代碼中的<label>標簽在本章 5-9 中有講解。
在瀏覽器中顯示的結果:
注意:同一組的單選按鈕,name 取值一定要一致,比如上面例子為同一個名稱“radioLove”,這樣同一組的單選按鈕才可以起到單選的作用。
使用下拉列表框,節省空間
下拉列表在網頁中也常會用到,它可以有效的節省網頁空間。既可以單選、又可以多選。如下代碼:
講解:
1、value:
2、selected="selected":
設置selected="selected"屬性,則該選項就被默認選中。,如下圖顯示購物被默認選中
在瀏覽器中顯示的結果:
使用下拉列表框進行多選
值得注意:type="text" /"textarea" / "password" /"submit"(提交按鈕) /"reset"(重置按鈕)
使用重置按鈕,重置表單信息
當用戶需要重置表單信息到初始時的狀態時,比如用戶輸入“用戶名”后,發現書寫有誤,可以使用重置按鈕
使輸入框恢復到初始狀態。只需要把type設置為"reset"就可以。
語法:
<input type="reset" value="重置">
type
:只有當type值設置為reset時,按鈕才有重置作用
value
:
按鈕上顯示的文字
舉例
:
form表單中的label標簽
小伙伴們,你們在前面學習表單各種控件的時候,有沒有發現一個標簽--label,這一小節就來揭曉它的作用。
label標簽不會向用戶呈現任何特殊效果,它的作用是為鼠標用戶改進了可用性。如果你在 label 標簽內點擊文本,就會觸發此控件。就是說,當用戶單擊選中該label標簽時,瀏覽器就會自動將焦點轉到和標簽相關的表單控件上(就自動選中和該label標簽相關連的表單控件上)。
語法:
<label for="控件id名稱">
注意:標簽的 for 屬性中的值應當與相關控件的 id 屬性值一定要相同。
例子:
<form> <label for="male">男</label> <input type="radio" name="sex" id="male" /> <br /> <label for="female">女</label> <input type="radio" name="sex" id="female" /> <label for="email">輸入你的郵箱地址</label> <input type="email" id="email" placeholder="Enter email"> </form>
認識CSS樣式
CSS全稱為“層疊樣式表 (Cascading Style Sheets)”,它主要是用於定義HTML內容在瀏覽器內的顯示樣式,如文字大小、顏色、字體加粗等。
如下列代碼:
p{ font-size:12px; color:red; font-weight:bold; }
使用CSS樣式的一個好處是通過定義某個樣式,可以讓不同網頁位置的文字有着統一的字體、字號或者顏色等。
例如:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>認識CSS樣式</title>
<style type="text/css">
p{
font-size:20px;/*設置文字字號*/
color:red;/*設置文字顏色*/
font-weight:bold;/*設置字體加粗*/
}
</style>
</head>
<body>
<p>慕課網,超酷的互聯網、IT技術免費學習平台,創新的網絡一站式學習、實踐體驗;服務及時貼心,內容專業、有趣易學。專注服務互聯網工程師快速成為技術高手!</p>
</body>
</html>
CSS樣式的優勢
第一步:把這三個短語用<span></span>括起來。(見右邊代碼編輯器13
行)
第二步:寫入下列代碼:(見右邊代碼編輯器7-8
行)
span{ color:red; }
觀察結果窗口文字的顏色是否變為紅色了.如下所示:
span{
color:blue;
}
</style>
</head>
<body>
<p>慕課網,<span>超酷的互聯網</span>、IT技術免費學習平台,創新的網絡一站式學習、實踐體驗;<span>服務及時貼心</span>,內容專業、<span>有趣易學</span>。專注服務互聯網工程師快速成為技術高手!</p>
CSS代碼語法
css 樣式由選擇符和聲明組成,而聲明又由屬性和值組成,如下圖所示:
選擇符:又稱選擇器,指明網頁中要應用樣式規則的元素,如本例中是網頁中所有的段(p)的文字將變成藍色,而其他的元素(如ol)不會受到影響。
聲明:在英文大括號“{}”中的的就是聲明,屬性和值之間用英文冒號“:”分隔。當有多條聲明時,中間可以英文分號“;”分隔,如下所示:
p{font-size:12px;color:red;}
注意:
1、最后一條聲明可以沒有分號,但是為了以后修改方便,一般也加上分號。
2、為了使用樣式更加容易閱讀,可以將每條代碼寫在一個新行內,如下所示:
p{ font-size:12px; color:red;
CSS注釋代碼
就像在Html的注釋一樣,在CSS中也有注釋語句:用/*注釋語句*/
來標明(Html中使用<!--注釋語句-->
)。就像下面代碼:
內聯式css樣式,直接寫在現有的HTML標簽中
CSS樣式可以寫在哪些地方呢?從CSS 樣式代碼插入的形式來看基本可以分為以下3種:內聯式、嵌入式和外部式三種。這一小節先來講解內聯式。
內聯式
css樣式表就是把css代碼直接寫在現有的HTML標簽中,如下面代碼:
<p style="color:red">這里文字是紅色。</p>
注意要寫在元素的開始標簽里,下面這種寫法是錯誤的:
<p>這里文字是紅色。</p style="color:red">
並且css樣式代碼要寫在style=""雙引號中,如果有多條css樣式代碼設置可以寫在一起,中間用分號隔開。如下代碼:
<p style="color:red;
font-size:12px">這里文字是紅色。</p>
例如:
span{
color:red;
}
</style>
</head>
<body> 內聯式
<p>慕課網,<span style="color:blue">超酷的互聯網</span>、IT技術免費學習平台,創新的網絡一站式學習、實踐體驗;<span>服務及時貼心</span>,內容專業、<span>有趣易學</span>。專注服務互聯網工程師快速成為技術高手!</p>
外部式css樣式,寫在單獨的一個文件中
外部式css樣式(也可稱為外聯式)就是把css代碼寫一個單獨的外部文件中,這個css樣式文件以“.css
”為擴展名,在<head>內(不是在<style>標簽內)使用<link>標簽將css樣式文件鏈接到HTML文件內,如下面代碼:
<link href="base.css" rel="stylesheet" type="text/css" />
注意:
1、css樣式文件名稱以有意義的英文字母命名,如 main.css。
2、rel="stylesheet" type="text/css" 是固定寫法不可修改。
3、<link>標簽位置一般寫在<head>標簽之內。
三種方法的優先級
有的小伙伴問了,如果有一種情況:對於同一個元素我們同時用了三種方法設置css樣式,那么哪種方法真正有效呢?在右邊編輯器就出現了這種情況
1、使用內聯式
CSS設置“超酷的互聯網”文字為粉色
。
2、然后使用嵌入式
CSS來設置文字為紅色
。
3、最后又使用外部式
設置文字為藍色
(style.css文件中設置)。
但最終你可以觀察到“超酷的互聯網”這個短詞的文本被設置為了粉色
。因為這三種樣式是有優先級的,記住他們的優先級:內聯式 > 嵌入式 > 外部式
但是嵌入式>外部式有一個前提:嵌入式css樣式的位置一定在外部式的后面。如右代碼編輯器就是這樣,<link href="style.css" ...>代碼在<style type="text/css">...</style>代碼的前面(實際開發中也是這么寫的)。感興趣的小伙伴可以試一下,把它們調換順序,再看他們的優先級是否變化。
其實總結來說,就是--就近原則(離被設置元素越近優先級別越高)
。
但注意上面所總結的優先級是有一個前提:內聯式、嵌入式、外部式樣式表中css樣式是在的相同權值的情況下,什么是權值呢?在后面的9-2小節中會講解到。
html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>嵌入式css樣式</title>
<link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
span{
color:red;
}
</style>
</head>
<body> 粉紅色字體 紅色字體
<p>慕課網,<span style="color:pink">超酷的互聯網</span>、IT技術免費學習平台,創新的網絡一站式學習、實踐體驗;<span>服務及時貼心</span>,內容專業、有趣易學。專注服務互聯網工程師快速成為技術高手!</p>
</body>
</html>
什么是選擇器?
每一條css樣式聲明(定義)由兩部分組成,形式如下:
選擇器{ 樣式; }
標簽選擇器
標簽選擇器其實就是html代碼中的標簽。如右側代碼編輯器中的<html>、<body>、<h1>、<p>、<img>。例如下面代碼:
p{font-size:12px;line-height:1.6em;}
上面的css樣式代碼的作用:為p標簽設置12px字號,行間距設置1.6em的樣式。
類選擇器
語法:
.類選器名稱{css樣式代碼;}
注意:
1、英文圓點開頭
2、其中類選器名稱可以任意起名(但不要起中文噢)
<style type="text/css">
.stress{
color:red;
}
.blue{
color:blue;
}
</style>
</head>
<body>
<h1>勇氣</h1>
<p>三年級時,我還是一個<span class="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span class="stress">勇氣</span>來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</p>
<p>到了三年級下學期時,我們班上了一節<span class="blue">公開課</span>,老師提出了一個很簡單的問題,班里很多同學都舉手了,甚至成績比我差很多的,也舉手了,還說着:"我來,我來。"我環顧了四周,就我沒有舉手。</p>
D選擇器
在很多方面,ID選擇器都類似於類選擇符,但也有一些重要的區別:
1、為標簽設置id="ID名稱",而不是class="類名稱"。
2、ID選擇符的前面是井號(#)號,而不是英文圓點(.)。
右側代碼編輯器中就是一個ID選擇符的完整實例。
類和ID選擇器的區別
學習了類選擇器和ID選擇器,我們會發現他們之間有很多的相似處,是不是兩者可以通用呢?我們不要着急先來總結一下他們的相同點和不同點:
相同點:可以應用於任何元素
不同點:
1、ID選擇器只能在文檔中使用一次。與類選擇器不同,在一個HTML文檔中,ID選擇器只能使用一次,而且僅一次。而類選擇器可以使用多次。
下面代碼是正確的:
<p>三年級時,我還是一個<span class="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span class="stress">勇氣</span>來回答老師提出的問題。</p>
而下面代碼是錯誤的:
<p>三年級時,我還是一個<span id="stress">膽小如鼠</span>的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個<span id="stress">勇氣</span>來回答老師提出的問題。</p>
2、可以使用類選擇器詞列表方法為一個元素同時設置多個樣式。我們可以為一個元素同時設多個樣式,但只可以用類選擇器的方法實現,ID選擇器是不可以的(不能使用 ID 詞列表)。
下面的代碼是正確的(完整代碼見右側代碼編輯器)
.stress{ color:red; } .bigsize{ font-size:25px; } <p>到了<span class="stress bigsize">三年級</span>下學期時,我們班上了一節公開課...</p>
上面代碼的作用是為“三年級”三個文字設置文本顏色為紅色並且字號為25px。
下面的代碼是不正確的(完整代碼見右側代碼編輯器)
#stressid{ color:red; } #bigsizeid{ font-size:25px; } <p>到了<span id="stressid bigsizeid">三年級</span>下學期時,我們班上了一節公開課...</p>
上面代碼不可以實現為“三年級”三個文字設置文本顏色為紅色並且字號為25px的作用。
子選擇器
還有一個比較有用的選擇器子選擇器,即大於符號(>),用於選擇指定標簽元素的第一代子元素。如右側代碼編輯器中的代碼:
.food>li{border:1px solid red;}
這行代碼會使class名為food下的子元素li(水果、蔬菜)加入紅色實線邊框。
<style type="text/css">
.food>li{border:1px solid red;}/*添加邊框樣式(粗細為1px, 顏色為紅色的實線)*/
.first>span{border:1px solid red;} li和span就是子選擇器
</style>
</head>
<body>
<p class="first">三年級時,<span >我還是一個膽小如鼠的小女孩</span>,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個勇氣來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</p>
<h1>食物</h1> 若class="first"放在<span 后面>則不會顯示紅色框,因為他是子選擇器
<ul class="food">
<li>水果
<ul>
<li>香蕉</li>
<li>蘋果</li>
<li>梨</li>
</ul>
</li>
通用選擇器
通用選擇器是功能最強大的選擇器,它使用一個(*)號指定,它的作用是匹配html中所有標簽元素,如下使用下面代碼使用html中任意標簽元素字體顏色全部設置為紅色:
* {color:red;}
偽類選擇符
更有趣的是偽類選擇符,為什么叫做偽類選擇符,它允許給html不存在的標簽(標簽的某種狀態)設置樣式,比如說我們給html中一個標簽元素的鼠標滑過的狀態來設置字體顏色:
a:hover{color:red;}
上面一行代碼就是為 a 標簽鼠標滑過的狀態設置字體顏色變紅。這樣就會使第一段文字內容中的“膽小如鼠”文字加入鼠標滑過字體顏色變為紅色特效。
關於偽選擇符:
關於偽類選擇符,到目前為止,可以兼容所有瀏鑒器的“偽類選擇符”就是 a 標簽上使用 :hover 了(其實偽類選擇符還有很多,尤其是 css3 中,但是因為不能兼容所有瀏覽器,本教程只是講了這一種最常用的)。其實 :hover 可以放在任意的標簽上,比如說 p:hover,但是它們的兼容性也是很不好的,所以現在比較常用的還是 a:hover 的組合
分組選擇符
當你想為html中多個標簽元素設置同一個樣式時,可以使用分組選擇符(,),如下代碼為右側代碼編輯器中的h1、span標簽同時設置字體顏色為紅色:
h1,span{color:red;}
它相當於下面兩行代碼:
h1{color:red;} span{color:red;}
例如:
.first,#second span{color:green;}
.first,#second span{color:green;}
</style>
</head>
<body>
<h1>勇氣</h1>
<p class="first"><span>三年級時,我還是一個膽小如的小女孩,上課從來不敢回答老師提出的問題,生怕回答錯了老師會批評我。就一直沒有這個勇氣來回答老師提出的問題。學校舉辦的活動我也沒勇氣參加。</span></p>
<p id="second">到了三年級下學期時,我們班上了一節公開課,老師提出了一個很<span>簡單</span>的問題,班里很多同學都舉手了,甚至成績比我差很多的,也舉手了,還說着:"我來,我來。"我環顧了四周,就我沒有舉手。</p>
CSS的某些樣式是具有繼承性的,那么什么是繼承呢?繼承是一種規則,它允許樣式不僅應用於某個特定html標簽元素,而且應用於其后代。比如下面代碼:如某種顏色應用於p標簽,這個顏色設置不僅應用p標簽,還應用於p標簽中的所有子元素文本,這里子元素為span標簽。
p{color:red;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
可見右側結果窗口中p中的文本與span中的文本都設置為了紅色。但注意有一些css樣式是不具有繼承性的。如border:1px solid red;
p{border:1px solid red;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
在上面例子中它代碼的作用只是給p標簽設置了邊框為1像素、紅色、實心邊框線,而對於子元素span是沒用起到作用的。
特殊性
有的時候我們為同一個元素設置了不同的CSS樣式代碼,那么元素會啟用哪一個CSS樣式呢?我們來看一下面的代碼:
p{color:red;} .first{color:green;} <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
p和.first都匹配到了p這個標簽上,那么會顯示哪種顏色呢?green是正確的顏色,那么為什么呢?是因為瀏覽器是根據權值來判斷使用哪種css樣式的,權值高的就使用哪種css樣式。
下面是權值的規則:
標簽的權值為1,類選擇符的權值為10,ID選擇符的權值最高為100。例如下面的代碼:
p{color:red;} /*權值為1*/
p span{color:green;} /*權值為1+1=2*/
.warning{color:white;} /*權值為10*/
p span.warning{color:purple;} /*權值為1+1+10=12*/
#footer .note p{color:yellow;} /*權值為100+10+1=111*/
注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解為繼承的權值最低。
層疊
我們來思考一個問題:如果在html文件中對於同一個元素可以有多個css樣式存在並且這多個css樣式具有相同權重值怎么辦?好,這一小節中的層疊幫你解決這個問題。
層疊就是在html文件中對於同一個元素可以有多個css樣式存在,當有相同權重的樣式存在時,會根據這些css樣式的前后順序來決定,處於最后面的css樣式會被應用。
如下面代碼:
p{color:red;} p{color:green;} <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
最后 p 中的文本會設置為green,這個層疊很好理解,理解為后面的樣式會覆蓋前面的樣式。
所以前面的css樣式優先級就不難理解了:
內聯樣式表(標簽內部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)。
重要性
我們在做網頁代碼的時,有些特殊的情況需要為某些樣式設置具有最高權值,怎么辦?這時候我們可以使用!important來解決。
如下代碼:
p{color:red!important;} p{color:green;} <p class="first">三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
這時 p 段落中的文本會顯示的red紅色。
注意:!important要寫在分號的前面
這里注意當網頁制作者不設置css樣式時,瀏覽器會按照自己的一套樣式來顯示網頁。並且用戶也可以在瀏覽器中設置自己習慣的樣式,比如有的用戶習慣把字號設置為大一些,使其查看網頁的文本更加清楚。這時注意樣式優先級為:瀏覽器默認的樣式 < 網頁制作者樣式 < 用戶自己設置的樣式,但記住!important優先級樣式是個例外,權值高於用戶自己設置的樣式。
文字排版--字體
我們可以使用css樣式為網頁中的文字設置字體、字號、顏色等樣式屬性。下面我們來看一個例子,下面代碼實現:為網頁中的文字設置字體為宋體。
body{font-family:"宋體";}
現在一般網頁喜歡設置“微軟雅黑”,如下代碼:
body{font-family:"Microsoft Yahei";}
文字排版--字號、顏色
可以使用下面代碼設置網頁中文字的字號為12像素,並把字體顏色設置為#666(灰色):
body{font-size:12px;color:#666}
文字排版--粗體
我們還可以使用css樣式來改變文字的樣式:粗體、斜體、下划線、刪除線,可以使用下面代碼實現設置文字以粗體樣式顯示出來。
p span{font-weight:bold;}
文字排版--斜體
以下代碼可以實現文字以斜體樣式在瀏覽器中顯示:
p a{font-style:italic;}
文字排版--下划線
有些情況下想為文字設置為下划線樣式,這樣可以在視覺上強調文字,可以使用下面代碼來實現:
p a{text-decoration:underline;}
字排版--刪除線
如果想在網頁上設置刪除線怎么辦
上圖中的原價上的刪除線使用下面代碼就可以實現:
.oldPrice{text-decoration:line-through;}
這個88元就是設置的刪除線
段落排版--縮進
中文文字中的段前習慣空兩個文字的空白,這個特殊的樣式可以用下面代碼來實現:
p{text-indent:2em;}
注意:2em的意思就是文字的2倍大小。
段落排版--行間距(行高)
這一小節我們來學習一下另一個在段落排版中起重要作用的行間距(行高)屬性(line-height),如下代碼實現設置段落行間距為1.5倍。
p{line-height:1.5em;}
段落排版--中文字間距、字母間距
中文字間隔、字母間隔設置:
如果想在網頁排版中設置文字間隔或者字母間隔就可以使用 letter-spacing 來實現,如下面代碼:
h1{ letter-spacing:50px; } ... <h1>了不起的蓋茨比</h1>
注意:這個樣式使用在英文單詞時,是設置字母與字母之間的間距。
單詞間距設置:
如果我想設置英文單詞之間的間距呢?可以使用 word-spacing 來實現。如下代碼:
h1{ word-spacing:50px; } ... <h1>welcome to imooc!</h1>
段落排版--對齊
想為塊狀元素中的文本、圖片設置居中樣式嗎?可以使用text-align樣式代碼,如下代碼可實現文本居中顯示。(那么什么是塊狀元素呢?在后面的11-1、11-2小節中會講到。)
h1{ text-align:center; } <h1>了不起的蓋茨比</h1>
同樣可以設置居左:
h1{ text-align:left; } <h1>了不起的蓋茨比</h1>
還可以設置居右:
h1{ text-align:right; } <h1>了不起的蓋茨比</h1>
元素分類
在講解CSS布局之前,我們需要提前知道一些知識,在CSS中,html中的標簽元素大體被分為三種不同的類型:塊狀元素、內聯元素(又叫行內元素)和內聯塊狀元素。
常用的塊狀元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的內聯元素有:
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的內聯塊狀元素有:
<img>、<input>
元素分類--塊級元素
什么是塊級元素?在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是塊級元素。設置display:block
就是將元素顯示為塊級元素。如下代碼就是將內聯元素a轉換為塊狀元素,從而使a元素具有塊狀元素特點。
a{display:block;}
塊級元素特點:
1、每個塊級元素都從新的一行開始,並且其后的元素也另起一行。(真霸道,一個塊級元素獨占一行)
2、元素的高度、寬度、行高以及頂和底邊距都可設置。
3、元素寬度在不設置的情況下,是它本身父容器的100%(和父元素的寬度一致),除非設定一個寬度。
元素分類--內聯元素
在html中,<span>、<a>、<label>、<input>、 <strong> 和<em>就是典型的內聯元素(行內元素)(inline)元素。當然塊狀元素也可以通過代碼display:inline
將元素設置為內聯元素。如下代碼就是將塊狀元素div轉換為內聯元素,從而使 div 元素具有內聯元素特點。
div{ display:inline; } ...... <div>我要變成內聯元素</div>
內聯元素特點:
1、和其他元素都在一行上;
2、元素的高度、寬度及頂部和底部邊距不可設置;
3、元素的寬度就是它包含的文字或圖片的寬度,不可改變。
元素分類--內聯塊狀元素
內聯塊狀元素(inline-block)就是同時具備內聯元素、塊狀元素的特點,代碼display:inline-block
就是將元素設置為內聯塊狀元素。(css2.1新增),<img>、<input>標簽就是這種內聯塊狀標簽。
inline-block 元素特點:
1、和其他元素都在一行上;
2、元素的高度、寬度、行高以及頂和底邊距都可設置。