前端知識點梳理(二)

1.內核

  1. 瀏覽器內核(Rendering Engine)最初分為:渲染引擎(layout engineer)或(Rendering Engine)和js引擎;后來 JS 引擎越來越獨立,內核就傾向于單指渲染引擎。
  2. 瀏覽器=shell+內核
    Shell是指瀏覽器的外殼:例如菜單,工具欄等。主要是提供給用戶界面操作,參數設置等等。它是調用內核來實現各種功能的。內核才是瀏覽器的核心。

發展歷程:①Netscape王者(Gecko內核;開源)→ ②蝗蟲IE(伴隨操作系統,Trident) → ③烈士(網景)遺孤Mozilla (Gecko)→ ④蘋果Safari (WebKit)→ ⑤后起之秀-谷歌Chrome(Bink/Chromium)→ ⑥1+1>2,雙核時代 UC瀏覽器(WebKit+Trident)

為什么有些用戶寧愿瀏覽器雙開,也不愿意用國產的雙核瀏覽器呢?

可能存在以下原因:
1.chrome的界面設計甩雙核瀏覽器好幾條街。
2.chrome功能上更加安全可靠,雙核瀏覽器感覺會打折扣。
3.chrome有ie tab插件(插件會有Cookies丟失、假死現象),可以實現內核切換,沒必要用雙核。
4.用ie的場景不多了,網銀和各大電商都已支持chrome了。
5.雙核瀏覽器是一條死路,隨著web標準的推廣,ie內核也會越來越靠近標準。
6.國產雙核瀏覽器的花里胡哨的自帶插件各種彈窗廣告和自作聰明的復雜設計、無用功能、過度吹噓開始讓人生厭。
7.極客、技術發燒友的使用習慣和普通網友有本質區別。
8.國產的外殼,商業目的遠大于技術目的,第一目的是賺錢,而不是做一個好產品。

在這里插入圖片描述
瀏覽器內核歷史

2. !Doctype

!Doctype
瀏覽器模式
文檔模式

2.1 嚴格模式和混雜模式

所謂的標準模式是指,瀏覽器按W3C標準解析執行代碼;怪異模式則是使用瀏覽器自己的方式解析執行代碼,因為不同瀏覽器解析執行的方式不一樣,所以我們稱之為怪異模式。
1)當采用嚴格模式,任意瀏覽器效果相同;
2)當采用怪異模式,因瀏覽器而異;
3)采用哪種模式?取決于DTD聲明

HTML 4.01:嚴格模式、過渡模式、框架模式

  1. 嚴格模式:不包括展示性的和棄用的元素(比如font),不允許框架集(Framesets)
  2. 過渡模式:只不允許框架集(Framesets)
  3. 框架模式:都ok

2.2 document.compatMode

document.compatMode,可以用來判斷當前頁面采用的渲染方式。下面官方文檔的說明:

  • BackCompat:標準兼容模式關閉。
  • CSS1Compat:標準兼容模式開啟。
  1. 當document.compatMode等于BackCompat時,瀏覽器客戶區寬度是document.body.clientWidth;
  2. 當document.compatMode等于CSS1Compat時,瀏覽器客戶區寬度是document.documentElement.clientWidth。

2.3 用IE調試怪異模式

以上要用IE調,在chrome里我沒有看到不同模式的差別
是否可以理解成:怪異模式在IE不同的文檔模式中菜體現出區別?
是否可以理解成:怪異模式指的就是IE5?
深刻總結:
重要!
怪異模式(Quirks Mode)對 HTML 頁面的影響
IE“瀏覽器模式”和“文檔模式”的渲染測試
只有IE瀏覽器中才會有“瀏覽器模式”和“文檔模式”
IE下頁面樣式錯亂,其他瀏覽器正常

  1. 嚴格模式的div渲染大小不同(更大):因為IE盒模型=內容+padding+border,當寬度設置為500,同時又有padding和border,那么內容的寬度便小于500;而嚴格模式下,按W3C標準盒模型,繪制出的div,內容寬度=500,再加上padding和border, 實際渲染大小 > IE5 ;
  2. 嚴格模式:圖片底端3px空白(IE5的vertical-align是bottom 而嚴格模式是baseline) ;
  3. 嚴格模式:table中的font屬性會繼承于body的樣式(斜體、顏色、加粗、字體都會);而怪異模式下,只繼承字體 ;
  4. 怪異模式下,行內元素(除了img,input,textarea,select,object)可以設置寬高!想象一下一個< span>標簽內無內容,但可以設置寬高,像div一樣顯示出來;
  5. 百分比的高度必須在父元素有聲明高度時使用
    這點在以上分享的文章里分明是睜眼說瞎話,我在IE5-11中調出了不同的效果:
  6. 怪異模式子元素溢出:父元素也跟隨子元素調整高度

