精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

瀏覽器的渲染原理簡介

系統(tǒng) 瀏覽器
《How Browsers Work》,這篇文章把瀏覽器的很多細(xì)節(jié)講得很細(xì),而且也被翻譯成了中文。 但是,這篇文章太長了,閱讀成本太大,不能一口氣讀完,而且似乎對(duì)工作沒什么幫助。本文主要是解決這兩個(gè)難題。

看到這個(gè)標(biāo)題大家一定會(huì)想到這篇神文《How Browsers Work》,這篇文章把瀏覽器的很多細(xì)節(jié)講得很細(xì),而且也被翻譯成了中文。為什么我還想寫一篇呢?因?yàn)閮蓚€(gè)原因,

1)這篇文章太長了,閱讀成本太大,不能一口氣讀完。

2)花了大力氣讀了這篇文章后可以了解很多,但似乎對(duì)工作沒什么幫助。

所以,我準(zhǔn)備寫下這篇文章來解決上述兩個(gè)問題。希望你能在上班途中,或是坐馬桶時(shí)就能讀完,并能從中學(xué)會(huì)一些能用在工作上的東西。

瀏覽器工作大流程

廢話少說,先來看個(gè)圖:

從上面這個(gè)圖中,我們可以看到那么幾個(gè)事:

 

1)瀏覽器會(huì)解析三個(gè)東西:

  • 一個(gè)是HTML/SVG/XHTML,事實(shí)上,Webkit有三個(gè)C++的類對(duì)應(yīng)這三類文檔。解析這三種文件會(huì)產(chǎn)生一個(gè)DOM Tree。
  • CSS,解析CSS會(huì)產(chǎn)生CSS規(guī)則樹。
  • Javascript,腳本,主要是通過DOM API和CSSOM API來操作DOM Tree和CSS Rule Tree.

2)解析完成后,瀏覽器引擎會(huì)通過DOM Tree 和 CSS Rule Tree 來構(gòu)造 Rendering Tree。注意:

  • Rendering Tree 渲染樹并不等同于DOM樹,因?yàn)橐恍┫馠eader或display:none的東西就沒必要放在渲染樹中了。
  • CSS 的 Rule Tree主要是為了完成匹配并把CSS Rule附加上Rendering Tree上的每個(gè)Element。也就是DOM結(jié)點(diǎn)。也就是所謂的Frame。
  • 然后,計(jì)算每個(gè)Frame(也就是每個(gè)Element)的位置,這又叫l(wèi)ayout和reflow過程。

3)最后通過調(diào)用操作系統(tǒng)Native GUI的API繪制。

DOM解析

HTML的DOM Tree解析如下:

  1. <html> 
  2. <html> 
  3. <head> 
  4.     <title>Web page parsing</title> 
  5. </head> 
  6. <body> 
  7.     <p> 
  8.         <h1>Web page parsing</h1> 
  9.         <p>This is an example Web page.</p> 
  10.     </p> 
  11. </body> 
  12. </html> 

上面這段HTML會(huì)解析成這樣:

下面是另一個(gè)有SVG標(biāo)簽的情況。

#p#

CSS解析

CSS的解析大概是下面這個(gè)樣子(下面主要說的是Gecko也就是Firefox的玩法),假設(shè)我們有下面的HTML文檔:

  1. <doc> 
  2. <title>A few quotes</title> 
  3. <para> 
  4.   Franklin said that <quote>"A penny saved is a penny earned."</quote> 
  5. </para> 
  6. <para> 
  7.   FDR said <quote>"We have nothing to fear but <span>fear itself.</span>"</quote> 
  8. </para> 
  9. </doc> 

于是DOM Tree是這個(gè)樣子:

然后我們的CSS文檔是這樣的:

  1. /* rule 1 */ doc { display: block; text-indent: 1em; } 
  2. /* rule 2 */ title { display: block; font-size: 3em; } 
  3. /* rule 3 */ para { display: block; } 
  4. /* rule 4 */ [class="emph"] { font-style: italic; } 

于是我們的CSS Rule Tree會(huì)是這個(gè)樣子:

