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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...