css:

        table.a {height: 300px;background-color: pink;}div.b {background-color: orange;width: 300px;height: 90%;display: block;}div.c {width: 200px;height: 200px;background-color: blue;}

html:

<body><table class="a"><tr><td><div class="b"><div class="c"></div></div></td></tr></table>
</body>

在這里插入圖片描述

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

2.4 css hack

不同瀏覽器,或同一瀏覽器的不同版本,會導致生成的頁面效果不一樣。CSS hack的目的就是使你的CSS代碼兼容不同的瀏覽器。

史上最全的CSS hack方式一覽

hack 英[h?k]
v. 砍; 劈; 猛踢; 非法侵入(他人計算機系統);

3 網頁相關

3.1 meta標簽的屬性

常用meta整理

三個維度:
1) SEO優化:name屬性 - description / keywords
2) 移動設備:name屬性 - viewport

name=“viewport” content=“initial-scale=1.0,maximum-scale=1.0 或者user-scalable=no”
用戶將不能放大/縮小網頁來看到全部的內容

3) 網頁相關: charset、http-equiv - Content-Type屬性

<meta charset='utf-8' /> (聲明編碼)
  • http-equiv
  • content
    content 屬性始終要和 name 屬性或 http-equiv 屬性一起使用。
    在這里插入圖片描述

優先使用 IE 最新版本和 Chrome

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<!-- 關于X-UA-Compatible -->
<meta http-equiv="X-UA-Compatible" content="IE=6" ><!-- 使用IE6 -->
<meta http-equiv="X-UA-Compatible" content="IE=7" ><!-- 使用IE7 -->
<meta http-equiv="X-UA-Compatible" content="IE=8" ><!-- 使用IE8 -->

3.2 響應式布局

(不同設備)
需要通過練習,改造項目代碼來加深理解。
用CSS實現響應式布局
響應式布局

3.3 自適應布局

(某塊固定,其余自適應)
自適應布局
(這個晚點看看)
這可能是史上最全的CSS自適應布局總結### 3.4 提高網頁加載速度

3.4 字符編碼方式

關于幾種編碼詳解(Unicode,UTF-8,GB系列)

歷史:
在這里插入圖片描述

如何才能區別 Unicode 和 ASCII ?計算機怎么知道三個字節表示一個符號,而不是分別表示三個符號呢? → UTF-8的出現(Unicode 是一個符號集,規定了符號的二進制代碼,UTF-8規定了這個二進制代碼應該如何存儲。)
UTF-8 是 Unicode 的實現方式之一。

大神這篇必須要轉:
字符編碼筆記:ASCII,Unicode 和 UTF-8

3.5 頁面性能優化

3.5.1 CDN托管(京東配送服務)

教你如何使用免費的CDN服務

當您訪問托管在CDN上的網站時,網絡將使用離您地理位置最近的服務器智能地向您提供內容。

在這里插入圖片描述

3.5.2 利用多個域名來存儲網站資源

利用多個域名來存儲網站資源

3.5.3 圖片懶加載

存儲圖片真實src,當距離↓,替換
圖片懶加載實現及其原理

web前端頁面性能優化(提升頁面加載速度)

3.棄用元素

htm5新特性新增與棄用元素1
htm5新特性新增與棄用元素2

4.框架

4.1 iframe 行內(html5支持)

Web前端之iframe詳解
關注使用iframe的缺點
優點:

  1. 程序調入靜態頁面比較方便;
  2. 頁面和程序分離;

