婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > HTML5 Canvas標(biāo)簽使用收錄

HTML5 Canvas標(biāo)簽使用收錄

熱門(mén)標(biāo)簽:會(huì)聲會(huì)影怎樣做地圖標(biāo)注效果 洛陽(yáng)市伊川縣地圖標(biāo)注中心官網(wǎng) 江蘇高頻外呼系統(tǒng)線路 搜狗星級(jí)酒店地圖標(biāo)注 平頂山電子地圖標(biāo)注怎么修改 高德地圖標(biāo)注錯(cuò)誤怎么修改 地圖標(biāo)注自己去過(guò)的地方 標(biāo)準(zhǔn)智能外呼系統(tǒng) 電銷(xiāo)機(jī)器人視頻

 一、基本概念

什么是Canvas

<canvas> 是一個(gè)新的 HTML 元素,這個(gè)元素在 HTML5  中被定義。這個(gè)元素通常可以被用來(lái)在 HTML 頁(yè)面中通過(guò) JavaScript 進(jìn)行繪制圖形、合成圖像等等操作,也可以用來(lái)做一些動(dòng)畫(huà)。當(dāng)然,目前 HTML5 規(guī)范還在草稿階段,正式發(fā)布也許要等到2010年,不過(guò)現(xiàn)在已經(jīng)有不少瀏覽器已經(jīng)支持了部分 HTML5 規(guī)范。目前支持 canvas 元素的瀏覽器有 Firefox 3+、Safari 4、Chrome 2.0+ 等,因此,在運(yùn)行本頁(yè)中的例子時(shí),請(qǐng)確保你使用的是上述瀏覽器之一。

盡管在 Mozilla  已經(jīng)有不少關(guān)于 Canvas 的教程,我還是決定把自己的學(xué)習(xí)過(guò)程記錄下來(lái)。如果覺(jué)得我寫(xiě)的不夠明白,那么你可以在參考資料中找到 Mozilla 網(wǎng)站上 Canvas 教程的鏈接。

另外,可以在這里 找到一些有趣的 Canvas 示例

開(kāi)始使用 Canvas

使用 Canvas 很簡(jiǎn)單,與使用其他 HTML 元素一樣,只需要在頁(yè)面中添加一個(gè) <canvas> 標(biāo)簽即可:

代碼如下:

<canvas id="screen" width="400" height="400"></canvas>



當(dāng)然,這樣只是簡(jiǎn)單的創(chuàng)建了一個(gè) Canvas 對(duì)象而已,并沒(méi)有對(duì)它進(jìn)行任何操作,這個(gè)時(shí)候的 canvas 元素看上去與 div 元素是沒(méi)什么區(qū)別的,在頁(yè)面上什么都看不出來(lái):)
另外,canvas 元素的大小可以通過(guò) width 與 height 屬性來(lái)指定,這與 img 元素有點(diǎn)相似。

Canvas 的核心:Context
前面說(shuō)到可以通過(guò) JavaScript 來(lái)操作 Canvas 對(duì)象來(lái)進(jìn)行繪制圖形、合成圖像等操作,這些操作并不是通過(guò) Canvas 對(duì)象本身來(lái)進(jìn)行的,而是通過(guò) Canvas 對(duì)象的一個(gè)方法 getContext 獲取 Canvas 操作上下文來(lái)進(jìn)行。也就是說(shuō),在后面我們使用 Canvas 對(duì)象的過(guò)程中,都是與 Canvas 對(duì)象的 Context 打交道,而 Canvas 對(duì)象本身可以用來(lái)獲取 Canvas 對(duì)象的大小等信息。
要獲取 Canvas 對(duì)象的 Context 很簡(jiǎn)單,直接調(diào)用 canvas 元素的 getContext 方法即可,在調(diào)用的時(shí)候需要傳遞一個(gè) Context 類型參數(shù),目前可以用的并且是唯一可以用的類型值就是 2d:

