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

原生 CSS Custom Highlight 終于來了

開發(fā) 前端
一個瀏覽器原生支持的 CSS 文本高亮高亮功能,官方名稱叫做 CSS Custom Highlight API,有了它,可以在不改變 dom 結(jié)構(gòu)的情況下自定義任意文本的樣式。

介紹一個比較前沿但是非常有用的新特性:一個瀏覽器原生支持的 CSS? 文本高亮高亮功能,官方名稱叫做 CSS Custom Highlight API[1],有了它,可以在不改變 dom 結(jié)構(gòu)的情況下自定義任意文本的樣式,例如:

圖片

再例如搜索詞高亮。

圖片

還可以輕易實現(xiàn)代碼高亮。

圖片

多么令人興奮的功能啊,現(xiàn)在在 Chrome 105 中已經(jīng)正式支持了(無需開啟實驗特性),一起學(xué)習(xí)一下吧

一、偽元素 ::highlight()

要自定義任意文本樣式需要 CSS 和 JS 的共同作用。

首先來看 CSS 部分,一個新的偽元素,非常簡單、

::highlight(custom-highlight-name) {
color: red
}

和::selection這類偽元素比較類似,僅支持部分文本相關(guān)樣式,如下

  • 文本顏色 color。
  • 背景顏色 background-color。
  • 文本修飾 text-decoration。
  • 文本陰影 text-shadow。
  • 文本描邊 -webkit-text-stroke。
  • 文本填充 -webkit-text-fill-color。

注意,注意,注意不支持background-image,也就是漸變之類的也不支持。

但是,僅僅知道這個偽類是沒用的,她還需要一個“參數(shù)”,也就是上面的custom-highlight-name,表示高亮的名稱,那這個是怎么來的呢?或者換句話說,如何去標(biāo)識頁面中需要自定義樣式的那部分文本呢?

這就需要借助下面的內(nèi)容了,看看如何生成這個“參數(shù)”,這才是重點

二、CSS Custom Highlight API

大部分操作其實和這個原理是相同的,只是把拿到的選區(qū)做了進(jìn)一步處理,具體分以下幾步

1、創(chuàng)建選區(qū)(重點)

首先,通過Range[2]對象創(chuàng)建文本選擇范圍,就像用鼠標(biāo)滑過選區(qū)一樣,這也是最復(fù)雜的一部分,例如:

const parentNode = document.getElementById("foo");

const range1 = new Range();
range1.setStart(parentNode, 10);
range1.setEnd(parentNode, 20);

const range2 = new Range();
range2.setStart(parentNode, 40);
range2.setEnd(parentNode, 60);

這樣可以得到選區(qū)對象range1、range2。

2、創(chuàng)建高亮

然后,將創(chuàng)建的選區(qū)高亮實例化,需要用到Highlight[3]對象。

const highlight = new Highlight(range1, range2, ...);

當(dāng)然也可以根據(jù)需求創(chuàng)建多個。

const highlight1 = new Highlight(user1Range1, user1Range2);
const highlight2 = new Highlight(user2Range1, user2Range2, user2Range3);

這樣可以得到高亮對象highlight1、highlight2。

3、注冊高亮

接著,需要將實例化的高亮對象通過[CSS.Highlight](HighlightRegistry - Web APIs | MDN (mozilla.org "CSS.Highlight"))注冊到頁面。

有點類似于Map對象的操作。

CSS.highlights.set("highlight1", highlight1);
CSS.highlights.set("highlight2", highlight2);

目前兼容性比較差,所以需要額外判斷一下。

if (CSS.highlights) {
//...支持CSS.highlights
}

注意看,上面注冊的key名,highlight1就是上一節(jié)提到的高亮名稱,也就是 CSS 中需要的“參數(shù)”

4、自定義樣式

最后,將定義的高亮名稱結(jié)合::highlight,這樣就可以自定義選中樣式了

::highlight(highlight1) {
background-color: yellow;
color: black;
}

以上就是全部過程了,稍顯復(fù)雜,但是還是比較好理解的,關(guān)鍵是第一步創(chuàng)建選區(qū)的過程,最為復(fù)雜。

圖片

