# 1 HTML5新特性 ## 1.1 概述 HTML5 的新增特性主要是針對於以前的不足,增加了一些新的標簽、新的表單和新的表單屬性等。 這些新特性都有相容性問題,基本是 **IE9+ 以上版本的瀏覽器**才支持,如果不考慮相容性問題,可以大量使用這些新特性。 ## 1.2 語義化標簽 (★★) ...
1 HTML5新特性
1.1 概述
HTML5 的新增特性主要是針對於以前的不足,增加了一些新的標簽、新的表單和新的表單屬性等。
這些新特性都有相容性問題,基本是 IE9+ 以上版本的瀏覽器才支持,如果不考慮相容性問題,可以大量使用這些新特性。
1.2 語義化標簽 (★★)
以前佈局,我們基本用 div 來做。div 對於搜索引擎來說,是沒有語義的。
<div class=“header”> </div>
<div class=“nav”> </div>
<div class=“content”> </div>
<div class=“footer”> </div>
發展到了HTML5後,新增了一些語義化標簽,這樣的話更加有利於瀏覽器的搜索引擎搜索,也方便了網站的seo(Search Engine Optimization,搜索引擎優化),下麵就是新增的一些語義化標簽
<header>
頭部標簽<nav>
導航標簽<article>
內容標簽<section>
定義文檔某個區域<aside>
側邊欄標簽<footer>
尾部標簽
註意:
- 這種語義化標準主要是針對搜索引擎的
- 這些新標簽頁面中可以使用多次
- 在 IE9 中,需要把這些元素轉換為塊級元素
- 其實,我們移動端更喜歡使用這些標簽
1.3 多媒體標簽
多媒體標簽分為 音頻 audio 和視頻 video 兩個標簽 使用它們,我們可以很方便的在頁面中嵌入音頻和視頻,而不再去使用落後的flash和其他瀏覽器插件了。
因為多媒體標簽的 屬性、方法、事件比較多,因此我們需要什麼功能的時候,就需要去查找相關的文檔進行學習使用。
1.3.1 視頻標簽- video(★★★)
1.3.1.1 基本使用
當前 <video>
元素支持三種視頻格式: 儘量使用 mp4格式
使用語法:
<video src="media/mi.mp4"></video>
1.3.1.2 相容寫法
由於各個瀏覽器的支持情況不同,所以我們會有一種相容性的寫法,這種寫法瞭解一下即可
<video controls="controls" width="300">
<source src="move.ogg" type="video/ogg" >
<source src="move.mp4" type="video/mp4" >
您的瀏覽器暫不支持 <video> 標簽播放視頻
</ video >
上面這種寫法,瀏覽器會匹配video標簽中的source,如果支持就播放,如果不支持往下匹配,直到沒有匹配的格式,就提示文本
1.3.1.3 video 常用屬性
屬性 | 值 | 描述 |
---|---|---|
autoplay | autoplay | 視頻就緒自動播放(谷歌瀏覽器需要添加muted來解決自動播放問題) |
controls | controls | 向用戶顯示播放控制項 |
width | pixels(像素) | 設置播放器寬度 |
height | pixels(像素) | 設置播放器高度 |
loop | loop | 播放完是否繼續播放該視頻,迴圈播放 |
preload | auto(預先載入視頻) none(不應載入視頻) |
規定是否預載入視頻(如果有了autoplay 就忽略該屬性) |
src | url | 視頻url地址 |
poster | lmgurl | 載入等待的畫面圖片 |
muted | muted | 靜音播放 |
屬性很多,有一些屬性需要大家重點掌握:
autoplay
自動播放- 註意: 在google瀏覽器上面,預設禁止了自動播放,如果想要自動播放的效果,需要設置 muted屬性
width
寬度height
高度loop
迴圈播放src
播放源muted
靜音播放
示例代碼:
<video src="media/mi.mp4" autoplay="autoplay" muted="muted" loop="loop" poster="media/mi9.jpg"></video>
1.3.2 音頻標簽- audio
1.3.2.1 基本使用
當前 元素支持三種視頻格式: 儘量使用 mp3格式
使用語法:
<audio src="media/music.mp3"></audio>
1.3.2.2 相容寫法
由於各個瀏覽器的支持情況不同,所以我們會有一種相容性的寫法,這種寫法瞭解一下即可
< audio controls="controls" >
<source src="happy.mp3" type="audio/mpeg" >
<source src="happy.ogg" type="audio/ogg" >
您的瀏覽器暫不支持 <audio> 標簽。
</ audio>
上面這種寫法,瀏覽器會匹配audio標簽中的source,如果支持就播放,如果不支持往下匹配,直到沒有匹配的格式,就提示文本
1.3.2.3 audio 常用屬性
屬性 | 值 | 描述 |
---|---|---|
autoplay | autoplay | 如果出現該屬性,則音頻在就緒後馬上播放。 |
controls | controls | 如果出現該屬性 ,則向用戶顯示控制項,比如播放按鈕。 |
loop | loop | 如果出現該屬性,則每當音頻結束時重新開始播放。 |
src | url | 要播放的音頻的 URL。 |
示例代碼:
<audio src="media/music.mp3" autoplay="autoplay" controls="controls"></audio>
1.4 小結
- 音頻標簽和視頻標簽使用方式基本一致
- 瀏覽器支持情況不同
- 谷歌瀏覽器把音頻和視頻自動播放禁止了
- 我們可以給視頻標簽添加 muted 屬性來靜音播放視頻,音頻不可以(可以通過JavaScript解決)
- 視頻標簽是重點,我們經常設置自動播放,不使用 controls 控制項,迴圈和設置大小屬性
1.5 新增的表單元素 (★★)
在H5中,幫我們新增加了很多類型的表單,這樣方便了程式員的開發
課堂案例:在這個案例中,熟練了新增表單的用法
案例代碼:
<!-- 我們驗證的時候必須添加form表單域 -->
<form action="">
<ul>
<li>郵箱: <input type="email" /></li>
<li>網址: <input type="url" /></li>
<li>日期: <input type="date" /></li>
<li>時間: <input type="time" /></li>
<li>數量: <input type="number" /></li>
<li>手機號碼: <input type="tel" /></li>
<li>搜索: <input type="search" /></li>
<li>顏色: <input type="color" /></li>
<!-- 當我們點擊提交按鈕就可以驗證表單了 -->
<li> <input type="submit" value="提交"></li>
</ul>
</form>
常見輸入類型
text password radio checkbox button file hidden submit reset image
新的輸入類型
屬性值 | 說明 |
---|---|
type="email" | 限制用戶輸入必須為Email類型 |
type="url" | 限制用戶輸入必須為URL類型 |
type="date" | 限制用戶輸入必須為日期類型 |
type="time" | 限制用戶輸入必須為時間類型 |
type="month" | 限制用戶輸入必須為月類型 |
type="week" | 限制用戶輸入必須為周類型 |
type="number" | 限制用戶輸入必須為數字類型 |
type="tel" | 手機號碼 |
type="search" | 搜索框 |
type="color" | 生成一個顏色選擇表單 |
類型很多,我們現階段重點記憶三個: number
tel
search
屬性 | 值 | 說明 |
---|---|---|
required | required | 表單擁有該屬性表示其內容不能為空,必填 |
placeholder | 提示文本 | 表單的提示信息,存在預設值將不顯示 |
autofocus | autofocus | 自動聚焦屬性,頁面載入完成自動聚焦到指定表單 |
autocomplete | off / on | 當用戶在欄位開始鍵入時,瀏覽器基於之前鍵入過的值,應該顯示出在欄位中填寫的選項。 預設已經打開,如 autocomplete="on",關閉 autocomplete="off" 需要放在表單內,同時加上 name 屬性,同時成功提交 |
multiple | multiple | 可以多選文件提交 |
可以通過以下設置方式修改placeholder裡面的字體顏色:
input::placeholder {
color: pink;
}
2 CSS3新特性
2.1 CSS3 的現狀
- 新增的CSS3特性有相容性問題,ie9+才支持
- 移動端支持優於 PC 端
- 不斷改進中
- 應用相對廣泛
- 現階段主要學習:新增選擇器和盒子模型以及其他特性
2.2 CSS3 新增選擇器
CSS3 給我們新增了選擇器,可以更加便捷,更加自由的選擇目標元素。
- 屬性選擇器
- 結構偽類選擇器
- 偽元素選擇器
2.2.1 屬性選擇器(★★)
屬性選擇器,按照字面意思,都是根據標簽中的屬性來選擇元素
選擇符 | 簡介 |
---|---|
E[att] | 選擇具有 att 屬性的 E 元素 |
E[att="val"] | 選擇具有 att 屬性且值等於 val 的 E 元素 |
E[att^="val"] | 匹配具有 att 屬性且值以開頭的 E 元素 |
E[att$="val"] | 匹配具有 att 屬性且值以 val 結尾的 E 元素 |
E[att*="val"] | 匹配具有 att 屬性且值中含有 val 的 E 元素 |
示例代碼:
/* 只選擇 type =text 文本框的input 選取出來 */
input[type=text] {
color: pink;
}
/* 選擇首先是div 然後 具有class屬性 並且屬性值 必須是 icon開頭的這些元素 */
div[class^=icon] {
color: red;
}
/* 選擇首先是section 然後 具有class屬性 並且屬性值 必須是 data結尾的這些元素 */
section[class$=data] {
color: blue;
}
- 屬性選擇器,按照字面意思,都是根據標簽中的屬性來選擇元素
- 屬性選擇器可以根據元素特定屬性的來選擇元素。 這樣就可以不用藉助於類或者id選擇器
- 屬性選擇器也可以選擇出來自定義的屬性
- 註意:類選擇器、屬性選擇器、偽類選擇器,權重為 10。
2.2.2 結構偽類選擇器
結構偽類選擇器主要根據文檔結構來選擇器元素, 常用於根據父級選擇器裡面的子元素
選擇符 | 簡介 |
---|---|
E:first-child | 匹配父元素中的第一個子元素 E |
E:last-child | 匹配父元素中最後一個 E 元素 |
E:nth-child(n) | 匹配父元素中的第 n 個子元素 E |
E:first-of-type | 指定類型 E 的第一個 |
E:last-of-type | 指定類型 E 的最後一個 |
E:nth-of-type(n) | 指定類型 E 的第 n 個 |
2.2.2.1 E:first-child
匹配父元素的第一個子元素E
<style>
ul li:first-child{
background-color: red;
}
</style>
<ul>
<li>列表項一</li>
<li>列表項二</li>
<li>列表項三</li>
<li>列表項四</li>
</ul>
E:last-child 則是選擇到了最後一個li標簽
2.2.2.2 E:nth-child(n)(★★★)
匹配到父元素的第n個元素
-
匹配到父元素的第2個子元素
ul li:nth-child(2){}
-
匹配到父元素的序號為奇數的子元素
ul li:nth-child(odd){}
odd 是關鍵字 奇數的意思(3個字母 ) -
匹配到父元素的序號為偶數的子元素
ul li:nth-child(even){}
even(4個字母 ) -
匹配到父元素的前3個子元素
ul li:nth-child(-n+3){}
選擇器中的 n 是怎麼變化的呢?
因為 n是從 0 ,1,2,3.. 一直遞增
所以 -n+3 就變成了
- n=0 時 -0+3=3
- n=1時 -1+3=2
- n=2時 -2+3=1
- n=3時 -3+3=0
- ...
一些常用的公式: 公式不是死的,在這裡列舉出來讓大家能夠找尋到這個模式,能夠理解代碼,這樣才能寫出滿足自己功能需求的代碼
公式 | 取值 |
---|---|
2n | 偶數 |
2n+1 | 奇數 |
5n | 5 10 15... |
n+5 | 從第5個開始(包含第五個)到最後 |
-n+5 | 前5個(包含第5個)... |
常用的結構偽類選擇器是: nth-child(n) {...}
2.2.2.3 E:nth-child 與 E:nth-of-type 的區別
這裡只講明 E:nth-child(n) 和 E:nth-of-type(n) 的區別 剩下的 E:first-of-type E:last-of-type E:nth-last-of-type(n) 同理做推導即可
<style>
ul li:nth-child(2){
/* 字體變成紅色 */
color: red;
}
ul li:nth-of-type(2){
/* 背景變成綠色 */
background-color: green;
}
</style>
<ul>
<li>列表項一</li>
<p>亂來的p標簽</p>
<li>列表項二</li>
<li>列表項三</li>
<li>列表項四</li>
</ul>
也就是說:
E:nth-child(n)
匹配父元素的第n個子元素E,也就是說,nth-child 對父元素裡面所有孩子排序選擇(序號是固定的) 先找到第n個孩子,然後看看是否和E匹配E:nth-of-type(n)
匹配同類型中的第n個同級兄弟元素E,也就是說,對父元素裡面指定子元素進行排序選擇。 先去匹配E ,然後再根據E 找第n個孩子
2.2.2.4 小結
- 結構偽類選擇器一般用於選擇父級裡面的第幾個孩子
- nth-child 對父元素裡面所有孩子排序選擇(序號是固定的) 先找到第n個孩子,然後看看是否和E匹配
- nth-of-type 對父元素裡面指定子元素進行排序選擇。 先去匹配E ,然後再根據E 找第n個孩子
- 關於 nth-child(n) 我們要知道 n 是從 0 開始計算的,要記住常用的公式
- 如果是無序列表,我們肯定用 nth-child 更多
- 類選擇器、屬性選擇器、偽類選擇器,權重為 10
2.2.3 偽元素選擇器(★★★)(重點)
偽元素選擇器可以幫助我們利用CSS創建新標簽元素,而不需要HTML標簽,從而簡化HTML結構
選擇符 | 簡介 |
---|---|
::before | 在元素內部的前面插入內容 |
::after | 在元素內部的後面插入內容 |
示例demo
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
}
/* div::before 權重是2 */
div::before {
/* 這個content是必須要寫的 */
content: '我';
}
div::after {
content: '小豬佩奇';
}
</style>
<body>
<div>
是
</div>
</body>
註意:
- before 和 after 創建一個元素,但是屬於行內元素
- 新創建的這個元素在文檔樹中是找不到的,所以我們稱為偽元素
- 語法: element::before {}
- before 和 after 必須有 content 屬性
- before 在父元素內容的前面創建元素,after 在父元素內容的後面插入元素
- 偽元素選擇器和標簽選擇器一樣,權重為 1
2.2.3.1 應用場景一: 字體圖標
在實際工作中,字體圖標基本上都是用偽元素來實現的,好處在於我們不需要在結構中額外去定義字體圖標的標簽,通過content屬性來設置字體圖標的 編碼
步驟:
- 結構中定義div盒子
- 在style中先申明字體 @font-face
- 在style中定義after偽元素 div::after
- 在after偽元素中 設置content屬性,屬性的值就是字體編碼
- 在after偽元素中 設置font-family的屬性
- 利用定位的方式,讓偽元素定位到相應的位置;記住定位口訣:子絕父相
<head>
...
<style>
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?1lv3na');
src: url('fonts/icomoon.eot?1lv3na#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?1lv3na') format('truetype'),
url('fonts/icomoon.woff?1lv3na') format('woff'),
url('fonts/icomoon.svg?1lv3na#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
div {
position: relative;
width: 200px;
height: 35px;
border: 1px solid red;
}
div::after {
position: absolute;
top: 10px;
right: 10px;
font-family: 'icomoon';
/* content: ''; */
content: '\e91e';
color: red;
font-size: 18px;
}
</style>
</head>
<body>
<div></div>
</body>
2.2.3.2 應用場景二: 仿土豆效果
把之前的代碼進行了改善
步驟:
- 找到之前寫過的仿土豆的結構和樣式,拷貝到自己的頁面中
- 刪除之前的mask遮罩
- 在style中,給大的div盒子(類名叫tudou的),設置 before偽元素
- 這個偽元素充當的是遮罩的角色,所以我們不用設置內容,但是需要設置content屬性,屬性的值為空字元串
- 給這個遮罩設置寬高,背景顏色,預設是隱藏的
- 當滑鼠移入到 div盒子時候,讓遮罩顯示,利用 hover 來實現
<head>
...
<style>
.tudou {
position: relative;
width: 444px;
height: 320px;
background-color: pink;
margin: 30px auto;
}
.tudou img {
width: 100%;
height: 100%;
}
.tudou::before {
content: '';
/* 隱藏遮罩層 */
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .4) url(images/arr.png) no-repeat center;
}
/* 當我們滑鼠經過了 土豆這個盒子,就讓裡面before遮罩層顯示出來 */
.tudou:hover::before {
/* 而是顯示元素 */
display: block;
}
</style>
</head>
<body>
<div class="tudou">
<img src="images/tudou.jpg" alt="">
</div>
<div class="tudou">
<img src="images/tudou.jpg" alt="">
</div>
<div class="tudou">
<img src="images/tudou.jpg" alt="">
</div>
<div class="tudou">
<img src="images/tudou.jpg" alt="">
</div>
</body>
2.2.3.3 應用場景三: 清除浮動
回憶一下清除浮動的方式:
- 額外標簽法也稱為隔牆法,是 W3C 推薦的做法。
- 父級添加 overflow 屬性
- 父級添加after偽元素
- 父級添加雙偽元素
額外標簽法也稱為隔牆法,是 W3C 推薦的做法
註意: 要求這個新的空標簽必須是塊級元素
後面兩種偽元素清除浮動算是第一種額外標簽法的一個升級和優化。
2.3 盒子模型(★★★)
CSS3 中可以通過 box-sizing 來指定盒模型,有2個值:即可指定為 content-box、border-box,這樣我們計算盒子大小的方式就發生了改變。
可以分成兩種情況:
- box-sizing: content-box 盒子大小為 width + padding + border (以前預設的)
- box-sizing: border-box 盒子大小為 width
如果盒子模型我們改為了box-sizing: border-box , 那padding和border就不會撐大盒子了(前提padding和border不會超過width寬度)
2.4 其他特性(★)
2.4.1 圖標變模糊 -- CSS3濾鏡filter
filter CSS屬性將模糊或顏色偏移等圖形效果應用於元素。
語法:
filter: 函數(); --> 例如: filter: blur(5px); --> blur模糊處理 數值越大越模糊
2.4.2 計算盒子寬度 -- calc 函數
calc() 此CSS函數讓你在聲明CSS屬性值時執行一些計算。
語法:
width: calc(100% - 80px);
括弧裡面可以使用 + - * / 來進行計算
2.5 CSS3 過渡(★★★)
過渡(transition)是CSS3中具有顛覆性的特征之一,我們可以在不使用 Flash 動畫或 JavaScript 的情況下,當元素從一種樣式變換為另一種樣式時為元素添加效果。
過渡動畫: 是從一個狀態 漸漸的過渡到另外一個狀態
可以讓我們頁面更好看,更動感十足,雖然 低版本瀏覽器不支持(ie9以下版本) 但是不會影響頁面佈局。
我們現在經常和 :hover 一起 搭配使用。
語法:
transition: 要過渡的屬性 花費時間 運動曲線 何時開始;
- 屬性 : 想要變化的 css 屬性, 寬度高度 背景顏色 內外邊距都可以 。如果想要所有的屬性都變化過渡, 寫一個all 就可以。
- 花費時間: 單位是 秒(必須寫單位) 比如 0.5s
- 運動曲線: 預設是 ease (可以省略)
- 何時開始:單位是 秒(必須寫單位)可以設置延遲觸發時間 預設是 0s (可以省 略)
- 後面兩個屬性可以省略
- 記住過渡的使用口訣: 誰做過渡給誰加
2.5.1 過渡練習
步驟:
- 創建兩個div的盒子,屬於的嵌套關係,外層類名叫 bar,裡層類名叫 bar_in
- 給外層的bar 這個盒子設置邊框,寬高,圓角邊框
- 給裡層的bar_in 設置 初試的寬度,背景顏色,過渡效果
- 給外層的 bar 添加 hover事件,當觸發了hover事件 讓裡層的bar_in 來進行寬度的變化
代碼:
<head>
...
<style>
.bar {
width: 150px;
height: 15px;
border: 1px solid red;
border-radius: 7px;
padding: 1px;
}
.bar_in {
width: 50%;
height: 100%;
background-color: red;
/* 誰做過渡給誰加 */
transition: all .7s;
}
.bar:hover .bar_in {
width: 100%;
}
</style>
</head>
<body>
<div class="bar">
<div class="bar_in"></div>
</div>
</body>
3 廣義H5說法 瞭解
3.1 狹隘H5
3.2 廣義H5
- 廣義的 HTML5 是 HTML5 本身 + CSS3 + JavaScript 。
- 這個集合有時稱為 HTML5 和朋友,通常縮寫為 HTML5 。
- 雖然 HTML5 的一些特性仍然不被某些瀏覽器支持,但是它是一種發展趨勢。
- HTML5 MDN 介紹:
https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/HTML
4 Web伺服器
4.1 什麼是Web伺服器
伺服器(我們也會稱之為主機)是提供計算服務的設備,它也是一臺電腦。在網路情況下,根據伺服器提供的服務類型不同,伺服器又分為文件伺服器、資料庫伺服器、應用程式伺服器、Web伺服器等。
Web伺服器一般指網站伺服器,是指駐留於網際網路上某種類型電腦的程式,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。
根據伺服器在網路中所在的位置不同,又可分為本地伺服器和遠程伺服器。
4.2 遠程伺服器
遠程伺服器是通常是別的公司為我們提供的一臺電腦(主機),我們只要把網站項目上傳到這臺電腦上,任何人都可以利用功能變數名稱訪問我們的網站。
比如功能變數名稱:www.mi.com 可以訪問小米網站
總結:
1. 伺服器就是一臺電腦。因為我們主要是做網站,所以我們主要使用wb伺服器。
2. 伺服器可以分為本地伺服器和遠程伺服器。
3. 遠程伺服器是別的公司為我們提供了一臺電腦。
4. 我們可以把網站上傳到遠程伺服器裡面,別人就可以通過功能變數名稱訪問我們的網站了。
4.3 將自己的網站上傳到遠程伺服器
一個免費的遠程伺服器(免費空間) http://free.3v.do/
1. 去免費空間網站註冊賬號。
2. 記錄下主機名、用戶名、密碼、功能變數名稱。
3. 利用 cutftp 軟體 上傳網站到遠程伺服器。
4. 在瀏覽器中輸入功能變數名稱,即可訪問我們的網站。