<canvas id="screen" width="400" height="400"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("screen");
var ctx = canvas.getContext("2d");
</script>

Firefox 3.0.x 的尷尬

Firefox 3.0.x 雖然支持了 canvas 元素,但是并沒(méi)有完全按照規(guī)范來(lái)實(shí)現(xiàn),規(guī)范中的 fillText、 measureText 兩個(gè)方法在 Firefox 3.0.x 中被幾個(gè) Firefox 特有的方法代替,因此在 Firefox 3.0.x 中使用 Canvas 時(shí)需要先 fix 這個(gè)幾個(gè)方法在不同瀏覽器中的差別。

下面這代碼取自 Mozilla Bespin  項(xiàng)目,它修正了 Firefox 3.0.x 中 Canvas 的 Context 對(duì)象與 HTML5 規(guī)范不一致的地方:

function fixContext(ctx) {
// * upgrade Firefox 3.0.x text rendering to HTML 5 standard
if (!ctx.fillText && ctx.mozDrawText) {
ctx.fillText = function(textToDraw, x, y, maxWidth) {
ctx.translate(x, y);
ctx.mozTextStyle = ctx.font;
ctx.mozDrawText(textToDraw);
ctx.translate(-x, -y);
};
}
// * Setup measureText
if (!ctx.measureText && ctx.mozMeasureText) {
ctx.measureText = function(text) {
if (ctx.font) ctx.mozTextStyle = ctx.font;
var width = ctx.mozMeasureText(text);
return { width: width };
};
}
// * Setup html5MeasureText
if (ctx.measureText && !ctx.html5MeasureText) {
ctx.html5MeasureText = ctx.measureText;
ctx.measureText = function(text) {
var textMetrics = ctx.html5MeasureText(text);
// fake it 'til you make it
textMetrics.ascent = ctx.html5MeasureText("m").width;
return textMetrics;
};
}
// * for other browsers, no-op away
if (!ctx.fillText) {
ctx.fillText = function() {};
}
if (!ctx.measureText) {
ctx.measureText = function() { return 10; };
}
return ctx;
}

注意:到 Opera 9.5 為止,Opera 還不支持 HTML5 規(guī)范中 Canvas 對(duì)象的 fillText 以及其相關(guān)方法和屬性。

Hello, Canvas!

在對(duì) Canvas 進(jìn)行了一些初步了解后,開(kāi)始來(lái)寫(xiě)我們的第一個(gè) Canvas 程序,聞名的 HelloWorld 的又一個(gè)分支“Hello, Canvas”:

<canvas id="screen" width="400" height="400"></canvas>
<script type="text/javascript">
(function() {
var canvas = document.getElementById("screen");
var ctx = fixContext(canvas.getContext("2d"));
ctx.font = "20pt Arial";
ctx.fillText("Hello, Canvas!", 20, 20);
ctx.fillText("www.xujiwei.com", 20, 50);
function fixContext(ctx) {
// * upgrade Firefox 3.0.x text rendering to HTML 5 standard
if (!ctx.fillText && ctx.mozDrawText) {
ctx.fillText = function(textToDraw, x, y, maxWidth) {
ctx.translate(x, y);
ctx.mozTextStyle = ctx.font;
ctx.mozDrawText(textToDraw);
ctx.translate(-x, -y);
};
}
// * Setup measureText
if (!ctx.measureText && ctx.mozMeasureText) {
ctx.measureText = function(text) {
if (ctx.font) ctx.mozTextStyle = ctx.font;
var width = ctx.mozMeasureText(text);
return { width: width };
};
}
// * Setup html5MeasureText
if (ctx.measureText && !ctx.html5MeasureText) {
ctx.html5MeasureText = ctx.measureText;
ctx.measureText = function(text) {
var textMetrics = ctx.html5MeasureText(text);
// fake it 'til you make it
textMetrics.ascent = ctx.html5MeasureText("m").width;
return textMetrics;
};
}
// * for other browsers, no-op away
if (!ctx.fillText) {
ctx.fillText = function() {};
}
if (!ctx.measureText) {
ctx.measureText = function() { return 10; };
}
return ctx;
}
})();
</script>