原理就是這樣,下面看一些實例。

三、彩虹文本

現(xiàn)在來實現(xiàn)文章開頭圖示效果,彩虹文本效果??偣?種顏色,文字依次變色,不斷循環(huán),而且僅有一個標(biāo)簽。

<p id="rainbow-text">CSS Custom Highlight API</p>

這里總共有7?種顏色,所以需要創(chuàng)建7?個高亮區(qū)域,可以先定義高亮 CSS,如下:

::highlight(rainbow-color-1) { color: #ad26ad;  text-decoration: underline; }
::highlight(rainbow-color-2) { color: #5d0a99; text-decoration: underline; }
::highlight(rainbow-color-3) { color: #0000ff; text-decoration: underline; }
::highlight(rainbow-color-4) { color: #07c607; text-decoration: underline; }
::highlight(rainbow-color-5) { color: #b3b308; text-decoration: underline; }
::highlight(rainbow-color-6) { color: #ffa500; text-decoration: underline; }
::highlight(rainbow-color-7) { color: #ff0000; text-decoration: underline; }

現(xiàn)在肯定不會有什么變化,因為還沒創(chuàng)建選區(qū)

圖片

先創(chuàng)建一個高亮區(qū)域試試,比如第一個文字。

const textNode = document.getElementById("rainbow-text").firstChild;
if (CSS.highlights) {
const range = new Range();
range.setStart(textNode, 0); // 選區(qū)起點
range.setEnd(textNode, 1); // 選區(qū)終點
const Highlight = new Highlight(range);
CSS.highlights.set(`rainbow-color-1`, Highlight);
}

效果如下:

圖片

下面通過循環(huán),創(chuàng)建7個高亮區(qū)域。

const textNode = document.getElementById("rainbow-text").firstChild;

if (CSS.highlights) {

const highlights = [];
for (let i = 0; i < 7; i++) {
// 給每個顏色實例化一個Highlight對象
const colorHighlight = new Highlight();
highlights.push(colorHighlight);

// 注冊高亮
CSS.highlights.set(`rainbow-color-${i + 1}`, colorHighlight);
}

// 遍歷文本節(jié)點
for (let i = 0; i < textNode.textContent.length; i++) {
// 給每個字符創(chuàng)建一個選區(qū)
const range = new Range();
range.setStart(textNode, i);
range.setEnd(textNode, i + 1);

// 添加到高亮
highlights[i % 7].add(range);
}
}

這樣就在不改變dom的情況下實現(xiàn)了彩虹文字效果。

圖片

完整代碼可以查看以下任意鏈接:(注意需要Chrome 105+)

  • CSS Custom Highlight API (juejin.cn)[4]
  • CSS Custom Highlight API (codepen.io)[5]
  • CSS Custom Highlight API (runjs.work)[6]

四、文本搜索高亮

大家都知道瀏覽器的搜索功能,ctrl+f就可以快速對整個網(wǎng)頁就行查找,查找到的關(guān)鍵詞會添加黃色背景的高亮,如下:

圖片

以前一直很疑惑這個顏色是怎么添加的,畢竟沒有任何包裹標(biāo)簽?,F(xiàn)在有了CSS Custom Highlight API ,完全可以手動實現(xiàn)一個和原生瀏覽器一模一樣的搜索高亮功能。

到目前為止,還無法自定義原生搜索高亮的黃色背景,以后可能會開放。

假設(shè)HTML結(jié)構(gòu)是這樣的,一個搜索框和一堆文本。

<label>搜索 <input id="query" type="text"></label>
<article>
<p>
閱文旗下囊括 QQ 閱讀、起點中文網(wǎng)、新麗傳媒等業(yè)界知名品牌,匯聚了強大的創(chuàng)作者陣營、豐富的作品儲備,覆蓋 200 多種內(nèi)容品類,觸達(dá)數(shù)億用戶,已成功輸出《慶余年》《贅婿》《鬼吹燈》《全職高手》《斗羅大陸》《瑯琊榜》等大量優(yōu)秀網(wǎng)文 IP,改編為動漫、影視、游戲等多業(yè)態(tài)產(chǎn)品。
</p>
<p>
《盜墓筆記》最初連載于起點中文網(wǎng),是南派三叔成名代表作。2015年網(wǎng)劇開播首日點擊破億,開啟了盜墓文學(xué) IP 年。電影于2016年上映,由井柏然、鹿晗、馬思純等主演,累計票房10億元。
</p>
<p>
慶余年》是閱文集團(tuán)白金作家貓膩的作品,自2007年在起點中文網(wǎng)連載,持續(xù)保持歷史類收藏榜前五位。改編劇集成為2019年現(xiàn)象級作品,播出期間登上微博熱搜百余次,騰訊視頻、愛奇藝雙平臺總播放量突破160億次,并榮獲第26屆白玉蘭獎最佳編?。ǜ木帲⒆罴涯信浣莾身棿螵?。
</p>
<p>《鬼吹燈》是天下霸唱創(chuàng)作的經(jīng)典懸疑盜墓小說,連載于起點中文網(wǎng)。先后進(jìn)行過漫畫、游戲、電影、網(wǎng)絡(luò)電視劇的改編,均取得不俗的成績,是當(dāng)之無愧的超級IP。</p>
</article>

簡單美化一下后效果如下:

圖片

然后就是監(jiān)聽輸入框,遍歷文本節(jié)點(推薦使用原生的treeWalker,當(dāng)然普通的遞歸也可以),根據(jù)搜索詞創(chuàng)建選區(qū),詳細(xì)代碼如下。

const query = document.getElementById("query");
const article = document.querySelector("article");

// 創(chuàng)建 createTreeWalker 迭代器,用于遍歷文本節(jié)點,保存到一個數(shù)組
const treeWalker = document.createTreeWalker(article, NodeFilter.SHOW_TEXT);
const allTextNodes = [];
let currentNode = treeWalker.nextNode();
while (currentNode) {
allTextNodes.push(currentNode);
currentNode = treeWalker.nextNode();
}

// 監(jiān)聽inpu事件
query.addEventListener("input", () => {
// 判斷一下是否支持 CSS.highlights
if (!CSS.highlights) {
article.textContent = "CSS Custom Highlight API not supported.";
return;
}

// 清除上個高亮
CSS.highlights.clear();

// 為空判斷
const str = query.value.trim().toLowerCase();
if (!str) {
return;
}

// 查找所有文本節(jié)點是否包含搜索詞
const ranges = allTextNodes
.map((el) => {
return { el, text: el.textContent.toLowerCase() };
})
.map(({ text, el }) => {
const indices = [];
let startPos = 0;
while (startPos < text.length) {
const index = text.indexOf(str, startPos);
if (index === -1) break;
indices.push(index);
startPos = index + str.length;
}

// 根據(jù)搜索詞的位置創(chuàng)建選區(qū)
return indices.map((index) => {
const range = new Range();
range.setStart(el, index);
range.setEnd(el, index + str.length);
return range;
});
});

// 創(chuàng)建高亮對象
const searchResultsHighlight = new Highlight(...ranges.flat());

// 注冊高亮
CSS.highlights.set("search-results", searchResultsHighlight);
});

最后,通過CSS設(shè)置高亮的顏色。

::highlight(search-results) {
background-color: #f06;
color: white;
}

實時搜索效果如下:

圖片

完整代碼可以查看以下任意鏈接:(注意需要Chrome 105+)

  • CSS Highlight search (juejin.cn)[7]
  • CSS Highlight search (codepen.io)[8]
  • CSS Highlight search (runjs.work)[9]

還可以將高亮效果改成波浪線。

::highlight(search-results) {
text-decoration: underline wavy #f06;
}

效果如下,是不是也可用作錯別字標(biāo)識呢?

圖片

除了避免dom?操作帶來的便利外,性能也能得到極大的提升,畢竟創(chuàng)建、移除dom也是性能大戶,下面是一個測試 demo,搬運自

??https://ffiori.github.io/highlight-api-demos/demo-performance.html??[10]

測試代碼可以查看以下任意鏈接:

  • Highlight performance demo (juejin.cn)[11]
  • Highlight performance demo (codepen.io)[12]
  • Highlight performance demo (runjs.work)[13]

測試效果如下:

圖片

在10000?個節(jié)點的情況下,兩者相差100倍的差距!而且數(shù)量越大,性能差距越明顯,甚至直接導(dǎo)致瀏覽器卡死!

五、代碼高亮編輯器

最后再來看一個非常實用的例子,可以輕易實現(xiàn)一個代碼高亮的編輯器。

假設(shè) HTML結(jié)構(gòu)是這樣的,很簡單,就一個純文本的標(biāo)簽。

<pre class="editor" id="code">ul{
min-height: 0;
}
.sub {
display: grid;
grid-template-rows: 0fr;
transition: 0.3s;
overflow: hidden;
}
:checked ~ .sub {
grid-template-rows: 1fr;
}
.txt{
animation: color .001s .5 linear forwards;
}
@keyframes color {
from {
color: var(--c1)
}
to{
color: var(--c2)
}
}</pre>

簡單修飾一下,設(shè)置為可編輯元素。

.editor{
white-space: pre-wrap;
-webkit-user-modify: read-write-plaintext-only; /* 讀寫純文本 */
}

效果如下:

圖片

那么,如何讓這些代碼高亮呢?

這就需要對內(nèi)容進(jìn)行關(guān)鍵詞分析提取了,我們可以用現(xiàn)有的代碼高亮庫,比如highlight.js[14]。

hljs.highlight(pre.textContent, {
language: 'css'
})._emitter.rootNode.children

通過這個方法可以獲取到CSS語言的關(guān)鍵詞以及類型,如下:

圖片

簡單解釋一下,這是一個數(shù)組,如果是純文本,表示普通的字符,如果是對象,表示是關(guān)鍵詞,例如第一個,children?里面的ul?就是關(guān)鍵詞,類型是selector-tag?,也就是選擇器,除此之外,還有attribute、number、selector-class等各種類型。有了這些關(guān)鍵詞,我們就可以把這些文本單獨選取出來,然后高亮成不同的顏色。

接下來,就需要對代碼內(nèi)容進(jìn)行遍歷了,方法也是類似的,如下:

const nodes = pre.firstChild
const text = nodes.textContent
const highlightMap = {}
let startPos = 0;
words.filter(el => el.scope).forEach(el => {
const str = el.children[0]
const scope = el.scope
const index = text.indexOf(str, startPos);
if (index < 0) {
return
}
const item = {
start: index,
scope: scope,
end: index + str.length,
str: str
}
if (highlightMap[scope]){
highlightMap[scope].push(item)
} else {
highlightMap[scope] = [item]
}
startPos = index + str.length;
})
Object.entries(highlightMap).forEach(function([k,v]){
const ranges = v.map(({start, end}) => {
const range = new Range();
range.setStart(nodes, start);
range.setEnd(nodes, end);
return range;
});
const highlight = new Highlight(...ranges.flat());
CSS.highlights.set(k, highlight);
})
}
highlights(code)
code.addEventListener('input', function(){
highlights(this)
})

最后,根據(jù)不同的類型,定義不同的顏色就行了,如下:

::highlight(built_in) {
color: #c18401;
}
::highlight(comment) {
color: #a0a1a7;
font-style: italic;
}
::highlight(number),
::highlight(selector-class){
color: #986801;
}
::highlight(attr) {
color: #986801;
}
::highlight(string) {
color: #50a14f;
}
::highlight(selector-pseudo) {
color: #986801;
}
::highlight(attribute) {
color: #50a14f;
}
::highlight(keyword) {
color: #a626a4;
}

這樣就得到了一個支持代碼高亮的簡易編輯器了。

圖片

相比傳統(tǒng)的編輯器而言,這個屬于純文本編輯,非常輕量,在高亮的同時也不會影響光標(biāo),因為不會生成新的??dom??,性能也是超級棒。

圖片

完整代碼可以查看以下任意鏈接:

  • CSS highlight editor (juejin.cn)[15]
  • CSS highlight editor (codepen.io)[16]
  • CSS highlight editor (runjs.work)[17]

六、最后總結(jié)一下

以上就是關(guān)于CSS Custom Highlight API的使用方式以及應(yīng)用示例了,下面再來回顧一下使用步驟:

  1. 創(chuàng)建選區(qū),new Range。
  2. 創(chuàng)建高亮,new Highlight。
  3. 注冊高亮,CSS.highlights.set。
  4. 自定義樣式,::highlight()。

相比傳統(tǒng)使用標(biāo)簽的方式而已,有很多優(yōu)點

  1. 使用場景更廣泛,很多情況下不能修改dom或者成本極大
  2. 性能更高,避免了操作dom?帶來的額外開銷,在dom?較多情況下性能差異至少100倍
  3. 幾乎沒有副作用,能有效減少dom變化引起的其他影響,比如光標(biāo)選區(qū)的處理

其實歸根結(jié)底,都是dom?變化帶來的,而Highlight API恰好能有效避開這個問題。當(dāng)然也有一些缺陷,由于僅僅能改變文本相關(guān)樣式,所以也存在一些局限性,這個就需要權(quán)衡了,目前兼容性也還不足,僅適用于內(nèi)部項目,敬請期待

參考資料

[1]CSS Custom Highlight API: https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API。

[2]Range: https://developer.mozilla.org/en-US/docs/Web/API/Range。

[3]Highlight: https://developer.mozilla.org/en-US/docs/Web/API/Highlight。

[4]CSS Custom Highlight API (juejin.cn): https://code.juejin.cn/pen/7198496899391815736。

[5]CSS Custom Highlight API (codepen.io): https://codepen.io/xboxyan/pen/qByzGYr。

[6]CSS Custom Highlight API (runjs.work): https://runjs.work/projects/450431c8f0064298。

[7]CSS Highlight search (juejin.cn): https://code.juejin.cn/pen/7198488612801871929。

[8]CSS Highlight search (codepen.io): https://codepen.io/xboxyan/pen/eYjwoqo。

[9]CSS Highlight search (runjs.work): https://runjs.work/projects/a661feba3dad44c9。

[10]https://ffiori.github.io/highlight-api-demos/demo-performance.html: https://ffiori.github.io/highlight-api-demos/demo-performance.html。

[11]Highlight performance demo (juejin.cn): https://code.juejin.cn/pen/7198487962978353208。

[12]Highlight performance demo (codepen.io): https://codepen.io/xboxyan/pen/YzjoMmp。

[13]Highlight performance demo (runjs.work): https://runjs.work/projects/e5fe09f70d324d99。

[14]highlight.js: https://highlightjs.org/。

[15]CSS highlight editor (juejin.cn): https://code.juejin.cn/pen/7198487629262749756。

[16]CSS highlight editor (codepen.io): https://codepen.io/xboxyan/pen/RwBzOmK。

[17]CSS highlight editor (runjs.work): https://runjs.work/projects/9ff7ab8f12844ce1。

責(zé)任編輯:姜華 來源: 前端偵探
相關(guān)推薦

2023-05-29 08:38:56

popover控制懸浮層

2024-07-17 10:16:21

2023-01-27 09:14:35

CSS原生嵌套

2024-05-23 10:34:15

CSS 3CSS技術(shù)

2025-07-29 00:00:00

2022-09-29 12:20:48

CSS容器查詢

2025-06-06 08:13:47

2021-04-20 08:03:26

單播協(xié)議TCP

2024-08-15 11:37:05

2017-04-17 09:01:39

科技新聞早報

2009-10-22 08:50:33

Windows 7上市新聞

2013-07-12 09:59:58

Android 5.0

2023-02-10 07:39:58

云原生KubernetesCRD

2021-10-22 15:45:32

開發(fā)技能React

2013-08-28 10:27:14

騰訊云百度云

2025-09-16 07:06:40

2023-03-03 07:34:05

2024-04-03 14:53:05

iOS 17.5側(cè)載

2023-10-25 16:06:29

iOS 18ChatGPT

2019-05-14 09:00:54

Linux 系統(tǒng) 數(shù)據(jù)
點贊
收藏

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

精品一区二区三区影院在线午夜| 人妖一区二区三区| 最新高清无码专区| 亚洲精品欧美日韩| 好吊色视频在线观看| aaa国产精品视频| 欧美视频13p| 亚洲成人午夜在线| 午夜精品久久久久久久99老熟妇| 一本久道久久综合狠狠爱| 国产一区二区日韩| 国产人妖在线观看| 日韩三区在线| 亚洲精品自拍动漫在线| 美乳视频一区二区| av免费在线不卡| 丝袜美腿亚洲一区| 欧美精品久久久久a| 亚洲AV无码国产成人久久| 97成人超碰| 午夜精彩视频在线观看不卡| 在线看无码的免费网站| 偷拍自拍在线| 精品亚洲免费视频| 欧美专区福利在线| 久久久国产精品人人片| 欧美亚洲国产激情| 国产视频精品免费播放| 深夜福利网站在线观看| 99久久婷婷国产综合精品首页| 亚洲一区二区在线免费看| 一区二区三区四区五区精品 | 欧美精品一区二区三区在线看午夜| 亚洲无码精品在线播放| 久久精品女人| 97精品国产91久久久久久| 日韩一卡二卡在线观看| 国产在线观看91一区二区三区| 亚洲成人国产精品| 免费av不卡在线| 日韩欧美精品一区二区综合视频| 午夜在线成人av| 欧美 日韩 国产精品| 免费av网站在线看| 中文字幕av一区二区三区高| 欧美三级电影在线播放| 性插视频在线观看| 成人涩涩免费视频| 国产成人免费观看| www.好吊色| 国产精品一区在线观看你懂的| 欧美中在线观看| 欧美特黄aaaaaa| 亚洲麻豆视频| 91av免费观看91av精品在线| www.99re7.com| 黄色亚洲精品| 超碰精品一区二区三区乱码| 182在线观看视频| 91精品天堂福利在线观看| 色妞一区二区三区| 懂色av粉嫩av蜜臀av一区二区三区| 国产一区毛片| 中文字幕日韩av电影| 亚洲综合第一区| 久久电影院7| 久久久精品久久| 欧美老熟妇一区二区三区| 欧美一区在线看| 久久久久久高潮国产精品视| 日本a在线观看| 99精品99| 国产精品高潮粉嫩av| 亚洲视频一区二区三区四区| 激情亚洲综合在线| 高清不卡一区二区三区| 污视频网站在线播放| 久久久久国产精品免费免费搜索| 日本一区二区精品视频| 在线观看精品一区二区三区| 亚洲丝袜另类动漫二区| 男人天堂网站在线| 免费成人在线电影| 欧洲精品一区二区三区在线观看| 依人在线免费视频| 欧美高清hd| 精品亚洲一区二区| 国产调教在线观看| 国产综合视频| 国产成人综合av| 国产喷水吹潮视频www| 成人性生交大片| 日韩欧美亚洲区| 亚洲精品白浆| 91国产成人在线| 超碰人人cao| 亚洲小说图片| 久久久国产精品免费| 日本熟妇色xxxxx日本免费看| 视频在线观看一区二区三区| 亚洲曰本av电影| 艳母动漫在线看| 亚洲图片激情小说| 欧美v在线观看| www一区二区三区| 亚洲精品国产综合久久| 婷婷社区五月天| 亚洲一区二区动漫| 91免费版黄色| 成人动漫在线播放| 亚欧色一区w666天堂| 污版视频在线观看| 精品视频在线你懂得| 色先锋资源久久综合5566| 日韩女同强女同hd| 韩国毛片一区二区三区| 欧美日韩一区二区视频在线观看 | 久久久人成影片一区二区三区观看 | 99视频在线视频| youjizz亚洲| 爱福利视频一区| 国产免费一区二区三区四区五区| 国产成人av一区二区三区在线观看| 日本在线高清视频一区| а√在线中文网新版地址在线| 欧美人狂配大交3d怪物一区| 爱爱免费小视频| 亚洲青涩在线| 91免费看蜜桃| av在线麻豆| 欧美日韩亚洲另类| 亚洲人成人无码网www国产 | 国产精品欧美亚洲| 欧美国产综合一区二区| 国产69精品久久久久999小说| 91成人福利社区| 中文字幕一区电影| 日韩综合在线观看| 久久综合视频网| www.日本在线播放| www.豆豆成人网.com| 欧美成人久久久| 91中文字幕在线视频| 国产精品久久免费看| 亚洲激情在线观看视频| 中文字幕av一区二区三区人| 国产91成人在在线播放| 污视频网站在线播放| 黄色一区二区在线观看| 尤物网站在线观看| 亚洲三级毛片| 精品国产免费一区二区三区| 暧暧视频在线免费观看| 亚洲精品一区二区三区蜜桃下载 | 欧美性高潮在线| 影音先锋黄色资源| av不卡免费看| 久久偷看各类wc女厕嘘嘘偷窃 | 国产欧美日韩在线一区二区| 日本精品久久久| 久久视频www| 欧美亚洲国产怡红院影院| www..com.cn蕾丝视频在线观看免费版| 久久久久久夜| 亚洲va韩国va欧美va精四季| 久久久久毛片| 欧美成人精品xxx| 亚洲第一视频在线播放| 午夜欧美视频在线观看| 国产三级视频网站| 日本视频一区二区| 中文字幕一区二区三区四区五区六区| 精品国产不卡一区二区| 欧美激情伊人电影| 偷拍自拍在线视频| 欧美日韩日日摸| 欧美成欧美va| aa级大片欧美| 午夜视频你懂的| 亚洲欧美在线专区| 国内精品**久久毛片app| 巨茎人妖videos另类| 日韩中文字幕在线| 亚洲国产精品二区| 日韩欧美综合在线视频| 亚洲色图27p| 成人动漫av在线| 三年中国国语在线播放免费| 99久久婷婷| 国产精品亚洲综合| 91大神在线观看线路一区| 久久综合九色九九| 欧美伦理影视网| 91精品免费观看| 日韩欧美中文字幕一区二区| 国产女人水真多18毛片18精品视频| 天天操狠狠操夜夜操| 亚洲人体偷拍| 中文字幕一区二区三区乱码| 香蕉久久精品| 91精品久久久久久蜜桃| 欧美电影h版| 欧美成人一区二区三区电影| 噜噜噜在线观看播放视频| 欧美一区二区三区日韩视频| 中文字幕国产在线观看| 亚洲精品乱码久久久久| 精品人妻一区二区三区蜜桃视频| 国产精选一区二区三区| 日韩亚洲在线视频| 国产精品a久久久久| 先锋影音日韩| 欧美日韩看看2015永久免费 | 久久亚洲一区二区三区四区| 欧美激情国内自拍| 天堂va蜜桃一区二区三区 | 国产人妻大战黑人20p| 国产91精品一区二区麻豆网站| 国产小视频精品| 一区二区三区四区五区精品视频 | 国产欧美精品| 日本老太婆做爰视频| 欧美老女人另类| 国产美女在线精品免费观看| 精品久久久久久久久久岛国gif| 日本午夜人人精品| 黄色在线观看www| 九九九热精品免费视频观看网站| 91成人高清| 亚洲人精品午夜在线观看| 欧洲成人一区二区三区| 欧美一二三区在线观看| 91精品视频免费在线观看| 欧美在线小视频| 中文字幕第15页| 午夜欧美大尺度福利影院在线看| www欧美com| 中文字幕一区av| 九九热免费在线| 国产午夜精品一区二区三区视频| 亚洲欧美日本一区| hitomi一区二区三区精品| 国产精品99久久久精品无码| 国产一区二三区| 尤物国产在线观看| 麻豆精品国产传媒mv男同| 五月婷婷深爱五月| 肉肉av福利一精品导航| 粉嫩虎白女毛片人体| 久久国产精品亚洲77777| 亚洲午夜无码av毛片久久| 一区二区精品| 亚洲自偷自拍熟女另类| 夜夜嗨av一区二区三区网站四季av| www.av片| 亚洲综合不卡| 日本精品久久久久中文字幕| 日韩激情一区二区| 国产精品自拍视频在线| 久草在线在线精品观看| 手机看片国产精品| 国产成人a级片| 黄色av网址在线观看| 97国产一区二区| 熟女俱乐部一区二区视频在线| 久久久久久亚洲综合影院红桃| 一级黄色性视频| 国产精品情趣视频| 波多野结衣亚洲一区二区| 亚洲一区二区黄色| 国产精品7777777| 色综合欧美在线视频区| 伊人免费在线观看高清版| 在线成人免费视频| 男人天堂综合网| 精品爽片免费看久久| 成人精品一区二区三区免费 | a级片免费在线观看| 91精品国产91| 国产一区二区三区四区五区3d| 成人av在线网址| 国产人妖ts一区二区| 欧美一区二区三区四区在线观看地址 | 麻豆成人免费电影| 中文字幕av一区二区三区人妻少妇 | 免费不卡av网站| 91亚洲精品乱码久久久久久蜜桃| 免费黄色片网站| 一区二区欧美精品| 亚洲黄网在线观看| 日韩女优电影在线观看| 青青久草在线| 欧美超级免费视 在线| 人在线成免费视频| 91香蕉电影院| 久久不见久久见国语| 久久天天东北熟女毛茸茸| 亚洲一区中文| 韩国一区二区在线播放| 91在线看国产| 久久久久亚洲av片无码| 精品美女国产在线| 国产精品无码专区av免费播放| 亚洲国产99精品国自产| 免费高清在线观看| 欧美中文字幕在线| 亚洲一区二区电影| 亚洲欧美日产图| 一区二区精品| 樱花草www在线| 国产日韩精品一区二区三区在线| 国模无码国产精品视频| 欧美最猛性xxxxx直播| 亚洲精品一区二区口爆| 按摩亚洲人久久| 韩国美女久久| 久久国产精品一区二区三区| 亚洲精品久久久| 在线免费视频a| 91亚洲精品久久久蜜桃网站| www青青草原| 欧美日韩在线观看一区二区 | 国产精品www在线观看| 久久69国产一区二区蜜臀| 久久亚洲AV无码专区成人国产| 亚洲高清视频中文字幕| av高清一区二区| 久久精品国产一区二区电影| av免费在线一区| 日韩免费电影一区二区| 亚洲主播在线| 草草地址线路①屁屁影院成人| 亚洲最大的成人av| 国产日韩精品suv| 久久精品91久久久久久再现| jizz欧美| 亚洲国产日韩综合一区| 石原莉奈在线亚洲二区| 亚洲AV无码国产成人久久| 欧美日韩性视频在线| 天堂在线资源8| 97久久精品人人澡人人爽缅北| 成人爽a毛片| 国产freexxxx性播放麻豆| 国产成人精品综合在线观看| 国产又色又爽又高潮免费| 欧美日韩国产色站一区二区三区| 成人免费黄色网页| 国产日韩在线播放| 欧美残忍xxxx极端| 中文字幕一区二区在线观看视频| 中文字幕一区二| av一区二区三| 欧美黑人xxxⅹ高潮交| 日韩视频一二区| 国产一二三区在线播放| 成人精品gif动图一区| 日本一级黄色大片| 日韩av中文字幕在线播放| 亚洲深夜视频| 日本一区视频在线播放| 免费视频最近日韩| 午夜三级在线观看| 欧美一区二区三级| 草莓视频丝瓜在线观看丝瓜18| 国产欧美日韩伦理| 久热精品在线| 免费看一级黄色| 日韩一区二区精品葵司在线| av蜜臀在线| 欧美午夜欧美| 久久精品国产精品青草| 青娱乐国产盛宴| 日韩精品视频在线观看免费| 在线成人视屏| 色哺乳xxxxhd奶水米仓惠香| 成人动漫一区二区三区| 啪啪小视频网站| 美女av一区二区| 久久草在线视频| 国产又黄又猛又粗又爽的视频| 1000部国产精品成人观看| 国产小视频免费观看| 国产成人精品免高潮费视频| 91精品精品| 中文字幕高清视频| 777色狠狠一区二区三区| av在线私库| 亚洲一区二区在线观| 粉嫩aⅴ一区二区三区四区五区| 国产亚洲欧美在线精品| 久久综合久久88| 色综合综合色| 性xxxxxxxxx| 在线观看欧美日本| 欧美人与动牲性行为| 日本欧美色综合网站免费| 国产精品综合一区二区三区| 在线观看 亚洲| 色综合久久久久久中文网|