HTML5和CSS3是在1.0和CSS以後推出的一種技術。主要面向移動端的開發。javascript
HTML5和CSS3推出的目的就比較有野心了,它的目的是要取代目前主流的兩大移動平臺上的APP應用程序。css
你們都知道,蘋果的IOS平和咱們常用的安卓平臺徹底不同。所以,你要開發一個在蘋果手機IOS平臺上運行的一個APP,須要專門的IOS程序員,可是這個IOS的程序員只能開發蘋果平臺的,安卓平臺的他不會開發。一樣的,你要開發一個在安卓手機上運行的一個APP,就須要一個安卓程序員。那麼問題來了,一個公司要開發一款APP,由於如今是蘋果和安卓的天下,因此須要一款蘋果端的APP,安卓端的呢,也須要一個。這樣的話公司要開發出這款手機軟件須要聘請兩個團隊,這無疑就大大增長了公司的運營成本。html
HTML5和CSS3就是想要成爲一款跨平臺的APP開發技術,不管是蘋果的IOS平臺,仍是谷歌的安卓平臺,我都有能力搞定,我呢,只須要開發一次就能同時擁有兩個平臺的APP應用程序,要是能作到這種程度的話,IOS和安卓程序開發人員就不須要了!!前端
1. 應用程序可使用HTML5和CSS3的頁面。html5
2.主流瀏覽器裏能夠看HTML5和CSS3的頁面。java
3.微信平臺裏能夠看HTML5和CSS3的頁面。程序員
4.原生IOS和安卓應用程序裏面也能夠嵌入HTML5和CSS3的頁面。(就至關於程序員只是作了外面的一個殼,裏面呢仍是HTML5和CSS3的東西。)web
CSS權重指的是樣式的優先級,有兩條或多條樣式做用於一個元素,權重高的那條樣式對元素起做用,權重相同的,後寫的樣式會覆蓋前面寫的樣式。瀏覽器
能夠把樣式的應用方式分爲幾個等級,按照等級來計算權重微信
一、!important,加在樣式屬性值後,權重值爲 10000
二、內聯樣式,如:style=」」,權重值爲1000
三、ID選擇器,如:#content,權重值爲100
四、類,僞類和屬性選擇器,如: .content、:hover 權重值爲10
五、標籤選擇器和僞元素選擇器,如:div、p、權重值爲1
六、通用選擇器(*)、子選擇器(>)、相鄰選擇器(+)、同胞選擇器(~)、權重值爲0
權重案例:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 div{ 8 width: 100px; 9 height: 100px; 10 background-color: red !important; 11 } 12 13 div{ 14 width: 100px; 15 height: 100px; 16 background-color: blue; 17 } 18 19 20 </style> 21 </head> 22 <body> 23 <div></div> 24 </body> 25 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .red{ 8 width: 100px; 9 height: 100px; 10 background-color: red; 11 } 12 13 div{ 14 width: 100px; 15 height: 100px; 16 background-color: blue; 17 } 18 19 20 </style> 21 </head> 22 <body> 23 <div class="red"></div> 24 </body> 25 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 #lan{ 8 width: 100px; 9 height: 100px; 10 background-color: blue; 11 } 12 13 .red{ 14 width: 100px; 15 height: 100px; 16 background-color: red; 17 } 18 19 20 21 22 </style> 23 </head> 24 <body> 25 <div class="red" id="lan"></div> 26 </body> 27 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 #lan{ 8 width: 100px; 9 height: 100px; 10 background-color: blue; 11 } 12 13 14 </style> 15 </head> 16 <body> 17 <div id="lan" style="width:400px;height:400px;background:red"></div> 18 </body> 19 </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #lan{ width: 100px; height: 100px; background-color: blue !important; } </style> </head> <body> <div id="lan" style="width:400px;height:400px;background:red"></div> </body> </html>
一、E:nth-child(n):匹配元素類型爲E且是父元素的第n個子元素
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 li{ 8 background-color: yellow; 9 margin-bottom: 10px; 10 } 11 12 li:nth-child(2){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <ul> 20 <li>1</li> 21 <li>2</li> 22 <li>3</li> 23 <li>4</li> 24 <li>5</li> 25 <li>6</li> 26 <li>7</li> 27 <li>8</li> 28 <li>9</li> 29 30 </ul> 31 </body> 32 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-child(5){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <div>5</div> 25 <div>6</div> 26 <div>7</div> 27 <div>8</div> 28 <div>9</div> 29 </div> 30 </body> 31 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-child(2n){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <div>5</div> 25 <div>6</div> 26 <div>7</div> 27 <div>8</div> 28 <div>9</div> 29 </div> 30 </body> 31 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-child(2n+1){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <div>5</div> 25 <div>6</div> 26 <div>7</div> 27 <div>8</div> 28 <div>9</div> 29 </div> 30 </body> 31 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-child(5){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <p>寶寶今天很開心</p> 25 <div>5</div> 26 <div>6</div> 27 <div>7</div> 28 <div>8</div> 29 <div>9</div> 30 </div> 31 </body> 32 </html>
匹配原則:
E:nth-child(n)會先尋找選擇範圍內的第n個孩子,找到後再比較是否是元素E,若是是,則匹配成功增長樣式;若不是,則匹配失敗效果沒法顯示。
(與E:nth-of-type(n)對比學習)
二、E:nth-last-child(n):匹配元素類型爲E且是父元素的倒數第n個子元素(與上一項順序相反)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-last-child(3){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <div>5</div> 25 <div>6</div> 26 <div>7</div> 27 <div>8</div> 28 <div>9</div> 29 </div> 30 </body> 31 </html>
三、E:first-child:匹配元素類型爲E且是父元素的第一個子元素
四、E:last-child:匹配元素類型爲E且是父元素的最後一個子元素
五、E:nth-of-type(n):匹配父元素的第n個類型爲E的子元素
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box div{ 8 background-color: gold; 9 margin-bottom: 10px; 10 } 11 12 .box div:nth-of-type(5){ 13 background-color: red; 14 } 15 16 </style> 17 </head> 18 <body> 19 <div class="box"> 20 <div>1</div> 21 <div>2</div> 22 <div>3</div> 23 <div>4</div> 24 <p>寶寶今天很開心</p> 25 <p>寶寶今天很開心</p> 26 <p>寶寶今天很開心</p> 27 <div>5</div> 28 <div>6</div> 29 <div>7</div> 30 <div>8</div> 31 <div>9</div> 32 </div> 33 </body> 34 </html>
匹配原則:
E:nth-of-type(n)會直接尋找第n個E標籤,若是前面有其餘非E標籤,則直接跳過,繼續尋找。
注意:
若是子元素的標籤都相同,則E:nth-child(n)與 E:nth-of-type(n)效果相同,如子元素內摻雜了其它多餘元素,則會體現不一樣種效果。
六、E:nth-last-of-type(n):匹配父元素的倒數第n個類型爲E的子元素(與上一項順序相反)
七、E:first-of-type:匹配父元素的第一個類型爲E的子元素
八、E:last-of-type:匹配父元素的最後一個類型爲E的子元素
設置某一個角的圓角,好比設置左上角的圓角:
border-top-left-radius:30px 60px;
同時分別設置四個角:
border-radius:30px 60px 120px 150px;
設置四個圓角相同:
border-radius:50%;
box-shadow:h-shadow v-shadow blur spread color inset;
分別設置陰影:水平偏移 垂直偏移 羽化大小 陰影大小 顏色 是否內陰影
1 <style type="text/css"> 2 .box{ 3 width:200px; 4 height:50px; 5 background-color:gold; 6 /* box-shadow:10px 10px 5px 2px pink inset; */ 7 box-shadow:10px 10px 5px 2px pink; 8 } 9 </style> 10 ...... 11 12 13 <div class="box"></div>
一、盒子透明度表示法:opacity:0.1;filter:alpha(opacity=10)(兼容IE);
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 div{ 8 width: 200px; 9 height: 200px; 10 background-color: gold; 11 opacity:0.1; 12 13 } 14 15 16 </style> 17 </head> 18 <body> 19 <div>你好</div> 20 </body> 21 </html>
二、rgba(0,0,0,0.1) 前三個數值表示顏色,第四個數值表示顏色的透明度
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 div{ 8 width: 200px; 9 height: 200px; 10 background-color: gold; 11 background-color: rgba(255,215,0,0.4); 12 13 } 14 15 16 </style> 17 </head> 18 <body> 19 <div>你好</div> 20 </body> 21 </html>
一、transition-property 設置過渡的屬性,好比:width height background-color
二、transition-duration 設置過渡的時間,好比:1s 500ms
三、transition-timing-function 設置過渡的運動方式
四、transition-delay 設置動畫的延遲
五、transition: property duration timing-function delay 同時設置四個屬性
舉例:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box{ 8 width: 100px; 9 height: 100px; 10 background-color: gold; 11 transition:width 10s ease-in; 12 } 13 14 .box:hover{ 15 width: 500px; 16 } 17 18 19 20 </style> 21 </head> 22 <body> 23 <div class="box"></div> 24 </body> 25 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box{ 8 width: 100px; 9 height: 100px; 10 background-color: gold; 11 transition:height 10s ease-in; 12 } 13 14 .box:hover{ 15 height: 500px; 16 } 17 18 19 20 </style> 21 </head> 22 <body> 23 <div class="box"></div> 24 </body> 25 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box{ 8 width: 100px; 9 height: 100px; 10 background-color: gold; 11 transition:width 10s ease-in,height 10s ease-in; 12 } 13 14 .box:hover{ 15 width: 500px; 16 height: 500px; 17 } 18 19 20 21 </style> 22 </head> 23 <body> 24 <div class="box"></div> 25 </body> 26 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box{ 8 width: 100px; 9 height: 100px; 10 background-color: gold; 11 transition:width 10s ease-in,height 10s ease-in,background-color 10s; 12 } 13 14 .box:hover{ 15 width: 500px; 16 height: 500px; 17 background-color: red; 18 } 19 20 21 22 </style> 23 </head> 24 <body> 25 <div class="box"></div> 26 </body> 27 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 .box{ 8 width: 100px; 9 height: 100px; 10 background-color: gold; 11 transition:width 10s ease-in,height 10s ease-in,background-color 10s ease-in ,border-radius 10s ease; 12 } 13 14 .box:hover{ 15 width: 500px; 16 height: 500px; 17 background-color: red; 18 border-radius: 50%; 19 } 20 21 22 23 </style> 24 </head> 25 <body> 26 <div class="box"></div> 27 </body> 28 </html>
h5新增的主要語義化標籤以下:
一、header 頁面頭部、頁眉
二、nav 頁面導航
三、article 一篇文章
四、section 文章中的章節
五、aside 側邊欄
六、footer 頁面底部、頁腳
頁面使用標籤佈局示意圖:
PC端兼容h5的新標籤的方法,在頁面中引入如下js文件:
<script type="text/javascript" src="//cdn.bootcss.com/html5shiv/r29/html5.js"></script>
新增類型:網址 郵箱 日期 時間 星期 數量 範圍 電話 顏色 搜索
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <form> 9 <label>網址:</label><input type="url" name="" required><br><br> 10 <label>郵箱:</label><input type="email" name="" required><br><br> 11 <label>日期:</label><input type="date" name=""><br><br> 12 <label>時間:</label><input type="time" name=""><br><br> 13 <label>星期:</label><input type="week" name=""><br><br> 14 <label>數量:</label><input type="number" name=""> <br><br> 15 <label>範圍:</label><input type="range" name=""><br><br> 16 <label>電話:</label><input type="tel" name=""><br><br> 17 <label>顏色:</label><input type="color" name=""><br><br> 18 <label>搜索:</label><input type="search" name=""><br><br> 19 <input type="submit" value="提交"> 20 </form> 21 </body> 22 </htm
新增經常使用表單控件屬性:
一、placeholder 設置文本框默認提示文字
1 <input type="text" placeholder="請輸入用戶名">
二、autofocus 自動得到焦點
1 <input type="text" placeholder="請輸入用戶名" autofocus="">
三、autocomplete 聯想關鍵詞
案例查看百度搜索框
html5增長了audio和video標籤,提供了在頁面上插入音頻和視頻的標準方法。
audio標籤
支持格式:ogg、wav、mp3
對應屬性:
一、autoplay 自動播放
二、controls 顯示播放器
三、loop 循環播放
四、preload 預加載
五、muted 靜音
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <audio src="beishui.mp3" controls autoplay loop preload muted></audio> 9 </body> 10 </html>
video標籤
支持格式:ogg、mp四、webM
屬性:
一、width
二、height
三、Poster
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 8 video{ 9 width: 800px; 10 height: 800px; 11 } 12 13 14 </style> 15 </head> 16 <body> 17 <video src="lunhui.mp4" controls loop preload poster="lunhui.jpg"></video> 18 </body> 19 </html>
一、Native App 原生app手機應用程序
使用原生的語言開發的手機應用,Android系統用的是java,iOS系統用的是object-C
二、Hybrid App 混合型app手機應用程序
混合使用原生的程序和html5頁面開發的手機應用
三、Web App 基於Web的app手機應用程序
徹底使用html5頁面加前端js框架開發的手機應用
視口是移動設備上用來顯示網頁的區域,通常會比移動設備可視區域大,寬度多是980px或者1024px,目的是爲了顯示下整個爲PC端設計的網頁,這樣帶來的後果是移動端會出現橫向滾動條,爲了不這種狀況,移動端會將視口縮放到移動端窗口的大小。這樣會讓網頁不容易觀看,能夠用 meta 標籤,name=「viewport 」 來設置視口的大小,將視口的大小設置爲和移動設備可視區同樣的大小。
pc端與移動端渲染網頁過程:
設置方法以下:
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 快捷鍵爲:meta:vp
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 6 <title>Document</title> 7 <style> 8 *{ 9 padding: 0; 10 margin: 0; 11 } 12 div{ 13 14 height: 30px; 15 background-color: pink; 16 font-size: 20px; 17 text-align: center; 18 line-height: 30px; 19 20 } 21 22 </style> 23 </head> 24 <body> 25 <div>你們好</div> 26 27 </body> 28 </html>
視網膜屏幕指的是屏幕的物理像素密度更高的屏幕,物理像素能夠理解爲屏幕上的一個發光點,無數發光的點組成的屏幕,視網膜屏幕比通常屏幕的物理像素點更小,常見有2倍的視網膜屏幕和3倍的視網膜屏幕,2倍的視網膜屏幕,它的物理像素點大小是通常屏幕的1/4,3倍的視網膜屏幕,它的物理像素點大小是通常屏幕的1/9。
圖像在視網膜屏幕上顯示的大小和在通常屏幕上顯示的大小同樣,可是因爲視網膜屏幕的物理像素點比通常的屏幕小,圖像在上面好像是被放大了,圖像會變得模糊,爲了解決這個問題,可使用比原來大一倍的圖像,而後用css樣式強制把圖像的尺寸設爲原來圖像尺寸的大小,就能夠解決模糊的問題。
清晰度解決過程示意圖:
background新屬性
background-size:
設備屏幕有多種不一樣的分辨率,頁面適配方案有以下幾種:
一、全適配:流體佈局+響應式佈局
二、移動端適配:
流體佈局,就是使用百分比來設置元素的寬度,元素的高度按實際高度寫固定值,流體佈局中,元素的邊線沒法用百分比,使用 box-sizing 屬性將盒子設置爲從邊線計算盒子尺寸。
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 6 <title>Document</title> 7 8 <style> 9 *{ 10 padding: 0; 11 margin: 0; 12 } 13 ul{ 14 height: 50px; 15 background-color: gold; 16 } 17 18 li{ 19 width: 25%; 20 height: 50px; 21 float: left; 22 text-align: center; 23 line-height: 50px; 24 list-style: none; 25 } 26 27 </style> 28 </head> 29 <body> 30 <ul> 31 <li>新聞</li> 32 <li>新聞</li> 33 <li>新聞</li> 34 <li>新聞</li> 35 </ul> 36 </body> 37 </html>
box-sizing
一、content-box 默認的盒子尺寸計算方式
二、border-box 置盒子的尺寸計算方式爲從邊框開始,盒子的尺寸,邊框和內填充算在盒子尺寸內
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 6 <title>Document</title> 7 8 <style> 9 *{ 10 padding: 0; 11 margin: 0; 12 } 13 ul{ 14 height: 50px; 15 background-color: gold; 16 } 17 18 li{ 19 width: 25%; 20 height: 50px; 21 float: left; 22 text-align: center; 23 line-height: 50px; 24 list-style: none; 25 border: 2px solid red; 26 } 27 28 </style> 29 </head> 30 <body> 31 <ul> 32 <li>新聞</li> 33 <li>新聞</li> 34 <li>新聞</li> 35 <li>新聞</li> 36 </ul> 37 </body> 38 </html>
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 6 <title>Document</title> 7 8 <style> 9 *{ 10 padding: 0; 11 margin: 0; 12 } 13 ul{ 14 height: 50px; 15 background-color: gold; 16 } 17 18 li{ 19 width:25%; 20 height: 50px; 21 float: left; 22 text-align: center; 23 line-height: 50px; 24 list-style: none; 25 border: 2px solid red; 26 box-sizing:border-box;/*盒子的邊框從邊框開始算起 */ } 27 28 </style> 29 </head> 30 <body> 31 <ul> 32 <li>新聞</li> 33 <li>新聞</li> 34 <li>新聞</li> 35 <li>新聞</li> 36 </ul> 37 </body> 38 </html>
響應式佈局就是使用媒體查詢的方式,經過查詢瀏覽器寬度,不一樣的寬度應用不一樣的樣式塊,每一個樣式塊對應的是該寬度下的佈局方式,從而實現響應式佈局。響應式佈局的頁面能夠適配多種終端屏幕(pc、平板、手機)。
相應佈局的僞代碼以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ padding: 0; margin: 0; } li{ width: 23%; height: 209px; background-color: gold; float: left; margin-left: 2%; list-style: none; } @media(max-width: 800px){ li{ width: 46%; height: 209px; margin-bottom: 20px; } } @media(max-width: 400px){ li{ width: 96%; height: 209px; margin-bottom: 20px; } } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </body> </html>