Web前端基礎學習-1

来源:https://www.cnblogs.com/h-kj9527/archive/2019/08/24/11403783.html
-Advertisement-
Play Games

HTML5/CSS簡介 首先來說一說什麼是HTML5,HTML5可以認為是字面上的意義,也就是HTML的第五代產品,當然從另一個角度來說它是一種新的富客戶端解決方案。 HTML5 將成為 HTML、XHTML 以及 HTML DOM 的新標準。 HTML 的上一個版本誕生於 1999 年。自從那以後 ...


HTML5/CSS簡介

首先來說一說什麼是HTML5,HTML5可以認為是字面上的意義,也就是HTML的第五代產品,當然從另一個角度來說它是一種新的富客戶端解決方案。

 

HTML5 將成為 HTML、XHTML 以及 HTML DOM 的新標準。

 

HTML 的上一個版本誕生於 1999 年。自從那以後,Web 世界已經經歷了巨變。

 

HTML5 仍處於完善之中。然而,大部分現代瀏覽器已經具備了某些 HTML5 支持。

 

HTML:超文本標記語言。標記可以稱為標簽,節點,元素等。

HTML的核心是它的語義,也就是標簽本身的含義。我們再寫結構的時候只需要註重標簽的語義而無需考慮標簽的樣式。

再寫頁面的時候,HTML、CSS、JS各有各的用處,HTML負責網頁的結構,CSS負責網頁的美化渲染,JavaScript負責用戶與網頁的交互。

寫頁面之前,主體結構一定要瞭解。

CSS

層疊樣式表,它的核心是層疊,我們看到的最終效果往往不是一個CSS就能搞定的,它都是很多的CSS樣式疊加才形成了用戶最終看到的界面。

CSS的使用方式:

內聯樣式:直接寫在行內,以style屬性將樣式直接寫在元素上。

內部樣式:寫在<style>標簽中的樣式,通過選擇器選擇頁面上的元素進行樣式的添加。

外部樣式:寫在CSS文件中,通過link標簽進行調用。

三種方式中,內聯樣式的優先順序是最高的,另外兩隻優先順序相同。寫在頁面中,優先順序相同則寫在後面的會覆蓋前面的樣式。(建議使用外部樣式,寫頁面的時候要儘量做到結構與樣式相分離,也就是頁面結構,CSS樣式最好不要放到一起)

網頁的主體結構

<!DOCTYPE html> 文檔聲明頭,主要是用來聲明代碼是H5的,如果不寫的話,代碼會被瀏覽器降級處理。

<html> 網頁的全部

<head> 用來寫對當前網頁的一些設置信息,這些內容是用戶看不到的

<meta charset="utf=8"> 設置網頁的字元集

<body> 網頁的主體,再頁面上顯示的內容基本上都在這裡

 

HTML5 相容性

 

支持Html5的瀏覽器包括Firefox(火狐瀏覽器),IE9及其更高版本,Chrome(谷歌瀏覽器),SafariOpera等;國內的 遨游瀏覽器(Maxthon),以及基於IEChromiumChrome的工程版或稱實驗版)所推出的360瀏覽器搜狗瀏覽器QQ瀏覽器獵豹瀏覽器等國產瀏覽器同樣具備支持HTML5的能力。

 

需要註意的是,雖然很多瀏覽器目前已經能夠支持HTML5,但是顯示效果仍舊存在差異性。這時,我們如果從樣式的角度出發,可以採用下麵的幾種css方案。

 

CSS Reset

 

每種瀏覽器都有一套預設的樣式表,即user agent stylesheet,網頁在沒有指定的樣式時,按瀏覽器內置的樣式表來渲染。這是合理的,像word中也有一些預留樣式,可以讓我們的排版更美觀整齊。不同瀏覽器甚至同一瀏覽器不同版本的預設樣式是不同的。但這樣會有很多相容問題,CSSReset可以將所有瀏覽器預設樣式設置成一樣。

 

CSS Reset 下載地址: https://meyerweb.com/eric/tools/css/reset/

 

Normalize(號稱是CSS reset的替代方案,保留了一些內置的樣式,並不是清除所有)。

 

下載地址:https://necolas.github.io/normalize.css/

 

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瀏覽器不同版本之間的表現差異而引入的。

 

  • 屬性首碼法(即類內部Hack):例如 IE6能識別下劃線"_"和星號" * ",IE7能識別星號" * ",但不能識別下劃線"_",IE6~IE10都認識"\9",但firefox前述三個都不能認識。
  • 選擇器首碼法(即選擇器Hack):例如IE6能識別*html .class{}IE7能識別*+html .class{}或者*:first-child+html .class{}
  • IE條件註釋法(即HTML條件註釋Hack):針對所有IE(註:IE10+已經不再支持條件註釋): ,針對IE6及以下版本: 。這類Hack不僅對CSS生效,對寫在判斷語句裡面的所有代碼都會生效。

 

關於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

 

說明:在標準模式中

 

  • “-″減號是IE6專有的hack
  • “\9″ IE6/IE7/IE8/IE9/IE10都生效
  • “\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
  • “\9\0″ 只對IE9/IE10生效,是IE9/10的hack

 

選擇器首碼法:

 

選擇器首碼法是針對一些頁面表現不一致或者需要特殊對待的瀏覽器,在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是表單提交數據的方式)

1、get的傳輸方式的傳輸速度快,而post的傳輸速度就比較慢。