運(yùn)行示例,Canvas 對(duì)象所在區(qū)域顯示出“Hello, World!”,這正是代碼中 ctx.fillText("Hello, World!", 20, 20); 的作用。

fillText 以及相關(guān)屬性

fillText 方法用來(lái)在 Canvas 中顯示文字,它可以接受四個(gè)參數(shù),其中最后一個(gè)是可選的:

void fillText(in DOMString text, in float x, in float y, [Optional] in float maxWidth);

其中 maxWidth 表示顯示文字時(shí)最大的寬度,可以防止文字溢出,不過(guò)我在測(cè)試中發(fā)現(xiàn)在 Firefox 與 Chomre 中指定了 maxWidth 時(shí)也沒(méi)有任何效果。

在使用 fillText 方法之前,可以通過(guò)設(shè)置 Context 的 font 屬性來(lái)調(diào)整顯示文字的字體,在上面的示例中我使用了“20pt Arial”來(lái)作為顯示文字的字體,你可以自己設(shè)置不同的值來(lái)看具體的效果。

二、路徑

圖形的基礎(chǔ) - 路徑

在 Canvas 中,所有基本圖形都是以路徑為基礎(chǔ)的,也就是說(shuō),我們?cè)谡{(diào)用 2dContext 的 lineTo、rect 等方法時(shí),其實(shí)就是往已經(jīng)的 context 路徑集合中再添加一些路徑點(diǎn),在最后使用 fill 或 stroke 方法進(jìn)行繪制時(shí),都是依據(jù)這些路徑點(diǎn)來(lái)進(jìn)行填充或畫(huà)線。

在每次開(kāi)始繪制路徑前,都應(yīng)該使用 context.beginPath() 方法來(lái)告訴 Context 對(duì)象開(kāi)始繪制一個(gè)新的路徑,否則接下來(lái)繪制的路徑會(huì)與之前繪制的路徑疊加,在填充或畫(huà)邊框時(shí)就會(huì)出現(xiàn)問(wèn)題。在繪制完成路徑后,可以直接使用 context.closePath() 方法來(lái)關(guān)閉路徑,或者手動(dòng)關(guān)閉路徑。另外,如果在填充時(shí)路徑?jīng)]有關(guān)閉,那么 Context 會(huì)自動(dòng)調(diào)用 closePath 方法將路徑關(guān)閉。

基本路徑方法

1. beginPath, closePath

這兩個(gè)方法在前面已經(jīng)介紹過(guò),分別用來(lái)通知 Context 開(kāi)始一個(gè)新的路徑和關(guān)閉當(dāng)前的路徑。

在 Canvas 中使用路徑時(shí),應(yīng)該要保持一個(gè)良好的習(xí)慣,每次開(kāi)始繪制路徑前都要調(diào)用一次 beginPath 方法,否則畫(huà)出來(lái)的效果難看不說(shuō),還會(huì)嚴(yán)重影響性能。

在下面這張圖中,左邊的圖形在每次繪制矩形前都調(diào)用了一次 beginPath 來(lái)清除之前的路徑并重新開(kāi)始繪制新的路徑,而后面的圖形則就只在繪制所有圖形前調(diào)用了一次 beginPath 來(lái)清除路徑,因此,雖然這里是使用的邊框色是 #666,但是右邊的圖形顏色比左邊的深一些,因?yàn)槊看问褂?nbsp;stroke 繪制邊框時(shí),會(huì)把之前的路徑再次繪制一遍,疊加起來(lái)顏色就比原來(lái)深一些。

<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.strokeStyle = "#666";
function useBeginPath() {
for (var i = 0; i < 5; ++i) {
ctx.beginPath();
ctx.rect(10 + i*20, 10 + i*20, 210 - i*40, 210 - i*40);
ctx.stroke();
}
}
function notUseBeginPath() {
ctx.beginPath();
for (var i = 0; i < 5; ++i) {
ctx.rect(240 + i*20, 10 + i*20, 210 - i*40, 210 - i*40);
ctx.stroke();
}
}
useBeginPath();
notUseBeginPath();
</script>