缺點:

  1. iframe有不好之處:樣式/腳本需要額外鏈入,會增加請求。
    另外用js防盜鏈只防得了小偷,防不了大盜。
  2. iframe好在能夠把原先的網頁全部原封不動顯示下來,但是如果用在首頁,是搜索引擎最討厭的.那么你
    的網站即使做的在好,也排不到好的名次!
    如果是動態網頁,用include還好點!
    但是必須要去除他的標簽!
  3. 框架結構有時會讓人感到迷惑,特別是在多個框架中都出現上下、左右滾動條的時候。這些滾動條除了會擠占已經特別有限的頁面空間外,還會分散訪問者的留心力。訪問者遇到這種站點往往會立刻轉身離開。他們會想,既然你的主頁如此混亂,那么站點的其他部分也許更不值得閱讀。
  4. 鏈接導航疑問。運用框架結構時,你必須保證正確配置所有的導航鏈接,如不然,會給訪問者帶來很大的麻煩。比如被鏈接的頁面出現在導航框架內,這種情況下訪問者便被陷住了,因為此時他沒有其他地點可去。
  5. 調用外部頁面,需要額外調用css,給頁面帶來額外的請求次數;

4.2 frameset框架集(多個框架frame)(html5廢棄)

  1. frameset使用時要將body刪除,使用frameset代替body;
  2. frame和frameset組合使用,且frame沒有結束標簽;
  3. frameset可以嵌套使用;
  4. html5廢棄使用frameset、frame、noframes,他們的使用破壞了可使用性和可訪問性;
    HTML框架(frameset框架集和iframe內嵌框架)

框架的優點

  • 重載頁面時不需要重載整個頁面,只需要重載頁面中的一個框架頁(減少了數據的傳輸,增加了網頁下載速度)
  • 方便制作導航欄

框架的缺點

  • 會產生很多頁面,不容易管理
  • 不容易打印
  • 瀏覽器的后退按鈕無效
  • 代碼復雜,無法被一些搜索引擎索引到
  • 多數小型的移動設備(PDA 手機)無法完全顯示框架
  • 多框架的頁面會增加服務器的http請求
    由于上面諸多缺點,因此不符合標準網頁設計的理念,已經被標準網頁設計拋棄

4.3 相關:window的onload事件

window.onload 是窗口(頁面)加載事件,當文檔內容完全加載完成會觸發該事件(包括圖像,腳本文件,css文件等),就調用的處理函數

window常見事件onload

網頁中的某些JavaScript腳本代碼往往需要在文檔加載完成后才能夠去執行,否則可能導致無法獲取對象的情況,為了避免類似情況的發生,可以使用以下兩種方式:
(1) 將腳本代碼放在網頁的底端,運行腳本代碼的時候,可以確保要操作的對象已經加載完成。
(2)通過window.onload來執行腳本代碼。

解釋以上

5. table布局

5.1 table布局案例

  1. html中使用table元素
    html頁面布局之table布局
    在這里插入圖片描述
  2. display: table| table-cell | table-row
    配合 居中對齊
    text-align: center;
    vertical-align: middle;
    table布局指南

5.2 優缺點

Table布局的優缺點
table要等其中的內容完全下載之后才會顯示出來,顯示比div+css布局慢。

6. 了解漸進增強和優雅降級

出發點是針對高/低版本瀏覽器

6.1 漸進增強和優雅降級之間有什么不同

漸進增強和優雅降級之間有什么不同
在這里插入圖片描述

6.2 前綴css3

當屬性超過一個參數值的時候,不同的屬性產生的作用是不一樣的。

  1. 渲染為每個角都是30像素寬10像素高的圓弧:
-webkit-border-radius: 30px 10px;
  1. 左上和右下角為30像素圓弧,左下角和右上是10像素圓弧:
 border-radius: 30px 10px;

將無前綴的css寫后面!
需警惕CSS3屬性的書寫順序

表示xx瀏覽器的私有屬性:

 1、-moz代表firefox瀏覽器私有屬性2、-ms代表ie瀏覽器私有屬性3、-webkit代表-webkit內核瀏覽器  常見瀏覽器有-safari、chrome

