色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

css中的ui偽類選擇器,瀏覽器響應(yīng)用戶的機(jī)制是什么

老白2年前31瀏覽0評論

css中的ui偽類選擇器,瀏覽器響應(yīng)用戶的機(jī)制是什么?

1. 瀏覽器是多進(jìn)程的

GPU進(jìn)程

最多一個(gè),用于3D繪制等

Browser進(jìn)程

負(fù)責(zé)瀏覽器界面顯示,與用戶交互。如前進(jìn),后退等

負(fù)責(zé)各個(gè)頁面的管理,創(chuàng)建和銷毀其他進(jìn)程

將Renderer進(jìn)程得到的內(nèi)存中的Bitmap,繪制到用戶界面上

網(wǎng)絡(luò)資源的管理,下載等

第三方插件進(jìn)程

每種類型的插件對應(yīng)一個(gè)進(jìn)程,僅當(dāng)使用該插件時(shí)才創(chuàng)建

瀏覽器渲染進(jìn)程(瀏覽器內(nèi)核)

默認(rèn)每個(gè)tab頁一個(gè)進(jìn)程

頁面渲染,腳本執(zhí)行,事件處理等

2. 瀏覽器渲染進(jìn)程是多線程的

GUI渲染線程

負(fù)責(zé)渲染瀏覽器界面,解析HTML,CSS,構(gòu)建DOM樹和RenderObject樹,布局和繪制等。

當(dāng)界面需要重繪(Repaint)或由于某種操作引發(fā)回流(reflow)時(shí),該線程就會執(zhí)行

注意,GUI渲染線程與JS引擎線程是互斥的,當(dāng)JS引擎執(zhí)行時(shí)GUI線程會被掛起(相當(dāng)于被凍結(jié)了),GUI更新會被保存在一個(gè)隊(duì)列中等到JS引擎空閑時(shí)立即被執(zhí)行。

js引擎線程

也稱為JS內(nèi)核,負(fù)責(zé)處理Javascript腳本程序。(例如V8引擎)

JS引擎線程負(fù)責(zé)解析Javascript腳本,運(yùn)行代碼。

JS引擎一直等待任務(wù)隊(duì)列中任務(wù)的到來,然后加以處理,一個(gè)Tab頁(renderer進(jìn)程)中只有一個(gè)JS線程在運(yùn)行

同樣注意,GUI渲染線程與JS引擎線程是互斥的。所以如果JS執(zhí)行的時(shí)間過長,要放在body下面,否則就會導(dǎo)致頁面渲染加載阻塞。

事件觸發(fā)線程

管理著事件隊(duì)列

監(jiān)聽事件,符合條件時(shí)把回調(diào)函數(shù)放入事件隊(duì)列中

定時(shí)觸發(fā)器線程

setInterval與setTimeout在此線程中計(jì)時(shí)完畢后,把回調(diào)函數(shù)放入事件隊(duì)列中

瀏覽器定時(shí)計(jì)數(shù)器并不是由JavaScript引擎計(jì)數(shù)的,(因?yàn)镴avaScript引擎是單線程的, 如果處于阻塞線程狀態(tài)就會影響記計(jì)時(shí)的準(zhǔn)確),因此通過單獨(dú)線程來計(jì)時(shí)并觸發(fā)定時(shí)(計(jì)時(shí)完畢后,添加到事件隊(duì)列中,等待JS引擎空閑后執(zhí)行)

注意,W3C在HTML標(biāo)準(zhǔn)中規(guī)定,規(guī)定要求setTimeout中低于4ms的時(shí)間間隔算為4ms。

異步http請求線程

檢測到XHR對象狀態(tài)變化時(shí),將回調(diào)函數(shù)放入事件隊(duì)列中

event loop整體流程

3. repaint、reflow

repaint

repiant或者redraw遍歷所有的節(jié)點(diǎn)檢測各節(jié)點(diǎn)的可見性、顏色、輪廓等可見的樣式屬性,然后根據(jù)檢測的結(jié)果更新頁面的響應(yīng)部分。

當(dāng)render tree中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀,風(fēng)格,而不會影響布局的,比如background-color。則就叫稱為重繪

reflow

reflow指的是計(jì)算頁面布局。某個(gè)節(jié)點(diǎn)reflow時(shí)會重新計(jì)算節(jié)點(diǎn)的尺寸和位置,而且還有可能觸發(fā)其子節(jié)點(diǎn)、祖先節(jié)點(diǎn)和頁面上的其他節(jié)點(diǎn)reflow。在這之后再觸發(fā)一次repaint。