注意,圖中的第4條規(guī)則出現(xiàn)了兩次,一次是獨(dú)立的,一次是在規(guī)則3的子結(jié)點(diǎn)。所以,我們可以知道,建立CSS Rule Tree是需要比照著DOM Tree來的。CSS匹配DOM Tree主要是從右到左解析CSS的Selector,好多人以為這個(gè)事會(huì)比較快,其實(shí)并不一定。關(guān)鍵還看我們的CSS的Selector怎么寫了。

注意:CSS匹配HTML元素是一個(gè)相當(dāng)復(fù)雜和有性能問題的事情。所以,你就會(huì)在N多地方看到很多人都告訴你,DOM樹要小,CSS盡量用id和class,千萬不要過渡層疊下去,……

通過這兩個(gè)樹,我們可以得到一個(gè)叫Style Context Tree,也就是下面這樣(把CSS Rule結(jié)點(diǎn)Attach到DOM Tree上):

所以,F(xiàn)irefox基本上來說是通過CSS 解析 生成 CSS Rule Tree,然后,通過比對(duì)DOM生成Style Context Tree,然后Firefox通過把Style Context Tree和其Render Tree(Frame Tree)關(guān)聯(lián)上,就完成了。注意:Render Tree會(huì)把一些不可見的結(jié)點(diǎn)去除掉。而Firefox中所謂的Frame就是一個(gè)DOM結(jié)點(diǎn),不要被其名字所迷惑了。

注:Webkit不像Firefox要用兩個(gè)樹來干這個(gè),Webkit也有Style對(duì)象,它直接把這個(gè)Style對(duì)象存在了相應(yīng)的DOM結(jié)點(diǎn)上了。#p#

渲染

渲染的流程基本上如下(黃色的四個(gè)步驟):

  1. 計(jì)算CSS樣式
  2. 構(gòu)建Render Tree
  3. Layout – 定位坐標(biāo)和大小,是否換行,各種position, overflow, z-index屬性 ……
  4. 正式開畫

注意:上圖流程中有很多連接線,這表示了Javascript動(dòng)態(tài)修改了DOM屬性或是CSS屬會(huì)導(dǎo)致重新Layout,有些改變不會(huì),就是那些指到天上的箭頭,比如,修改后的CSS rule沒有被匹配到,等。

這里重要要說兩個(gè)概念,一個(gè)是Reflow,另一個(gè)是Repaint。這兩個(gè)不是一回事。

  • Repaint——屏幕的一部分要重畫,比如某個(gè)CSS的背景色變了。但是元素的幾何尺寸沒有變。
  • Reflow——意味著元件的幾何尺寸變了,我們需要重新驗(yàn)證并計(jì)算Render Tree。是Render Tree的一部分或全部發(fā)生了變化。這就是Reflow,或是Layout。(HTML使用的是flow based layout,也就是流式布局,所以,如果某元件的幾何尺寸發(fā)生了變化,需要重新布局,也就叫reflow)reflow 會(huì)從<html>這個(gè)root frame開始遞歸往下,依次計(jì)算所有的結(jié)點(diǎn)幾何尺寸和位置,在reflow過程中,可能會(huì)增加一些frame,比如一個(gè)文本字符串必需被包裝起來。

下面是一個(gè)打開Wikipedia時(shí)的Layout/reflow的視頻(注:HTML在初始化的時(shí)候也會(huì)做一次reflow,叫intial reflow),你可以感受一下:

Reflow的成本比Repaint的成本高得多的多。DOM Tree里的每個(gè)結(jié)點(diǎn)都會(huì)有reflow方法,一個(gè)結(jié)點(diǎn)的reflow很有可能導(dǎo)致子結(jié)點(diǎn),甚至父點(diǎn)以及同級(jí)結(jié)點(diǎn)的reflow。在一些高性能的電腦上也許還沒什么,但是如果reflow發(fā)生在手機(jī)上,那么這個(gè)過程是非常痛苦和耗電的。