7. 微格式

什么是微格式?在前端構建中應該考慮微格式嗎?


在這里插入圖片描述

8. normalize.css 初始化樣式

css樣式初始化 normalize
normalize.css中文版

9. link和@import的區別

link和@import的區別

10.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251355.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251355.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序模仿開眼視頻app(三)——信息卡片瀑布流和分類

《微信小程序模仿開眼視頻app&#xff08;一&#xff09;——視頻首頁、視頻詳情、分類》 《微信小程序模仿開眼視頻app&#xff08;二&#xff09;——搜索功能》 可到我的github賬號上去copy文件 瀑布流部分 文件代碼提示的挺詳細的&#xff0c;這里主要點一下 社區與分類…

PHP后臺代碼解決跨域問題

在前端里面&#xff0c;解決跨域的時候總顯得那么的惡心&#xff0c;什么jsonp啊&#xff0c;ajax啊&#xff0c;CORS啊什么的&#xff0c;總覺得是在鉆空子進行跨域&#xff0c;其實在PHP文件里面只需要加一段代碼就可以跨域了&#xff0c;前端你該怎么寫還是怎么寫&#xff0…

javascript --- typeof方法和instanceof方法

ES5中: 原始類型包括:Number、String、Boolean、Null、Undefined 原始封裝類型包括:Number、String、Boolean 引用類型包括:Array、Function、RegExp、Error、Date、Error 變量對象 原始類型的實例成為原始值,它直接保存在變量對象中. 引用類型的實例成為引用值,它作為一個指針…

python 基本數據類型常用方法總結

【引言】 python中基本數據類型的有很多常用方法&#xff0c;熟悉這些方法有助于不僅提升了編碼效率&#xff0c;而且能寫出高質量代碼&#xff0c;本文做總結 int .bit_length:返回二進制長度 str 切片索引超出不會報錯 切片上下限寫反不報錯&#xff0c;沒有結果 切片倒取&am…

網易試題——關于箭頭函數與this和arguments的關系

昨天做試題的時候遇到了這個題目 var a 1;function fn1() {console.log(this.a)}const fn2 () > {console.log(this.a)}const obj {a: 10,fn1: fn1,fn2: fn2}fn1()fn2()obj.fn1()obj.fn2() 哦這該死的網易&#xff0c;怎么出這么簡單的題目&#xff0c;答案是&#xff1…

《JavaScript 高級程序設計》筆記 第1~5章

第1章 js是專為網頁交互而設計的腳本語言&#xff0c;由3部分組成&#xff1a; ECMAScript&#xff0c;提供核心語言功能DOM文檔對象模型&#xff0c;提供訪問和操作網頁內容的方法和接口BOM瀏覽器對象模型&#xff0c;提供與瀏覽器交互的方法和接口 js是一種腳本語言、解釋…

【筆記】跨域重定向中使用Ajax(XHR請求)導致跨域失敗

背景&#xff1a; 1、前端Web中有兩個域名&#xff0c;a.com和b.com&#xff0c;其中a.com是訪問主站&#xff08;頁面&#xff09;&#xff0c;b.com是數據提交接口的服務器&#xff08;XHR請求&#xff09; 2、a.com中用XHR調用b.com/cerate【沒有指定協議】&#xff0c;保存…

javascript --- js中prototype、__proto__、[[Propto]]、constructor的關系

首先看下面一行代碼: function Person(name){this.name name; } var person1 new Person; console.log(person1.__proto__ Person.prototype); console.log(person1.constructor Person);控制臺打印如下: 可以看見,當使用構造函數(Person)構造一個實例(person1)時, 在后…

前端知識點整理收集(不定時更新~)

知識點都是搜集各種大佬們的&#xff0c;如有冒犯&#xff0c;請告知&#xff01; 目錄 原型鏈 New關鍵字的執行過程 ES6——class constructor方法 類的實例對象 不存在變量提升 super 關鍵字 ES6——...&#xff08;展開/收集&#xff09;運算符 面向對象的理解 關…

數據庫四大特性與隔離級別