當(dāng)render tree中的一部分(或全部)因?yàn)樵氐囊?guī)模尺寸,布局,隱藏等改變而需要重新構(gòu)建。這就稱為回流,每個(gè)頁面至少需要一次回流,就是在頁面第一次加載的時(shí)候。

導(dǎo)致reflow的操作

調(diào)整窗口大小

改變字體

增加或者移除樣式表

內(nèi)容變化,比如用戶在input框中輸入文字

激活 CSS 偽類,比如 :hover (IE 中為兄弟結(jié)點(diǎn)偽類的激活)

操作 class 屬性

腳本操作 DOM

計(jì)算 offsetWidth 和 offsetHeight 屬性

設(shè)置 style 屬性的值

它們會大大影響web性能,如何減少reflow、repaint

不要通過父級來改變子元素樣式,最好直接改變子元素樣式,改變子元素樣式盡可能不要影響父元素和兄弟元素的大小和尺寸

盡量通過class來設(shè)計(jì)元素樣式,切忌用style多次操作單個(gè)屬性

實(shí)現(xiàn)元素的動畫,對于經(jīng)常要進(jìn)行回流的組件,要抽離出來,它的position屬性應(yīng)當(dāng)設(shè)為fixed或absolute

權(quán)衡速度的平滑。比如實(shí)現(xiàn)一個(gè)動畫,以1個(gè)像素為單位移動這樣最平滑,但reflow就會過于頻繁,CPU很快就會被完全占用。如果以3個(gè)像素為單位移動就會好很多。

不要用tables布局的另一個(gè)原因就是tables中某個(gè)元素一旦觸發(fā)reflow就會導(dǎo)致table里所有的其它元素reflow。在適合用table的場合,可以設(shè)置table-layout為auto或fixed,

這樣可以讓table一行一行的渲染,這種做法也是為了限制reflow的影響范圍。

css里不要有表達(dá)式expression

減少不必要的 DOM 層級(DOM depth)。改變 DOM 樹中的一級會導(dǎo)致所有層級的改變,上至根部,下至被改變節(jié)點(diǎn)的子節(jié)點(diǎn)。這導(dǎo)致大量時(shí)間耗費(fèi)在執(zhí)行 reflow 上面。

避免不必要的復(fù)雜的 CSS 選擇器,尤其是后代選擇器(descendant selectors),因?yàn)闉榱似ヅ溥x擇器將耗費(fèi)更多的 CPU。

盡量不要過多的頻繁的去增加,修改,刪除元素,因?yàn)檫@可能會頻繁的導(dǎo)致頁面reflow,可以先把該dom節(jié)點(diǎn)抽離到內(nèi)存中進(jìn)行復(fù)雜的操作然后再display到頁面上。

請求如下值offsetTop, offsetLeft, offsetWidth, offsetHeight,scrollTop/Left/Width/Height,clientTop/Left/Width/Height,瀏覽器會發(fā)生reflow,建議將他們合并到一起操作,可以減少回流的次數(shù)。

css中的ui偽類選擇器,瀏覽器響應(yīng)用戶的機(jī)制是什么

lang這些偽類分別有什么作用?

一、:first-child 是獲取元素的第一個(gè)子元素添加樣式比如p:first-child 它是給p里面第一個(gè)元素標(biāo)簽添加樣式 二、 :focus; 就是一個(gè)鏈接得到焦點(diǎn)時(shí)的狀態(tài)三、:lang 偽類向帶有指定 lang 屬性的元素添加樣式。比如:

A quote in a paragraph

p:lang(no) {color:#f00}上面的這些偽類IE不認(rèn)識的噢

css選擇器項(xiàng)目符號圖像是什么?

css樣式屬性list-style-image :設(shè)定列表項(xiàng)目符號的自定義圖像。其值是一個(gè)引用圖像的URL路徑。

url ( url ) —— 使用絕對或相對 url 地址指定圖像。

類選擇器語法?

1. 標(biāo)簽名選擇器 div { color:Red;} 即頁面中的各個(gè)標(biāo)簽名的css樣式 2.類選擇器 .divClass {color:Red;} 即定義的每個(gè)標(biāo)簽的class 中的css樣式 3.ID選擇器 #myDiv {color:Red;} 即頁面中的標(biāo)簽的id 4.后代選擇器(類選擇器的后代選擇器) .divClass span { color:Red;} 即多個(gè)選擇器以逗號的格式分隔 命名找到準(zhǔn)確的標(biāo)簽 5.群組選擇器 div,span,img {color:Red} 即具有相同樣式的標(biāo)簽分組顯示