所以,下面這些動(dòng)作有很大可能會(huì)是成本比較高的。

  • 當(dāng)你增加、刪除、修改DOM結(jié)點(diǎn)時(shí),會(huì)導(dǎo)致Reflow或Repaint
  • 當(dāng)你移動(dòng)DOM的位置,或是搞個(gè)動(dòng)畫的時(shí)候。
  • 當(dāng)你修改CSS樣式的時(shí)候。
  • 當(dāng)你Resize窗口的時(shí)候(移動(dòng)端沒有這個(gè)問題),或是滾動(dòng)的時(shí)候。
  • 當(dāng)你修改網(wǎng)頁的默認(rèn)字體時(shí)。

注:display:none會(huì)觸發(fā)reflow,而visibility:hidden只會(huì)觸發(fā)repaint,因?yàn)闆]有發(fā)現(xiàn)位置變化。

多說兩句關(guān)于滾屏的事,通常來說,如果在滾屏的時(shí)候,我們的頁面上的所有的像素都會(huì)跟著滾動(dòng),那么性能上沒什么問題,因?yàn)槲覀兊娘@卡對(duì)于這種把全屏像素往上往下移的算法是很快。但是如果你有一個(gè)fixed的背景圖,或是有些Element不跟著滾動(dòng),有些Elment是動(dòng)畫,那么這個(gè)滾動(dòng)的動(dòng)作對(duì)于瀏覽器來說會(huì)是相當(dāng)相當(dāng)痛苦的一個(gè)過程。你可以看到很多這樣的網(wǎng)頁在滾動(dòng)的時(shí)候性能有多差。因?yàn)闈L屏也有可能會(huì)造成reflow。

基本上來說,reflow有如下的幾個(gè)原因:

  • Initial。網(wǎng)頁初始化的時(shí)候。
  • Incremental。一些Javascript在操作DOM Tree時(shí)。
  • Resize。其些元件的尺寸變了。
  • StyleChange。如果CSS的屬性發(fā)生變化了。
  • Dirty。幾個(gè)Incremental的reflow發(fā)生在同一個(gè)frame的子樹上。

好了,我們來看一個(gè)示例吧:

  1. var bstyle = document.body.style; // cache 
  2. bstyle.padding = "20px"; // reflow, repaint 
  3. bstyle.border = "10px solid red"; //  再一次的 reflow 和 repaint  
  4. bstyle.color = "blue"; // repaint 
  5. bstyle.backgroundColor = "#fad"; // repaint  
  6. bstyle.fontSize = "2em"; // reflow, repaint 
  7. // new DOM element - reflow, repaint 
  8. document.body.appendChild(document.createTextNode('dude!')); 

當(dāng)然,我們的瀏覽器是聰明的,它不會(huì)像上面那樣,你每改一次樣式,它就reflow或repaint一次。一般來說,瀏覽器會(huì)把這樣的操作積攢一批,然后做一次reflow,這又叫異步reflow或增量異步reflow。但是有些情況瀏覽器是不會(huì)這么做的,比如:resize窗口,改變了頁面默認(rèn)的字體,等。對(duì)于這些操作,瀏覽器會(huì)馬上進(jìn)行reflow。

但是有些時(shí)候,我們的腳本會(huì)阻止瀏覽器這么干,比如:如果我們請(qǐng)求下面的一些DOM值:

  1. offsetTop, offsetLeft, offsetWidth, offsetHeight
  2. scrollTop/Left/Width/Height
  3. clientTop/Left/Width/Height
  4. IE中的 getComputedStyle(), 或 currentStyle

因?yàn)椋绻覀兊某绦蛐枰@些值,那么瀏覽器需要返回最新的值,而這樣一樣會(huì)flush出去一些樣式的改變,從而造成頻繁的reflow/repaint。#p#

減少reflow/repaint

下面是一些Best Practices:

1)不要一條一條地修改DOM的樣式。與其這樣,還不如預(yù)先定義好css的class,然后修改DOM的className。

  1. // bad 
  2. var left = 10
  3. top = 10
  4. el.style.left = left + "px"; 
  5. el.style.top  = top  + "px"; 
  6. // Good 
  7. el.className += " theclassname"; 
  8.  // Good 
  9. el.style.cssText += "; left: " + left + "px; top: " + top + "px;"; 