在 Context 中路徑數(shù)較少時(shí),如果不考慮顯示效果,性能上還可以接受,但是如果 Context 中的路徑數(shù)很多時(shí),在開(kāi)始繪制新路徑前不使用 beginPath 的話,因?yàn)槊看卫L制都要將之前的路徑重新繪制一遍,這時(shí)性能會(huì)以指數(shù)下降。

因此,除非有特殊需要,每次開(kāi)始繪制路徑前都要調(diào)用 beginPath 來(lái)開(kāi)始新路徑。


2. 移動(dòng)與直線 moveTo, lineTo, rect

<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(10, 10);
ctx.lineTo(110,110);
ctx.lineTo(10, 110);
ctx.lineTo(10, 10);
ctx.stroke();
ctx.beginPath();
ctx.rect(120, 10, 100, 100);
ctx.stroke();
</script>


void moveTo(in float x, in float y);

在 Canvas 中繪制路徑,一般是不需要指定起點(diǎn)的,默認(rèn)的起點(diǎn)就是上一次繪制路徑的終點(diǎn),因此,如果需要指定起點(diǎn)的話,就需要使用 moveTo 方法來(lái)指定要移動(dòng)到的位置。

void lineTo(in float x, in float y);

lineTo 方法則是繪制一條直接路徑到指定的位置。在調(diào)用完 lineTo 方法后,Context 內(nèi)部的繪制起點(diǎn)會(huì)移動(dòng)到直線的終點(diǎn)。

void rect(in float x, in float y, in float w, in float h);

rect 方法用來(lái)繪制一個(gè)矩形路徑,通過(guò)參數(shù)指定左上角位置以及寬和高。在調(diào)用 rect 后,Context 的繪制起點(diǎn)會(huì)移動(dòng)到 rect 繪制的矩形的左上角。

rect 方法與后面要介紹的 arc 方法與其他路徑方法有一點(diǎn)不同,它們是使用參數(shù)指定起點(diǎn)的,而不是使用 Context 內(nèi)部維護(hù)的起點(diǎn)。

3. 曲線 arcTo, arc, quadraticCurveTo, bezierCurveTo

void arcTo(in float x1, in float y1, in float x2, in float y2, in float radius);

按照 WHATWG 文檔的說(shuō)明,這個(gè)方法是畫(huà)一個(gè)與兩條射線相切的的圓弧,兩條射線其中一條為穿過(guò) Context 繪制起點(diǎn),終點(diǎn)為 (x1, y1),另外一條為穿過(guò) (x2, y2),終點(diǎn)為 (x1, y1),這條圓弧為最小的與這兩條射線相切的圓弧。在調(diào)用完 arcTo 方法后,將 圓弧與 射線 (x1, y1)-(x2, y2) 的切點(diǎn)添加到當(dāng)前路徑中,做為下次繪制的起點(diǎn)。

在測(cè)試中發(fā)現(xiàn),F(xiàn)irefox 和 Opera 目前對(duì)這個(gè)方法的支持并不好,只有 Chrome 和 Safari 4 能繪制出正確的路徑。

<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.strokeStyle = "#000";
ctx.translate(200, 200);
ctx.moveTo(10, 10);
ctx.arcTo(110, 60, 10, 110, 30);
ctx.stroke();
ctx.beginPath();
ctx.strokeStyle = "#999";
ctx.moveTo(10, 6);
ctx.lineTo(114, 60);
ctx.lineTo(10, 114);
ctx.stroke();
</script>

void arc(in float x, in float y, in float radius, in float startAngle, in float endAngle, in boolean anticlockwise);

