HTML5/CSS簡介css
首先來講一說什麼是HTML5,HTML5能夠認爲是字面上的意義,也就是HTML的第五代產品,固然從另外一個角度來講它是一種新的富客戶端解決方案。
html
HTML5 將成爲 HTML、XHTML 以及 HTML DOM 的新標準。html5
HTML 的上一個版本誕生於 1999 年。自從那之後,Web 世界已經經歷了鉅變。css3
HTML5 仍處於完善之中。然而,大部分現代瀏覽器已經具有了某些 HTML5 支持。git
HTML:超文本標記語言。標記能夠稱爲標籤,節點,元素等。github
HTML的核心是它的語義,也就是標籤自己的含義。咱們再寫結構的時候只須要注重標籤的語義而無需考慮標籤的樣式。web
再寫頁面的時候,HTML、CSS、JS各有各的用處,HTML負責網頁的結構,CSS負責網頁的美化渲染,JavaScript負責用戶與網頁的交互。瀏覽器
寫頁面以前,主體結構必定要了解。安全
CSSpost
層疊樣式表,它的核心是層疊,咱們看到的最終效果每每不是一個CSS就能搞定的,它都是不少的CSS樣式疊加才造成了用戶最終看到的界面。
CSS的使用方式:
內聯樣式:直接寫在行內,以style屬性將樣式直接寫在元素上。
內部樣式:寫在<style>標籤中的樣式,經過選擇器選擇頁面上的元素進行樣式的添加。
外部樣式:寫在CSS文件中,經過link標籤進行調用。
三種方式中,內聯樣式的優先級是最高的,另外兩隻優先級相同。寫在頁面中,優先級相同則寫在後面的會覆蓋前面的樣式。(建議使用外部樣式,寫頁面的時候要儘可能作到結構與樣式相分離,也就是頁面結構,CSS樣式最好不要放到一塊兒)
網頁的主體結構
<!DOCTYPE html> 文檔聲明頭,主要是用來聲明代碼是H5的,若是不寫的話,代碼會被瀏覽器降級處理。
<html> 網頁的所有
<head> 用來寫對當前網頁的一些設置信息,這些內容是用戶看不到的
<meta charset="utf=8"> 設置網頁的字符集
<body> 網頁的主體,再頁面上顯示的內容基本上都在這裏
支持Html5的瀏覽器包括Firefox
(火狐瀏覽器),IE9
及其更高版本,Chrome
(谷歌瀏覽器),Safari
,Opera
等;國內的 遨遊瀏覽器(Maxthon
),以及基於IE
或Chromium
(Chrome
的工程版或稱實驗版)所推出的360瀏覽器
、搜狗瀏覽器
、QQ瀏覽器
、獵豹瀏覽器
等國產瀏覽器一樣具有支持HTML5的能力。
須要注意的是,雖然不少瀏覽器目前已經可以支持HTML5
,可是顯示效果仍舊存在差別性。這時,咱們若是從樣式的角度出發,能夠採用下面的幾種css
方案。
CSS Reset
每種瀏覽器都有一套默認的樣式表,即user agent stylesheet
,網頁在沒有指定的樣式時,按瀏覽器內置的樣式表來渲染。這是合理的,像word
中也有一些預留樣式,可讓咱們的排版更美觀整齊。不一樣瀏覽器甚至同一瀏覽器不一樣版本的默認樣式是不一樣的。但這樣會有不少兼容問題,CSSReset
能夠將全部瀏覽器默認樣式設置成同樣。
CSS Reset 下載地址: https://meyerweb.com/eric/tools/css/reset/
Normalize
(號稱是CSS reset
的替代方案,保留了一些內置的樣式,並非清除全部)。
CSS Hack
因爲不一樣廠商的流覽器或某瀏覽器的不一樣版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),對CSS
的支持、解析不同,致使在不一樣瀏覽器的環境中呈現出不一致的頁面展示效果。這時,咱們爲了得到統一的頁面效果,就須要針對不一樣的瀏覽器或不一樣版本寫特定的CSS
樣式,咱們把這個針對不一樣的瀏覽器/不一樣版本寫相應的CSS code
的過程,叫作CSS hack
!
分類:
CSS Hack大體有3種表現形式,CSS屬性前綴法
、選擇器前綴法
以及IE條件註釋法
(即HTML頭部引用if IE)Hack,實際項目中CSS Hack大部分是針對IE瀏覽器不一樣版本之間的表現差別而引入的。
"_"
和星號" * ",IE7能識別星號" * ",但不能識別下劃線"_",IE6~IE10都認識"\9",但firefox
前述三個都不能認識。IE6
能識別*html .class{}
,IE7
能識別*+html .class{}
或者*:first-child+html .class{}
。
關於IE的條件註釋能夠參考https://www.cnblogs.com/liujunhang/articles/10667109.html.
CSS hack書寫順序,通常是將適用範圍廣、被識別能力強的CSS定義在前面。
屬性前綴法:
屬性前綴法是在CSS樣式屬性名前加上一些只有特定瀏覽器才能識別的hack前綴,以達到預期的頁面展示效果。
IE瀏覽器各版本 CSS hack 對照表
hack | 寫法 | 實例 | IE6(S) | IE6(Q) | IE7(S) | IE7(Q) | IE8(S) | IE8(Q) | IE9(S) | IE9(Q) | IE10(S) | IE10(Q) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
* | *color | 青色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
+ | +color | 綠色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
- | -color | 黃色 | Y | Y | N | N | N | N | N | N | N | N |
_ | _color | 藍色 | Y | Y | N | Y | N | Y | N | Y | N | N |
# | #color | 紫色 | Y | Y | Y | Y | N | Y | N | Y | N | Y |
\0 | color:red\0 | 紅色 | N | N | N | N | Y | N | Y | N | Y | N |
\9\0 | color:red\9\0 | 粉色 | N | N | N | N | N | N | Y | N | Y | N |
!important | color:blue !important;color:green; | 棕色 | N | N | Y | N | Y | N | Y | N | Y | Y |
說明:在標準模式中
選擇器前綴法:
選擇器前綴法是針對一些頁面表現不一致或者須要特殊對待的瀏覽器,在CSS選擇器前加上一些只有某些特定瀏覽器才能識別的前綴進行hack。
目前最多見的是
*html *前綴只對IE6生效 *+html *+前綴只對IE7生效 @media screen\9{...}只對IE6/7生效 @media \0screen {body { background: red; }}只對IE8有效 @media \0screen\,screen\9{body { background: blue; }}只對IE6/7/8有效 @media screen\0 {body { background: green; }} 只對IE8/9/10有效 @media screen and (min-width:0\0) {body { background: gray; }} 只對IE9/10有效 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只對IE10有效 等等
CSS Hack利弊:
通常狀況下,咱們儘可能避免使用CSS hack
,可是有些狀況爲了顧及用戶體驗實現向下兼容,不得已才使用hack
。好比因爲IE8
及如下版本不支持CSS3
,而咱們的項目頁面使用了大量CSS3
新屬性在IE9/Firefox/Chrome
下正常渲染,這種狀況下若是不使用css3pie或htc或條件註釋等方法時,可能就得讓IE8-
的專屬hack
出馬了。使用hack
雖然對頁面表現的一致性有好處,但過多的濫用會形成html文檔混亂不堪,增長管理和維護的負擔。
優雅降級和漸進加強:
因爲低級瀏覽器不支持 CSS3,可是 CSS3 特效太優秀不忍放棄,因此在高級瀏覽器中使用CSS3,而在低級瀏覽器只保證最基本的功能。兩者的目的都是關注不一樣瀏覽器下的不一樣體驗,可是它們側重點不一樣,因此致使了工做流程上的不一樣。
漸進加強(Progressive Enhancement):一開始就針對低版本瀏覽器進行構建頁面,完成基本的功能,而後再針對高級瀏覽器進行效果、交互、追加功能達到更好的體驗。
優雅降級(Graceful Degradation):一開始就構建站點的完整功能,而後針對瀏覽器測試和修復。好比一開始使用 CSS3 的特性構建了一個應用,而後逐步針對各大瀏覽器進行 hack 使其能夠在低版本瀏覽器上正常瀏覽。
第三方插件:
關於兼容性問題,除了上述的解決方案外,還能夠經過使用第三方的插件來解決兼容性問題。
我的筆記
關於一些標籤的使用咱們能夠經過一些網站進行查詢,能夠去國內較爲完善的W3cschool進行了解。
下面是一些零碎的知識點:
get和post的區別(get和post都是表單的屬性method的屬性值,method是表單提交數據的方式):
一、get的傳輸方式的傳輸速度快,而post的傳輸速度就比較慢。
二、get的安全程度低,post的安全程度則是相對較高。
三、get的傳輸數據小,post能夠傳輸的數據比較大。
百度的搜索內容通常就是用get的方式提交,而一些比較隱私的,例如帳號登陸時的數據提交用的是post。get和post本質沒有什麼區別,只不過get傳輸時是直接傳輸過去,而post則是先發起請求,等待響應返回以後纔會開始傳輸數據,因此纔有了以上的區別。
選擇器生效的一些注意點:
權重的比較方式:ID選擇器的權重最高,類選擇器其次,元素選擇器最低。
對比時,兩個選擇器,一個有ID選擇器,一個沒有,則無論後面有多少個類或者元素都沒有ID選擇器的高。
在直接選中的狀況下,權重的生效,權重相同則是後面的會覆蓋前面的樣式;
在兩個選擇器都沒有選中的狀況下,哪個更精確,那個就能生效;
兩個都沒選中並且精確度也是一樣的狀況下,仍是比較權重。
在CSS中標籤的等級大體分類:
塊級元素:
一、獨佔一行;
二、能夠設置其寬高;
三、不設置寬度,寬度則默認是100%;
四、能夠當作容器使用。
行內元素:
能夠和其餘行內元素並排顯示;
不能設置寬高,內容寬度爲其寬度,行高爲其高度。
行內塊元素:
其既能夠設置寬高,又能夠和其餘元素並列一行(非塊元素)。ps:表單中的input是行內塊元素
標準文檔流:
瀏覽器的解析方式,從上到下、從左到右。
文本流:
網頁中的文本內容。
脫離標準文檔流的方式:
浮動,絕對定位,固定定位等。
元素浮動後會造成字圍效果,是由於其只是脫離了標準文檔流,可是沒脫離文本流。
子元素所有浮動以後父元素的高度會變成零。
咱們通常用有如下幾種方法解決:
一、.clearfix{*zoom=1;}.clearfix:before,.clearfix:after{context:" ";display:table;}.clearfix:after{clear:both}(給父元素一個.clearfix的類名,將其放入樣式中能夠解決浮動的問題)
二、直接設置父元素的高度
三、父元素設置樣式:overflow:hidder;
四、隔牆法:再浮動的元素父元素後面寫一個div,給這個div加上clear:both的屬性,也就是浮動效果清除的屬性