2)把DOM離線后修改。如:

  • 使用documentFragment 對(duì)象在內(nèi)存里操作DOM
  • 先把DOM給display:none(有一次reflow),然后你想怎么改就怎么改。比如修改100次,然后再把他顯示出來。
  • clone一個(gè)DOM結(jié)點(diǎn)到內(nèi)存里,然后想怎么改就怎么改,改完后,和在線的那個(gè)的交換一下。

3)不要把DOM結(jié)點(diǎn)的屬性值放在一個(gè)循環(huán)里當(dāng)成循環(huán)里的變量。不然這會(huì)導(dǎo)致大量地讀寫這個(gè)結(jié)點(diǎn)的屬性。

4)盡可能的修改層級(jí)比較低的DOM。當(dāng)然,改變層級(jí)比較底的DOM有可能會(huì)造成大面積的reflow,但是也可能影響范圍很小。

5)為動(dòng)畫的HTML元件使用fixed或absoult的position,那么修改他們的CSS是不會(huì)reflow的。

6)千萬不要使用table布局。因?yàn)榭赡芎苄〉囊粋€(gè)小改動(dòng)會(huì)造成整個(gè)table的重新布局。

In this manner, the user agent can begin to lay out the table once the entire first row has been received. Cells in subsequent rows do not affect column widths. Any cell that has content that overflows uses the ‘overflow’ property to determine whether to clip the overflow content.

Fixed layout, CSS 2.1 Specification

This algorithm may be inefficient since it requires the user agent to have access to all the content in the table before determining the final layout and may demand more than one pass.

Automatic layout, CSS 2.1 Specification

幾個(gè)工具和幾篇文章

有時(shí)候,你會(huì)也許會(huì)發(fā)現(xiàn)在IE下,你不知道你修改了什么東西,結(jié)果CPU一下子就上去了到100%,然后過了好幾秒鐘repaint/reflow才完成,這種事情以IE的年代時(shí)經(jīng)常發(fā)生。所以,我們需要一些工具幫我們看看我們的代碼里有沒有什么不合適的東西。

  • Chrome下,Google的SpeedTracer是個(gè)非常強(qiáng)悍的工作讓你看看你的瀏覽渲染的成本有多大。其實(shí)Safari和Chrome都可以使用開發(fā)者工具里的一個(gè)Timeline的東東。
  • IE下你可以用一個(gè)叫dynaTrace的IE擴(kuò)展。

最后,別忘了下面這幾篇提高瀏覽器性能的文章:

參考

責(zé)任編輯:黃丹 來源: coolshell.cn
相關(guān)推薦

2013-06-14 13:56:29

瀏覽器渲染原理

2020-11-06 15:20:45

瀏覽器前端架構(gòu)

2022-08-30 09:01:11

瀏覽器渲染前端

2013-11-18 14:42:53

瀏覽器渲染

2012-03-20 11:35:32

傲游手機(jī)瀏覽器

2017-03-08 08:31:48

瀏覽器渲染路徑

2013-11-20 10:47:57

瀏覽器渲染html

2017-03-12 10:15:18

瀏覽器DOM樹CSSOM樹

2013-11-20 13:04:41

css瀏覽器渲染

2013-11-20 13:47:43

瀏覽器渲染引擎

2018-01-19 14:39:53

瀏覽器頁面優(yōu)化

2017-10-09 13:39:26

瀏覽器渲染服務(wù)器

2019-01-03 13:09:58

瀏覽器緩存原理

2022-02-07 21:49:06

瀏覽器渲染chromium

2013-11-18 15:09:34

瀏覽器渲染速度

2021-04-19 11:40:15

瀏覽器路徑

2020-03-12 11:29:51

JavaScript瀏覽器語言

2015-02-28 09:39:24

Windows 10Spartan

2021-04-01 06:23:24

CSS33D3D Web 動(dòng)畫

2019-04-08 10:27:00