arc 方法用來(lái)繪制一段圓弧路徑,通過(guò)圓心位置、起始弧度、終止弧度來(lái)指定圓弧的位置和大小,這個(gè)方法也 依賴于 Context 維護(hù)的繪制起點(diǎn)。而在畫(huà)圓弧時(shí)的旋轉(zhuǎn)方向則由最后一個(gè)參數(shù) anticlockwise 來(lái)指定,如果為 true 就是逆時(shí)針,false 則為順時(shí)針。

void quadraticCurveTo(in float cpx, in float cpy, in float x, in float y);

quadraticCurveTo 方法用來(lái)繪制二次樣條曲線路徑,參數(shù)中 cpx 與 cpy 指定控制點(diǎn)的位置,x 和 y 指定終點(diǎn)的位置,起點(diǎn)則是由 Context 維護(hù)的繪制起點(diǎn)。

void bezierCurveTo(in float cp1x, in float cp1y, in float cp2x, in float cp2y, in float x, in float y);

bezierCurveTo 方法用來(lái)繪制貝塞爾曲線路徑,它與 quadraticCurveTo 相似,不過(guò)貝塞爾曲線有兩個(gè)控制點(diǎn),因此參數(shù)中的 cp1x, cp1y, cp2x, cp2y 用來(lái)指定兩個(gè)控制點(diǎn)的位置,而 x 和 y 指定綹的位置。

<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.translate(10, 10);
ctx.beginPath();
ctx.arc(50, 50, 50, 0, Math.PI, true);
ctx.stroke();
// quadraticCurveTo
ctx.beginPath();
ctx.strokeStyle = "#000";
ctx.moveTo(110, 50);
ctx.quadraticCurveTo(160, 0, 210, 50);
ctx.stroke();
ctx.beginPath();
ctx.strokeStyle = "red";
ctx.moveTo(110, 50);
ctx.lineTo(160, 0);
ctx.lineTo(210, 50);
ctx.stroke();
// bezierCurveTo
ctx.beginPath();
ctx.strokeStyle = "#000";
ctx.moveTo(220, 50);
ctx.bezierCurveTo(250, 0, 280, 10, 320, 50);
ctx.stroke();
ctx.beginPath();
ctx.strokeStyle = "red";
ctx.moveTo(220, 50);
ctx.lineTo(250, 0);
ctx.lineTo(280, 10);
ctx.lineTo(320, 50);
ctx.stroke();
</script>

4. fill, stroke, clip

fill 與 stroke 這兩個(gè)方法很好理解,分別用來(lái)填充路徑與繪制路徑線條。

clip 方法用來(lái)給 Canvas 設(shè)置一個(gè)剪輯區(qū)域,在調(diào)用 clip 方法之后的代碼只對(duì)這個(gè)設(shè)定的剪輯區(qū)域有效,不會(huì)影響其他地方,這個(gè)方法在要進(jìn)行局部更新時(shí)很有用。默認(rèn)情況下,剪輯區(qū)域是一個(gè)左上角在 (0, 0),寬和高分別等于 Canvas 元素的寬和高的矩形。

在畫(huà)這個(gè)圖時(shí),雖然兩次都是使用 fillRect(0, 0, 100, 100) 填充了一個(gè) 100x100 大小矩形,但是顯示的結(jié)果卻是第二次填充的只是中間的一小塊,這是因?yàn)樵趦纱翁畛渲g使用 clip 方法設(shè)定了剪輯區(qū)域,這樣第二次填充時(shí)只會(huì)影響到所設(shè)定的中間那一小部分區(qū)域。

<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.translate(10, 10);
// fill a green rectangle
ctx.fillStyle = "green";
ctx.fillRect(0, 0, 100, 100);
// set the clipping region
ctx.beginPath();
ctx.rect(30, 30, 40, 40);
ctx.clip();
ctx.stroke();
// fill a yellow rectangle
ctx.fillStyle = "yellow";
ctx.fillRect(0, 0, 100, 100);
</script>

5. clearRect, fillRect, strokeRect