2、get的安全程度低,post的安全程度則是相對較高。

3、get的傳輸數據小,post可以傳輸的數據比較大。

百度的搜索內容一般就是用get的方式提交,而一些比較隱私的,例如賬號登錄時的數據提交用的是post。get和post本質沒有什麼區別,只不過get傳輸時是直接傳輸過去,而post則是先發起請求,等待響應返回之後才會開始傳輸數據,所以才有了以上的區別。

選擇器生效的一些註意點:

權重的比較方式:ID選擇器的權重最高,類選擇器其次,元素選擇器最低。

對比時,兩個選擇器,一個有ID選擇器,一個沒有,則不管後面有多少個類或者元素都沒有ID選擇器的高。

在直接選中的情況下,權重的生效,權重相同則是後面的會覆蓋前面的樣式;

在兩個選擇器都沒有選中的情況下,哪一個更精確,那個就能生效;

兩個都沒選中而且精確度也是同樣的情況下,還是比較權重。

在CSS中標簽的等級大致分類:

塊級元素:

1、獨占一行;

2、可以設置其寬高;

3、不設置寬度,寬度則預設是100%;

4、可以當做容器使用。

行內元素:

可以和其他行內元素併排顯示;

不能設置寬高,內容寬度為其寬度,行高為其高度。

行內塊元素:

其既可以設置寬高,又可以和其他元素併列一行(非塊元素)。ps:表單中的input是行內塊元素

標準文檔流:

瀏覽器的解析方式,從上到下、從左到右。

文本流:

網頁中的文本內容。

脫離標準文檔流的方式:

浮動,絕對定位,固定定位等。

元素浮動後會形成字圍效果,是因為其只是脫離了標準文檔流,但是沒脫離文本流。

子元素全部浮動之後父元素的高度會變成零。

我們一般用有以下幾種方法解決:

1、.clearfix{*zoom=1;}.clearfix:before,.clearfix:after{context:" ";display:table;}.clearfix:after{clear:both}(給父元素一個.clearfix的類名,將其放入樣式中可以解決浮動的問題)

2、直接設置父元素的高度

3、父元素設置樣式:overflow:hidder;

4、隔牆法:再浮動的元素父元素後面寫一個div,給這個div加上clear:both的屬性,也就是浮動效果清除的屬性

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、DOM 事件模型 DOM 事件模型包括捕獲和冒泡,捕獲是從上往下到達目標元素,冒泡是從當前元素,也就是目標元素往上到 window 二、流 流的概念,在現今的 JavaScript 中隨處可見。比如說 React 中的單向數據流,Node 中的流,還有 DOM 事件流,都是流的一種生動體現。至於 ...
  • 原碼,項目中遇到的錯誤,解決方法,文章最後有鏈接可以獲取 項目簡介 功能描述 登陸,註冊,用戶一覽表,修改,刪除,添加,模糊查詢和精確查詢 採用的技術及環境 JSP:前端的信息展示 Servlet:業務邏輯功能實現,及調用資料庫的實現數據處理和傳輸 MySQL:用來實現數據存儲 利用Eclipse來 ...
  • 最近博客背景圖片的外鏈掛了,沒辦法,只好另找辦法。 在博客園後臺,有一個“文件”菜單,可以上傳自己的文件,我就打算把圖片傳到裡面。但卻發現了一個很反人性的設置:不允許上傳jpg,png文件,允許上傳的只有bmp,gif這樣的圖片文件。bmp文件太大,載入都要好幾秒,gif文件質量太差,只有256色, ...
  • 編程思想: 面向過程:凡事親力親為,所有事情的過程都要清楚,註重的是過程。 面向對象:提出需求,找到對象,對象解決這個問題,我們要結果,註重的是結果。 面向對象的特性:封裝,繼承,多態; JS: 是一門解釋性語言,是一門腳本語言,是一門弱類型語言,是一門基於對象的語言,是一門動態類型的語言。 對象: ...
  • 一、React的世界觀1、通過改變state來改變視圖視圖不用考慮如何改變自己,把state畫出來即可。2、變數不可變通過創建一個新的state來更改state,使得變更可追蹤,不容易因為其他部分修改state導致不可預測的錯誤3、結構與樣式分離參考了CSS的做法,RN的style機制使得代碼更清晰 ...
  • js中的數組和字元串有點類似,不是說本質上,而是在遍歷,獲取時的類似。從標識來說,可以一眼看出那個是數組,那個是字元串;但在使用遍歷時,會不經意的將兩者混淆,導致方法用錯。同時兩者的方法又有好幾個相同的,但需註意語義,以及有些方法是不會對原數組產生影響的。以下是我整理的一些關於數組和字元串的一些方法 ...
  • 介紹 在css2當中,存在標準模式下的盒子模型和IE下的怪異盒子模型。這兩種方案表示的是一種盒子模型的渲染模式。而在css3當中,新增加了彈性盒子模型,彈性盒子模型是一種新增加的強大的、靈活的佈局方案。彈性盒子模型是css3中新提出的一種佈局方案。是一種為了應對針對不同屏幕寬度不同設備的一整套新的布 ...
  • 一、什麼是 iframe iframe 用於在頁面內顯示頁面,使用 <iframe> 會創建包含另外一個文檔的內聯框架(即行內框架) 二、iframe 的常用屬性 1、width 定義 iframe 的寬度 2、height 定義 iframe 的高度 3、name 規定 iframe 的名稱 4、 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...