數據庫四大特性ACID Atomicity (原子性) :事務&#xff08;transaction&#xff09;是由指邏輯上對數據的的一組操作&#xff0c;這組操作要么一次全部成功&#xff0c;如果這組操作全部失敗&#xff0c;是不可分割的一個工作單位。 Consistency(一致性) :在事務開始以前&#…

重學《JavaScript 高級程序設計》筆記 第6章對象

第6章 面向對象的程序設計 ECMAScript中沒有類的概念&#xff1b; 1.創建對象-歷史 1.1 創建實例&#xff0c;添加方法和屬性 → 對象字面量 缺點&#xff1a; 使用同一接口創建很多對象&#xff0c;產生大量重復代碼 var person new Object() person.name "Y" pe…

Java-reflect(反射)初步理解_1

27.01_反射(類的加載概述和加載時機) A:類的加載概述 當程序要使用某個類時&#xff0c;如果該類還未被加載到內存中&#xff0c;則系統會通過加載&#xff0c;連接&#xff0c;初始化三步來實現對這個類進行初始化。加載 就是指將class文件讀入內存&#xff0c;并為之創建一個…

javascrip --- 構造函數的繼承

兩點需要注意的. 第一是在構造函數聲明時,會同時創建一個該構造函數的原型對象,而該原型對象是繼承自Object的原型對象 // 聲明一個構造函數Rectengle function Rectangle(length, width) {this.length length;this.width width; }// 即:看見function 后面函數名是大寫,一般…

Ruby實例方法和類方法的簡寫

創建: 2017/12/12 類方法 Sample.func實例方法 Sample#func轉載于:https://www.cnblogs.com/lancgg/p/8281677.html

《JavaScript 高級程序設計》筆記 第7章及以后

第7章 函數表達式 匿名函數的name屬性是空字符串&#xff1b;閉包是函數&#xff1a;閉包是有權訪問另一個函數作用域中變量的函數&#xff1b;(P181 副作用,解釋了點擊li彈出循環最后值的原因)當某個函數第一次被調用時&#xff0c;會創建一個執行環境及相應作用域鏈&#xf…

[樹形dp] Jzoj P1046 尋寶之旅

Description 探險隊長凱因意外的弄到了一份黑暗森林的藏寶圖&#xff0c;于是&#xff0c;探險隊一行人便踏上了尋寶之旅&#xff0c;去尋找傳說中的寶藏。藏寶點分布在黑暗森林的各處&#xff0c;每個點有一個值&#xff0c;表示藏寶的價值。它們之間由一些小路相連&#xff0…

javascript --- 使用語法糖class定義函數

本文討論的是通過class聲明的函數,有什么特點,或者說是指向了哪里. class A() {} // A是一個類// 要看class聲明的函數指向哪里,只需將其[[Prototype]]屬性打印到控制臺,下面看看A和它的原型對象的指向 // 注:[[Prototype]]屬性通過__proto__訪問 console.log(A.__proto__…

前端知識點整理收集(不定時更新~)二

目錄 require() 加載文件機制 線程和進程 線程 單線程 Nodejs的線程與進程 網絡模型 初識 TCP 協議 三次握手 I/O I/O 先修知識 阻塞與非阻塞 I/O 同步與異步 I/O Git 基礎命令 分支操作 修改遠程倉庫地址 遠程分支獲取最新的版本到本地 拉取遠程倉庫指定分支…

SpringBoot零基礎入門指南--搭建Springboot然后能夠在瀏覽器返回數據

File->new Project 修改默認包名&#xff0c;根據自己的喜好修改 選擇初始化需要導入的包&#xff0c;盡量不要一開始就導入很多&#xff0c;特別是數據庫&#xff0c;不然啟動可能會有問題&#xff0c;創建好的目錄如下&#xff1a; 配置文件寫在application.properties下&…

JavaScript算法相關

1. 排序 1.1.冒泡排序 每一輪比較&#xff0c;從左至右交換相鄰&#xff0c;每輪結束&#xff0c;最后一個為最大下一輪&#xff0c;需要比較的個數 - 1 j < len - i (范圍動態縮小)共 len - 1 輪比較 function bubbleSort(arr) {var len arr.length;for (var i 1; i &…