這三個(gè)方法并不是路徑方法,而是用來(lái)直接處理 Canvas 上的內(nèi)容,相當(dāng)于 Canvas 的背景,調(diào)用這三個(gè)方法也不會(huì)影響 Context 繪圖的起點(diǎn)。

要清除 Canvas 上的所有內(nèi)容時(shí),可以直接調(diào)用 context.clearRect(0, 0, width, height) 來(lái)直接清除,而不需要使用路徑方法繪制一個(gè)與 Canvas 同等大小的矩形路徑再使用 fill 方法去清除。

結(jié)語(yǔ)

通過(guò) Canvas 的路徑方法,可以使用 Canvas 處理一些簡(jiǎn)單的矢量圖形,這樣在縮放時(shí)也不會(huì)失真。不過(guò) Canvas 的路徑方法也不是很強(qiáng)大,至少連個(gè)橢圓的路徑都沒(méi)有……

參考資料
1. The Canvas Element, WHATWG

標(biāo)簽:廣東 廣西 果洛 阿克蘇 蚌埠 鄂爾多斯 常德 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 Canvas標(biāo)簽使用收錄》,本文關(guān)鍵詞  HTML5,Canvas,標(biāo)簽,使用,收錄,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 Canvas標(biāo)簽使用收錄》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于HTML5 Canvas標(biāo)簽使用收錄的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人午夜激情影院| 欧美一区二区三区日韩| 亚洲欧美日韩国产成人精品影院| 欧美精品乱码久久久久久按摩| 国产在线国偷精品免费看| 亚洲国产乱码最新视频| 国产欧美一区二区精品性色| 在线成人免费视频| 色乱码一区二区三区88| 99精品久久只有精品| 国产精品亚洲第一区在线暖暖韩国 | 欧美精品v国产精品v日韩精品| 大美女一区二区三区| 精品亚洲欧美一区| 麻豆高清免费国产一区| 日本在线不卡一区| 亚洲国产视频一区| 亚洲最大成人网4388xx| 亚洲乱码日产精品bd| 亚洲色图制服诱惑| 亚洲最快最全在线视频| 亚洲成人福利片| 亚洲福利一区二区三区| 偷拍亚洲欧洲综合| 污片在线观看一区二区| 亚洲综合丁香婷婷六月香| 亚洲一区二区在线视频| 亚洲一区二区三区自拍| 亚洲成av人影院在线观看网| 日韩影视精彩在线| 免费观看日韩av| 久久99国产精品麻豆| 国产成人av一区二区三区在线| 国产91丝袜在线18| 91一区一区三区| 欧美日韩中文一区| 日韩一级大片在线| 欧美国产精品中文字幕| 中文字幕综合网| 一区二区久久久久| 美女视频黄a大片欧美| 国产高清无密码一区二区三区| 国产白丝网站精品污在线入口| 99精品国产热久久91蜜凸| 欧美日韩一区在线观看| 日韩亚洲欧美高清| 国产精品视频线看| 亚洲国产美国国产综合一区二区| 毛片不卡一区二区| www.亚洲国产| 91精品欧美一区二区三区综合在 | 国产激情一区二区三区| 国产不卡视频在线观看| 在线观看不卡视频| 日韩欧美在线123| 日韩伦理免费电影| 免费一级片91| 97久久精品人人爽人人爽蜜臀 | 成人高清在线视频| 亚洲成a人片在线观看中文| 韩国av一区二区三区四区| 99久久99久久免费精品蜜臀| 美国十次了思思久久精品导航| 成人sese在线| 日韩午夜激情电影| 亚洲激情欧美激情| 国产精品久久久久久久久搜平片 | 亚洲国产精品激情在线观看| 亚洲黄色尤物视频| 狠狠色狠狠色合久久伊人| 91黄色激情网站| 久久人人超碰精品| 亚洲成人免费观看| 91丝袜高跟美女视频| 欧美精品一区二区三区很污很色的| 一区二区三区欧美| 成人一区二区三区视频在线观看| 欧美一区二区福利视频| 亚洲在线观看免费视频| 从欧美一区二区三区| 久久综合色综合88| 日本女人一区二区三区| 欧美亚洲国产bt| 日韩美女视频19| 成人福利在线看| 久久精品视频一区二区三区| 日本成人在线电影网| 欧美日韩三级视频| 一区二区三区电影在线播| www.欧美色图| 综合在线观看色| www.亚洲在线| 亚洲美女免费在线| 93久久精品日日躁夜夜躁欧美| 精品国产免费人成电影在线观看四季| 婷婷成人激情在线网| 欧美日韩小视频| 午夜久久久久久久久| 欧美精品在欧美一区二区少妇| 亚洲高清免费观看高清完整版在线观看| 成人app软件下载大全免费| 国产日本亚洲高清| 成人开心网精品视频| 国产精品久久久久久久久免费相片| 国产麻豆精品视频| 久久久亚洲高清| 成人av电影在线| 亚洲天堂av一区| 天天操天天色综合| 日韩欧美在线综合网| 国内成人精品2018免费看| 久久综合色综合88| 成人18视频日本| 亚洲丝袜自拍清纯另类| 欧美日韩成人综合| 老色鬼精品视频在线观看播放| 日韩精品一区二区三区中文精品| 免费在线观看日韩欧美| 精品国产三级电影在线观看| 国产一区二三区好的| 最新日韩av在线| 精品视频免费看| 国产真实乱偷精品视频免| 日本一区二区动态图| 欧美系列在线观看| 日本韩国视频一区二区| 亚洲国产视频直播| 2020国产精品自拍| 色哟哟在线观看一区二区三区| 首页国产丝袜综合| 国产日产欧产精品推荐色| 欧美伊人精品成人久久综合97| 久久精品国产在热久久| 中文字幕五月欧美| 欧美乱妇15p| 国产91精品入口| 亚洲成人在线观看视频| 欧美国产精品一区| 91精品国产黑色紧身裤美女| 不卡影院免费观看| 精品午夜久久福利影院| 亚洲欧美国产77777| 久久精品一区四区| 欧美另类久久久品| 波多野结衣精品在线| 久久精品国产精品青草| 亚洲视频免费在线| 久久免费电影网| 欧美精品乱码久久久久久按摩| 99精品视频在线观看免费| 国产专区综合网| 亚洲1区2区3区视频| 亚洲欧美日韩国产另类专区| 久久亚洲精品小早川怜子| 9191国产精品| 欧洲亚洲国产日韩| 99久久综合精品| 国产成人在线网站| 欧美变态tickling挠脚心| 欧美性色欧美a在线播放| av电影在线观看一区| 粉嫩在线一区二区三区视频| 久久99精品国产麻豆婷婷洗澡| 免费看日韩精品| 日韩在线一区二区三区| 三级欧美在线一区| 一区二区免费在线| 亚洲国产一区在线观看| 亚洲精品中文在线影院| 一区二区三区在线观看欧美| 亚洲欧美综合网| 日韩一区在线播放| 中文字幕免费观看一区| 国产亚洲自拍一区| 亚洲国产成人在线| 国产精品美女久久久久久| 亚洲欧洲国产日韩| 亚洲人成影院在线观看| 一区二区三区免费网站| 亚洲综合男人的天堂| 一区二区三区四区精品在线视频| 一区二区在线电影| 亚洲制服欧美中文字幕中文字幕| 又紧又大又爽精品一区二区| 一区二区三区欧美日韩| 亚洲综合av网| 天天亚洲美女在线视频| 青青草成人在线观看| 激情丁香综合五月| 国产成人h网站| 国产99精品视频| 91麻豆精东视频| 欧美在线不卡一区| 91精品国产一区二区| 日韩你懂的电影在线观看| www久久精品| 亚洲男女毛片无遮挡| 图片区小说区国产精品视频| 国产精一区二区三区| 91色九色蝌蚪|