渲染瀏覽器DOM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲一区二区精品在线观看| 57pao成人永久免费视频| 国产在线视频三区| 超碰在线最新网址| 国产亚洲综合性久久久影院| 国产精品一区二区三区久久久| 看免费黄色录像| 欧美大胆视频| 欧美男女性生活在线直播观看| 精品人妻大屁股白浆无码| 蜜芽tv福利在线视频| 激情都市一区二区| 91av在线免费观看视频| 国产探花在线视频| 欧美偷窥清纯综合图区| 欧美精品欧美精品系列| 人妻熟妇乱又伦精品视频| 欧美被日视频| 成人免费毛片高清视频| 国产精品久久在线观看| 一区二区在线观看免费视频| 伊人久久大香线蕉av不卡| 日韩一区二区在线观看| 欧美午夜性生活| 国产精品一品| 亚洲免费伊人电影| 久久偷看各类wc女厕嘘嘘偷窃 | 国产毛片av在线| 国产成人无遮挡在线视频| 国产精品永久免费观看| 日本网站在线播放| 68国产成人综合久久精品| 亚洲系列中文字幕| 国产女人18毛片水真多18| 激情欧美一区二区三区黑长吊| 午夜影视日本亚洲欧洲精品| 日韩欧美一级在线| 黄色在线免费看| 中文字幕av一区 二区| 久久这里精品国产99丫e6| 性欧美videos另类hd| 精品制服美女久久| 国产精品伦子伦免费视频| 久久精品久久久久久久| 亚洲美女毛片| 久久噜噜噜精品国产亚洲综合| 男人av资源站| 久久影院100000精品| 亚洲亚裔videos黑人hd| 制服丝袜第二页| 狼人精品一区二区三区在线| 亚洲精品一区二区三区蜜桃下载 | 成人av电影免费观看| 成人h在线播放| 不卡视频免费在线观看| 国产精品一级二级三级| 亚洲综合日韩在线| 国产精品久久婷婷| 精品综合免费视频观看| 成人淫片在线看| 国产老妇伦国产熟女老妇视频| 国内精品伊人久久久久av一坑 | 91高潮大合集爽到抽搐| 蜜桃视频在线观看一区| 国产美女精彩久久| 国产精品玖玖玖| 国产一区二区三区久久悠悠色av| 91色精品视频在线| 亚洲国产www| 不卡视频在线看| 国产亚洲欧美一区二区| 日本一区二区三区在线观看视频| 久久这里只有精品视频网| 欧美日韩精品一区| 日本三级在线播放完整版| 亚洲日本在线a| 日韩亚洲欧美视频| 最新中文字幕在线播放| 欧美日韩专区在线| 欧美性猛交乱大交| 国产伦精品一区二区三区在线播放 | 久久国产精品久久久久| 国产亚洲色婷婷久久99精品| 国产精品腿扒开做爽爽爽挤奶网站| 清纯唯美亚洲综合| 91亚洲国产成人久久精品麻豆| 国产高清一区日本| 免费亚洲精品视频| 色网站免费在线观看| 亚洲黄网站在线观看| 无码人妻丰满熟妇区96| 欧美电影在线观看网站| 欧美一区二区福利在线| jlzzjizz在线播放观看| 日韩电影免费网址| 久久久久国产精品免费| 日韩欧美一级大片| 成人午夜视频福利| 少妇特黄a一区二区三区| 五月婷婷视频在线观看| 色噜噜狠狠一区二区三区果冻| 激情文学亚洲色图| 偷窥自拍亚洲色图精选| 久久久精品国产亚洲| 日韩黄色在线播放| 国产乱一区二区| 久久久99爱| 污污片在线免费视频| 91黄视频在线| 国产+高潮+白浆+无码| 91一区在线| 日本一区二区不卡| 亚洲精品国产精品国| 国产精品人妖ts系列视频| 精品丰满人妻无套内射| 精品国产欧美| 中文字幕在线看视频国产欧美在线看完整| 久久精品女人毛片国产| 精品在线观看视频| 日本高清不卡一区二区三| 国产精品—色呦呦| 91精品国产欧美一区二区成人| 久久成人激情视频| 国产午夜精品一区二区三区欧美| 成人美女免费网站视频| 成人高清网站| 色视频成人在线观看免| bl动漫在线观看| 狠狠综合久久av一区二区老牛| 国产欧洲精品视频| 成人性爱视频在线观看| 欧美性猛交xxxx偷拍洗澡| 91传媒理伦片在线观看| 你懂的国产精品| 91亚洲国产成人精品性色| 福利视频在线导航| 91久久精品日日躁夜夜躁欧美| 一级做a爰片毛片| 影音先锋中文字幕一区| www.成人av.com| av免费在线免费观看| 欧美精品1区2区| 婷婷社区五月天| 韩国精品在线观看| 中文字幕一区二区三区有限公司 | av成人福利| 欧美tk丨vk视频| 免费毛片在线播放免费| 国产91色综合久久免费分享| 老司机午夜免费福利视频| 少妇精品在线| 久久久久久久一区二区三区| 丰满人妻一区二区三区免费视频| 一区二区三区免费观看| 亚洲熟女一区二区三区| 亚洲黄色视屏| 蜜桃传媒视频麻豆一区| 日韩成人动漫| 日韩在线视频二区| 国产情侣av在线| 亚洲综合视频网| 国产极品一区二区| 欧美在线综合| 午夜欧美性电影| www.成人在线.com| 欧美乱大交xxxxx另类电影| www.桃色av嫩草.com| 亚洲国产精品久久人人爱蜜臀 | 亚洲视频在线a| 日韩欧美一区二区三区在线视频| 成人福利在线视频| 日本天码aⅴ片在线电影网站| 亚洲福利视频网站| 无码人妻精品一区二区三区蜜桃91| 国产亚洲va综合人人澡精品| 天天干天天av| 1024日韩| 午夜精品亚洲一区二区三区嫩草| av在线亚洲一区| 69视频在线播放| www.av在线| 日韩女优电影在线观看| 久久99国产综合精品免费| 国产精品毛片a∨一区二区三区| 中文字幕剧情在线观看| 亚洲日产国产精品| 亚洲国产精品123| 一级毛片精品毛片| 日本亚洲欧洲色α| 在线观看电影av| 亚洲人成在线播放| 亚洲第一色视频| 91久久国产最好的精华液| 欧美黑吊大战白妞| 欧美激情一区不卡| 91九色蝌蚪porny| 三级亚洲高清视频| 免费人成在线观看视频播放| 经典一区二区| 成人av播放| 狠狠久久伊人中文字幕| 欧美精品一区在线播放| 国产精品一区二区三区四区色| 日韩欧美电影在线| 中文字幕一区二区久久人妻| 精品毛片网大全| 日韩欧美综合视频| 国产调教视频一区| 水蜜桃av无码| 国产精品一区在线观看乱码| 无码人妻精品一区二区三区66| 欧美日韩一区二区国产| 亚洲欧洲一二三| 亚洲宅男网av| 国产精品久久九九| 成人在线视频国产| 国产精品999999| 美女av在线免费看| 久久久久久久国产精品视频| 久草资源在线观看| 伊人久久五月天| 四虎在线免费观看| 精品国产精品网麻豆系列| 国产一区二区三区中文字幕| 色偷偷成人一区二区三区91| 日本一区二区三区免费视频| 一二三区精品视频| 日韩在线不卡av| 国产精品视频在线看| www.av欧美| 91免费版在线| 午夜久久久久久久| a在线播放不卡| 黄色av电影网站| 懂色av中文一区二区三区| 日韩a一级欧美一级| 极品少妇一区二区| 五月六月丁香婷婷| 国内成人精品2018免费看| 久热精品在线观看视频| 日本视频一区二区三区| 黄色成人免费看| 天堂va蜜桃一区二区三区漫画版| 91国视频在线| 国产精品综合| 国产主播在线看| 免费日韩一区二区| 欧美污视频网站| 丝袜脚交一区二区| 无码人妻精品一区二区三区66| 视频一区二区国产| 五月婷婷深爱五月| 蜜桃久久久久久| 成人黄色一级大片| 国产激情一区二区三区| 亚洲区 欧美区| 成人精品一区二区三区四区 | 亚洲视频在线观看一区二区| 欧美日韩一区不卡| 国产精品日韩无码| 日韩免费在线观看| 手机看片国产1024| 亚洲精品天天看| av男人的天堂在线| 美女少妇精品视频| av丝袜在线| 日韩美女免费线视频| 国产精品第一| 98国产高清一区| 五月天亚洲色图| 视频一区二区在线| 中文精品久久| 青青青国产在线观看| 久久蜜桃资源一区二区老牛| 中文字幕第80页| 国产精品综合一区二区| 日韩成人av一区二区| 国产日韩精品久久久| 国产精品视频一区二区三| 亚洲国产成人av好男人在线观看| 黄色免费av网站| 欧美另类z0zxhd电影| 欧美 日韩 国产 在线| 亚洲日韩第一页| 99视频免费在线观看| 欧美在线影院在线视频| 日本久久二区| 九九99久久| 水蜜桃精品av一区二区| 日本阿v视频在线观看| 日本aⅴ亚洲精品中文乱码| 国产精品91av| 日本一区二区免费在线观看视频| 极品盗摄国产盗摄合集| 色婷婷精品大视频在线蜜桃视频 | 国产一区二区不卡| av直播在线观看| 亚洲日本韩国一区| 亚洲成人av影片| 精品日韩一区二区三区| av大片在线播放| 91精品国产色综合久久不卡98| 久久免费影院| 久久综合九九| 国内精品久久久久久久影视蜜臀 | 国产91精品精华液一区二区三区 | 亚洲大尺度网站| 中文字幕日韩欧美精品在线观看| 国产www视频在线观看| 国产精品久久久久久久久久东京| 超碰97久久| 国产日韩视频在线播放| 日韩av中文字幕一区二区| 亚洲中文字幕无码一区| 亚洲女与黑人做爰| 中文文字幕一区二区三三| 日韩电影中文字幕av| 日本一级理论片在线大全| 成人黄色免费网站在线观看| 欧美日本成人| 人妻精品无码一区二区三区| 成人免费三级在线| 麻豆亚洲av成人无码久久精品| 欧美日韩成人激情| 国产露出视频在线观看| 7m精品福利视频导航| 国产精品中文字幕制服诱惑| 粉嫩av一区二区三区天美传媒| 精东粉嫩av免费一区二区三区| 中文字幕第20页| 色婷婷av一区二区三区大白胸| 亚洲三级黄色片| 午夜精品理论片| 美女网站色精品尤物极品姐弟| 香港三级日本三级a视频| 国产麻豆一精品一av一免费 | 亚洲va欧美va天堂v国产综合| 国产高清视频免费观看| 久久久精品视频成人| 91精品福利观看| 一区二区视频在线观看| 六月丁香综合在线视频| 大吊一区二区三区| 欧美日韩国产精品成人| 日本中文字幕在线2020| 国产日韩中文字幕在线| 图片区亚洲欧美小说区| 欧美成人乱码一二三四区免费| 国产精品久久二区二区| 91久久久久久久久久久久| 日韩有码在线播放| 高清精品久久| 黄色成人在线免费观看| 国产+成+人+亚洲欧洲自线| 久久免费小视频| 亚洲国内高清视频| 亚洲黄色免费av| 色婷婷精品国产一区二区三区| 日本sm残虐另类| 中文字幕电影av| 亚洲成人网在线观看| 韩国美女久久| 亚洲欧美久久234| 国产精品综合一区二区| 国产成人亚洲精品自产在线| 国产视频自拍一区| 日韩av免费| 色呦呦网站入口| 不卡电影一区二区三区| 五月天综合激情网| 日韩中文字幕免费| 亚洲精品一区二区三区中文字幕 | 日本h片久久| 欧美性受黑人性爽| 成人av在线看| 高潮毛片又色又爽免费| 久久九九热免费视频| 极品束缚调教一区二区网站| 成熟老妇女视频| 亚洲欧美视频在线观看| 手机看片1024国产| 成人av电影天堂| 日韩一区二区久久| 欧美亚洲色综久久精品国产| 欧美变态tickling挠脚心| 中国字幕a在线看韩国电影| 一区二区日本| 99精品视频一区二区| 国产又粗又猛视频免费| 国精产品一区一区三区有限在线| 国产欧美日韩免费观看| 四川一级毛毛片| 色欧美88888久久久久久影院| bt在线麻豆视频| 欧美亚洲免费在线| 国产成+人+日韩+欧美+亚洲| 久久久久久亚洲av无码专区| 欧美精品免费看| 欧美日韩激情| 中文字幕乱视频|