欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

下面css樣式中代表后代選擇器的是,CSS屬性與值的定義

老白2年前32瀏覽0評論

下面css樣式中代表后代選擇器的是,CSS屬性與值的定義?

cascading style sheet 層疊樣式表

CSS基本語法

css的定義方法是:

選擇器 { 屬性:值; 屬性:值; 屬性:值;}

選擇器是將樣式和頁面元素關(guān)聯(lián)起來的名稱,屬性是希望設(shè)置的樣式屬性每個屬性有一個或多個值,如果一個屬性有多個值,中間用空格隔開

代碼示例:

div{ width:100px; height:100px; color:red }

用處:設(shè)置網(wǎng)頁的顯示效果(設(shè)置樣式)

css將網(wǎng)頁的顯示效果和內(nèi)容分離(降低了耦合性)

下面css樣式中代表后代選擇器的是,CSS屬性與值的定義

css新元素是選擇器還是別的?

css中的所有元素都是選擇器,不論新元素還是舊元素,都是對標(biāo)簽的選擇。

什么是CSS樣式?

CSS優(yōu)點和缺點優(yōu)點:1,CSS對于設(shè)計者來說是一種簡單、靈活、易學(xué)的工具,能使任何瀏覽器都聽從指令,知道該如何顯示元素及其內(nèi)容2,個樣式表可以用于多個頁面,甚至整個站點,因此具有更好的易用性和擴展性3,使用CSS樣式表定義整個站點,可以大大簡化網(wǎng)站建設(shè),減少設(shè)計者的工作量缺點:瀏覽器支持的不一致性

2.CSS

沒有父層選擇器3.不能明確地指定繼承性4.垂直控制的局限 5.顯示的缺乏6.缺乏正交性

瀏覽器響應(yīng)用戶的機制是什么?

1. 瀏覽器是多進程的

GPU進程

最多一個,用于3D繪制等

Browser進程

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

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

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

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

第三方插件進程

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

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

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

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

2. 瀏覽器渲染進程是多線程的

GUI渲染線程

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

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

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

js引擎線程

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

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

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

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

事件觸發(fā)線程

管理著事件隊列

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

定時觸發(fā)器線程

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

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

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

異步http請求線程

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

event loop整體流程

3. repaint、reflow

repaint

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

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

reflow

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

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

導(dǎo)致reflow的操作

調(diào)整窗口大小

改變字體

增加或者移除樣式表

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

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

操作 class 屬性

腳本操作 DOM

計算 offsetWidth 和 offsetHeight 屬性

設(shè)置 style 屬性的值

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

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

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

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

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

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

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

css里不要有表達式expression

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

避免不必要的復(fù)雜的 CSS 選擇器,尤其是后代選擇器(descendant selectors),因為為了匹配選擇器將耗費更多的 CPU。

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

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