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

如何刪除未使用的 CSS 代碼?

開發 前端
我們一起探索如何配置和使用 PurgeCSS,以及一些高級配置選項,幫助我們根據項目需求定制刪除未使用的 CSS 代碼的過程!

隨著前端項目的不斷迭代,就可能出現部分 CSS 代碼未使用的情況。這些未使用代碼就可能影響應用性能。

那么,如何有效地刪除未使用的 CSS 代碼呢?本文將介紹一種強大的工具——PurgeCSS,它可以自動檢測和刪除未使用的 CSS 代碼。無論是在 Vue、React 還是其他前端框架中,PurgeCSS 都能輕松集成。

接下來,讓我們一起探索如何配置和使用 PurgeCSS,以及一些高級配置選項,幫助我們根據項目需求定制刪除未使用的 CSS 代碼的過程!

未使用的 CSS

使用 Chrome 瀏覽器的 Coverage 面板,就可以看到當前頁面所有CSS 文件的使用情況(打開Coverage面板方式:Ctrl+Shift+P,搜索 Coverage):

這里顯示了每個文件的總大小、未使用的CSS 的大小、未使用的 CSS 所占比例。可以看到,文件中未使用的 CSS 占大多數。

點開一個文件,就可以看到這個文件中有哪些樣式使用了(藍色),有哪些樣式未使用(紅色):

默認情況下,瀏覽器必須下載、解析和處理它遇到的所有外部樣式表,然后才能將內容渲染到用戶屏幕。每個外部樣式表都必須從網絡下載。這些額外的網絡任務會顯著增加用戶在屏幕上看到任何內容之前必須等待的時間。

未使用的 CSS 還會減慢瀏覽器構建渲染樹的速度。渲染樹類似于 DOM 樹,不同之處在于它還包含每個節點的樣式。要構建渲染樹,瀏覽器必須遍歷整個 DOM 樹,并檢查哪些 CSS 規則適用于每個節點。未使用的 CSS 越多,瀏覽器可能需要花費更多的時間來計算每個節點的樣式。

PurgeCSS 是什么?

PurgeCSS 是一個用于刪除未使用的 CSS 的工具。它對于優化應用通常很有用。當使用 Bulma、Bootstrap 或 Tailwind 等 CSS 框架時,就會有很多未使用的 CSS。這就是 PurgeCSS 的用武之地。它會分析內容和 CSS 文件,以確定哪些樣式未使用,并將其刪除。PurgeCSS 可以與最常見的 JavaScript 庫/框架配合使用,例如 Vue.js、React、Gatsby 等。

雖然 PurgeCSS 并不是刪除未使用的 CSS 的唯一工具,但它因其模塊化、易用性和廣泛的自定義選項而脫穎而出。模塊化使開發人員能夠為特定用例和框架創建模塊提取器。提取器是讀取文件內容并提取所使用的 CSS 選擇器列表的函數。

PurgeCSS 提供了一個非常可靠的默認提取器,可以處理多種文件類型。但是,默認情況下,PurgeCSS 會忽略包含 @、:和 / 等特殊字符的未使用 CSS 代碼。因此,PurgeCSS 可能無法完全適配你正在使用的文件類型或 CSS 框架。

此外,PurgeCSS 還有很多配置項,可以根據需求自定義其行為。例如,PurgeCSS 包括針對 fontFace、keyframes、extractors、CSS 等選項。定制化可以改善 PurgeCSS 的性能和效率。PurgeCSS 很容易上手,并提供了詳細的文檔。截至撰寫本文時,PurgeCSS 在 npm 上每周下載量超過 90 萬次,GitHub[1] 上獲得了 7.4k+ Star。

PurgeCSS 是如何工作的?

PurgeCSS 適合在生產環境使用,可以分析內容和 CSS 并刪除未使用的樣式。在開發過程中運行 PurgeCSS 是沒必要的,因為在開發過程中,可能會經常創建未使用的樣式,這意味著每次都必須運行 PurgeCSS。

相反,可以僅針對生產構建運行它。這樣,就不必重新創建已刪除的樣式。因此,當應用準備好投入生產時,可以運行 PurgeCSS 一次。在開始將 PurgeCSS 與流行的庫/框架一起使用之前,先來看一下它如何與普通 JavaScript 一起使用。代碼如下:

(async () => {
  const purgecss = await new PurgeCSS().purge({
    content: ['index.html'],
    css: ['style.css'],
  });

  console.log(purgecss);
})();

這里將 index.html 指定為內容之一,將style.css指定為 CSS 之一,可以包含更多的內容和 CSS 文件,并且內容不限于 HTML 文件。上面的代碼會返回已清除樣式的數組。

除了 content 和 css 之外,還有更多配置項可以準確指定想要它做什么以及如何做。上面的例子可以用于任何普通 JavaScript 項目。要使用 PurgeCSS,就需要有一個單獨的 JavaScript 文件,其將運行一次以刪除未使用的樣式。

可以通過以下代碼讓清除的樣式替換當前樣式:

const { PurgeCSS } = require('purgecss');
const fs = require('fs');

(async () => {
  const purgecss = await new PurgeCSS().purge({
    content: ['index.html'],
    css: ['style.css'],
  });

  fs.writeFileSync('style.css', purgecss[0].css);
})();

與JS庫/框架結合使用

PurgeCSS 與流行的 JavaScript 庫/框架是兼容的,如 React、Vue、Gatsby、Next.js、Nuxt.js 等。下面來看看如何將 PurgeCSS 與 React 和 Vue 一起使用。

React + PurgeCSS

首先需要安裝 PurgeCSS 及其依賴項:

npm i --save-dev @fullhuman/postcss-purgecss

打開 App.js 文件并粘貼以下代碼:

import "./App.css";

function App() {
  return <div className="App"></div>;
}

export default App;

在上面的代碼中,我們創建了一個名為 App 的函數組件,并返回了一個類名為 App 的 div。App.css 保持不變,因此它包含以下未使用的 CSS 代碼:

.App {
  text-align: center;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

打開 package.json 文件并在 script 下添加以下代碼:

"postbuild": "purgecss --css build/static/css/*.css --content build/index.html build/static/js/*.js --output build/static/css"

post 是一個前綴,可以添加到任何 npm 腳本中,并在運行主腳本時自動運行。在這個例子中,postbuild 在執行構建腳本后運行。postbuild 執行的命令包含三個選項。

  • --css 選項:指定 PurgeCSS 應處理的 CSS 文件,它可以是文件名數組或全局變量。
  • --content 選項:指定 PurgeCSS 應分析哪些內容。
  • --output 選項:指定應將純化的 CSS 文件寫入哪個目錄。默認情況下,它將結果放置在控制臺中。

本質上,postbuild 執行的命令執行以下操作:

  1. 檢查 build/static/css 中的每個 CSS 文件。
  2. 匹配文件中使用的選擇器并刪除任何未使用的 CSS。
  3. 在 build/static/css 中輸出新的 CSS 文件。

現在,只需要運行 npm run build 來運行 React 應用的構建。要確認是否成功,可以打開 build/static/css 中的 CSS 文件。輸出類似于下面的代碼,僅包含使用的 CSS:

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
    Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
  margin: 0;
}
code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace;
}
.App {
  text-align: center;
}
@-webkit-keyframes App-logo-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(1turn);
    transform: rotate(1turn);
  }
}
@keyframes App-logo-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(1turn);
    transform: rotate(1turn);
  }
}

Vue + PurgeCSS

可以通過以下方式在 Vue 中安裝 PurgeCSS:

vue add @fullhuman/purgecss

這將生成一個 postcss.config.js 文件,在這個文件中已經設置了適合 Vue 應用的PurgeCSS 配置。可以根據需要更改這些配置。

下面來更新一些應用的內容,看看 PurgeCSS 在 Vue 中的工作原理。轉到 HelloWorld.vue 并用以下代碼替換其中的代碼:

<template>
  <a href="#">Hello world</a>
</template>
<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String,
  },
};
</script>

<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
span {
  color: red;
}
</style>

這里減少了內容并添加了一些未使用的樣式。現在,在終端中運行 npm run build 來構建應用并查看最終構建的 CSS。最后,在 dist/css 目錄中打開 CSS 文件,就可以找到只包含已使用樣式的 CSS 輸出:

a[data-v-70cf4e96] {
  color: #42b983;
}

#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}

高級配置選項

上面只看到了三個配置選項:content、css 和 outline,下面來看看如何通過其他配置選項來自定義 PurgeCSS。

keyframes 和 fontfaces

在 PurgeCSS v2.0 之前,默認刪除未使用的字體和關鍵幀代碼。然而,當這些功能使用不當時,代碼就會崩潰。未使用的字體和關鍵幀代碼現在默認保持不變。可以通過將 keyframes 和 fontfaces 選項設置為 true 來更改此默認行為:

(async () => {
  const purgecss = await new PurgeCSS().purge({
    content: ['index.html'],
    css: ['style.css'],
    keyframes: true,
    fontFaces: true,
  });

  console.log(purgecss);
})();

也可以在 purgecss.config.js 配置文件中修改這些配置項:

// purgecss.config.js
module.exports = {
  content: ['index.html'],
  css: ['style.css'],
  keyframes: true,
  fontFaces: true,
}


(async () => {
  const purgecss = await new PurgeCSS().purge('./purgecss.config.js');
  console.log(purgecss);
})();

content 和 css

可以直接傳入 content 和 css 的值,而無需鏈接一個文件:

// purgecss.config.js
module.exports = {
  content: [
    {
      raw: '<html><body><p>Hello world</p></body></html>',
      extension: 'html',
    },
  ],
  css: [
    {
      raw: 'p { color: red }',
    },
  ],
};

extractors

在極少數情況下,PurgeCSS 可能無法刪除未使用的 CSS 或刪除已使用的 CSS。在這種情況下,必須使用自定義提取器。PurgeCSS 依賴提取器來獲取文件中使用的選擇器列表。

有些軟件包為特定擴展提供了提取器。例如,purgecss-from-js 特定于 .js 擴展名。使用特定的提取器進行擴展可以提供最佳的準確性:

// purgecss.config.js
import purgeJs from 'purgecss-from-js'
import purgeHtml from 'purgecss-from-html'

const options = {
  content: ['index.html'],
  css: ['style.css'],
  extractors: [
    {
      extractor: purgeJs,
      extensions: ['js']
    },
    {
      extractor: purgeHtml,
      extensions: ['html']
    }
  ]
}
export default options

variables

默認情況下,不會刪除未使用的 CSS 變量。如果要刪除它們,則必須在 purgecss.config.js 文件中將變量指定為 true:

module.exports = {
    content: ['index.html'],
    css: ['style.css'],
    variables: true,
}

safelist 和 comments

PurgeCSS 支持指定哪些選擇器可以安全地保留在最終的 CSS 中。可以通過兩種方式來完成此操作:PurgeCSS 的 safelist 選項或特殊的 CSS 特殊注釋。使用 safelist:

module.exports = {
    content: ['index.html'],
    css: ['style.css'],
    safelist: ['random', 'button'],
}

在這種情況下,.random、#random、button、.button 和 #button 都將被忽略,不會被 PurgeCSS 刪除。其支持使用正則表達式:

module.exports = {
    content: ['index.html'],
    css: ['style.css'],
    safelist: [/red$/, /^bg/],
}

在這種情況下,任何以 red 結尾(例如,bg-red、btn-red)或以 bg 開頭(例如,bg-blue、bg-red)的選擇器都不會被刪除。默認情況下,PurgeCSS 不會刪除注釋,僅刪除旨在自定義 PurgeCSS 行為的特殊注釋。

一組常見的特殊注釋用于指定哪些選擇器可以安全地保留在最終 CSS 中:

/* purgecss start ignore */
h1 {
  color: pink;
  font-size: 2rem;
}
/* purgecss end ignore */

相關鏈接

[1]GitHub: https://github.com/FullHuman/purgecss。

責任編輯:姜華 來源: 前端充電寶
相關推薦

2022-02-17 10:05:21

CSS代碼前端

2022-03-11 12:14:43

CSS代碼前端

2021-12-16 16:35:46

CSS代碼前端

2023-04-21 10:08:00

版本工具依賴關系

2015-07-14 11:01:39

CSS科技公司

2022-11-15 07:50:47

ORM鏈式操作刪除

2022-11-11 07:48:56

ORM鏈式輪播圖

2023-10-10 08:00:00

2024-12-12 08:55:25

CSS代碼模式

2015-09-18 16:17:03

刪除內核Ubuntu

2024-12-16 15:07:10

2019-08-28 15:43:03

sed命令Linux

2024-11-27 08:00:00

代碼圖代碼分析開發

2012-10-15 09:30:04

CSSDIVWeb

2023-10-10 09:00:00

CSSJavaScript

2010-09-02 14:52:20

CSS框架

2009-07-14 21:10:11

存儲VMDKVMware

2020-06-05 12:45:41

LinuxTmpwatchTmpreaper

2021-08-19 06:58:48

CSS頁面布局

2020-05-11 09:50:26

JavaScript函數開發
點贊
收藏

51CTO技術棧公眾號

中文字幕一区二区三区免费看 | 久久国产精品视频在线观看| 懂色av一区二区三区四区| 一区二区三区毛片免费| 天涯成人国产亚洲精品一区av| 国产成人精品在线视频| 风间由美一二三区av片| 四虎影视4hu4虎成人| 国产亚洲美州欧州综合国| 日本一区二区三区在线播放| 999福利视频| 澳门久久精品| 精品视频1区2区| 亚洲欧洲国产日韩精品| 男人天堂手机在线观看| 久久美女性网| 欧美成人中文字幕在线| xxxx日本免费| 国产美女精品视频免费播放软件| 黑人极品videos精品欧美裸| 国产精品jizz在线观看老狼| 青青草手机在线| 精品午夜久久福利影院| 欧美成人精品在线播放| 亚洲欧美色图视频| 涩涩涩久久久成人精品| 色偷偷成人一区二区三区91| 在线视频91| 美国成人毛片| caoporen国产精品视频| 成人信息集中地欧美| 日韩专区一卡二卡| 欧美激情按摩在线| 97在线观看视频免费| 日韩欧美天堂| 精品国产乱码久久久久久1区2区| 日本xxxxxxxxxx75| h视频网站在线观看| 欧美一区2区| 精品久久久久久综合日本欧美| 亚洲欧美国产日韩综合| 国内精彩免费自拍视频在线观看网址 | 91亚洲国产成人久久精品麻豆| 国产视频亚洲| 韩国视频理论视频久久| 久久国产精品二区| 2023国产精品久久久精品双| 久久九九有精品国产23| 国精品无码人妻一区二区三区| 91成人在线精品视频| 欧美精品久久久久久久多人混战 | 亚洲高清资源综合久久精品| 日本福利片在线| 97精品久久久久中文字幕| 一区二区三区精品99久久| 中文视频在线观看| 成人午夜大片| 亚洲国产毛片完整版| 最新中文字幕日本| 成人在线超碰| 日韩精品免费在线视频| 又黄又色的网站| 综合成人在线| 日韩激情视频在线| 亚洲久久久久久久| 久久香蕉国产| 欧美另类xxx| 久久久久久免费观看| 韩日成人av| 久久精品青青大伊人av| 精品一区在线观看视频| 亚洲网站视频| 热久久美女精品天天吊色| 无码人妻精品一区二区三区蜜桃91 | 成人免费毛片视频| 日韩电影在线免费观看| 国产一区二区香蕉| av资源免费看| 激情深爱一区二区| 99久久99久久| 蜜臀av中文字幕| 久久综合九色综合欧美98| 神马影院午夜我不卡影院| 乱精品一区字幕二区| 91丨porny丨中文| 国产亚洲欧美一区二区| 四虎在线视频| 欧美高清在线精品一区| 亚洲精品免费在线视频| 亚洲欧美激情国产综合久久久| 99久久婷婷国产| 欧洲精品久久| 羞羞的网站在线观看| 亚洲成av人片一区二区三区| 午夜视频在线瓜伦| 久久九九精品视频| 精品国产电影一区二区| 中字幕一区二区三区乱码| 欧美1区2区3区| 国产ts一区二区| 亚洲一级av毛片| aa级大片欧美| 国产精品波多野结衣| 77thz桃花论族在线观看| 欧美丝袜第三区| 伦理片一区二区| 牛牛精品成人免费视频| 一本一道久久a久久精品逆3p | a天堂中文在线88| 夜夜亚洲天天久久| 日本韩国欧美在线观看| 粉嫩一区二区三区在线观看| 日韩精品极品毛片系列视频| 亚洲精品成人av久久| 日韩亚洲在线| 91精品国产99久久久久久红楼| a视频免费在线观看| 国产午夜精品久久| 国产二区视频在线| 国产一区二区主播在线| 日韩精品欧美国产精品忘忧草| 91精品国产闺蜜国产在线闺蜜| 久久婷婷丁香| 97碰碰视频| 黄色一级片在线观看| 日本黄色一区二区| 漂亮人妻被黑人久久精品| 久久久久久久久99精品大| 4k岛国日韩精品**专区| 亚洲AV无码精品国产| 国产精品久久久久天堂| 少妇激情一区二区三区| 欧美电影在线观看完整版| 欧美日本精品在线| 国产精品爽爽久久| 欧美国产日韩在线观看| 狠狠操精品视频| 亚洲图区在线| 欧美在线性视频| 天堂中文在线看| 一区二区三区**美女毛片| 超碰人人草人人| 9999国产精品| 成人av资源在线播放| 91porn在线观看| 欧美最猛性xxxxx直播| 国产精久久一区二区三区| 亚洲欧美成人综合| 欧美裸体网站| 自拍在线观看| 国产一区二区三区网站| 国产精品尤物视频| 欧美高清在线一区| 午夜一区二区视频| 欧美一区在线看| 99国精产品一二二线| 亚洲精品一线| 日韩一区二区免费视频| 唐朝av高清盛宴| 国产老肥熟一区二区三区| 亚洲高潮无码久久| 成人av综合网| 欧美综合第一页| 你懂的视频在线播放| 激情亚洲一区二区三区四区| 日本在线视频播放| 99re国产精品| 欧美日韩在线精品一区二区三区| 欧美va在线观看| 久久精品99久久久香蕉| 国产精品丝袜黑色高跟鞋| 亚洲另类一区二区| yy1111111| 日本欧美一区二区在线观看| 中文字幕一区二区中文字幕| 天堂va欧美ⅴa亚洲va一国产| 国内自拍欧美激情| 你懂的免费在线观看| 欧美精品v国产精品v日韩精品| 日韩在线中文字幕视频| 成人av先锋影音| 激情综合在线观看| 国产精品99久久| 国产有色视频色综合| 中韩乱幕日产无线码一区| 久久久精品国产亚洲| 丰满人妻一区二区三区免费| 欧美性黄网官网| 国产免费久久久久| 91在线一区二区三区| 亚洲一区日韩精品| 国产一区亚洲| 翔田千里亚洲一二三区| a成人v在线| 性欧美长视频免费观看不卡| a√资源在线| 欧美一区二区三区在线观看 | 在线观看日韩电影| 久草网视频在线观看| 国产亚洲精品aa午夜观看| 丰满少妇中文字幕| 免费在线看成人av| 一二三四视频社区在线| 999国产精品永久免费视频app| 久久草.com| 欧美特黄不卡| 国产精品私拍pans大尺度在线| av在线中出| 欧美成人精品三级在线观看| 国产精品一级伦理| 亚洲白拍色综合图区| 在线观看国产成人| 亚洲自拍欧美精品| 国产7777777| 久久综合九色综合97_久久久| 免费在线观看日韩av| 久热国产精品| 99精品在线免费视频| 夜间精品视频| 综合久久国产| 日韩久久精品| 美女主播视频一区| 国产精品久久久久av蜜臀| 91人成网站www| 国产精品久久久久久吹潮| 97精品在线观看| 国产理论电影在线| 久久精品青青大伊人av| 福利视频在线播放| 日韩www在线| 色婷婷av一区二区三区之红樱桃 | 国产一级久久| 国产无限制自拍| 国产在线不卡| 亚洲熟妇无码av在线播放| 性欧美69xoxoxoxo| 亚洲天堂av免费在线观看| 四季av在线一区二区三区| 欧美午夜免费| 国产调教一区二区三区| 欧美日韩一区在线观看视频| 欧美女优在线视频| 久久久久网址| 天堂99x99es久久精品免费| 高清视频一区二区三区| 高清精品视频| 九色综合日本| 国产精品自在线拍| 国产在线一区二| 亚洲+小说+欧美+激情+另类| 精品伦精品一区二区三区视频| 老司机精品在线| 黄色99视频| 五月国产精品| 欧美一区国产一区| 欧洲福利电影| 在线观看免费91| 欧美视频官网| 可以在线看的av网站| 亚洲久色影视| 日韩在线一级片| 人人精品人人爱| 九九热免费在线观看| 国产麻豆视频精品| 又色又爽又黄18网站| 91小视频免费看| 亚洲做受高潮无遮挡| 国产精品久久久久久福利一牛影视| 老司机精品免费视频| 亚洲人亚洲人成电影网站色| 色老板免费视频| 一二三四社区欧美黄| 国产www在线| 欧美精品一二三四| 国产wwwwwww| 日韩精品极品毛片系列视频| 欧美高清视频| 欧美理论电影在线观看| 三级在线观看视频| 国产日韩欧美在线看| 亚洲无线观看| 日韩欧美视频第二区| 一区二区三区四区在线观看国产日韩 | 亚洲激情欧美| 在线观看免费成人av| 国产一区二区在线观看视频| 亚洲 自拍 另类 欧美 丝袜| 91麻豆精品秘密| 成人免费精品动漫网站| 精品毛片三在线观看| 亚洲图片视频小说| 日韩精品一区二区三区蜜臀| 国产一区电影| 欧美大片网站在线观看 | 色综合久久中文字幕综合网| 国产一区二区三区在线观看| 亚洲精品国产成人| 欧美18hd| 日韩女在线观看| 成人av激情人伦小说| 91免费视频黄| 免费看黄裸体一级大秀欧美| 亚洲一区二区中文字幕在线观看| 91麻豆精品视频| 欧美亚洲天堂网| 91精品国产福利在线观看| 亚洲av片一区二区三区| 另类美女黄大片| 日本成人福利| 蜜桃传媒视频麻豆一区| 欧美日韩精品一本二本三本 | 久久亚洲精品中文字幕| 国产主播一区二区三区四区| 99精品在线免费在线观看| 热99这里只有精品| 日韩经典中文字幕一区| 中国黄色片视频| 亚洲靠逼com| 中文字幕欧美人妻精品| 亚洲精品视频中文字幕| 大菠萝精品导航| 18成人在线| 亚洲v在线看| 在线黄色免费看| 欧美韩日一区二区三区| 天天操天天爽天天干| 日韩一二三区视频| 激情综合闲人网| 清纯唯美日韩制服另类| 久久a爱视频| 2018日日夜夜| 成人av网站大全| 欧美日韩国产精品综合| 欧美视频在线一区二区三区| 亚洲av激情无码专区在线播放| 97成人在线视频| 噜噜噜天天躁狠狠躁夜夜精品| 日韩人妻精品一区二区三区| 蜜臀av一区二区| 91香蕉视频污在线观看| 欧美性xxxxx| 久蕉在线视频| 国产精品成熟老女人| 精品freesex老太交| 免费在线观看亚洲视频| 99麻豆久久久国产精品免费| 欧美在线视频第一页| 777xxx欧美| 成人免费看片| 91沈先生作品| 国产精品v亚洲精品v日韩精品| 成年人看片网站| 亚洲制服丝袜一区| 午夜久久久久久久久久| 欧美激情伊人电影| 精品一区二区男人吃奶| 免费的一级黄色片| 成人精品视频网站| 亚洲 欧美 成人| 在线看欧美日韩| 欧美美女日韩| 宅男噜噜99国产精品观看免费| 国产自产高清不卡| 久久无码精品丰满人妻| 亚洲国产成人91精品| 中文av在线全新| 亚洲狠狠婷婷综合久久久| 黄色日韩网站视频| 国产黄色大片免费看| 4438x亚洲最大成人网| 粗大黑人巨茎大战欧美成人| 国产精品大全| 日韩午夜av| 黄色av免费播放| 欧美一区二区美女| 精品极品在线| 亚洲欧美日韩另类精品一区二区三区| 亚洲在线黄色| 一起操在线播放| 亚洲韩国日本中文字幕| av中文在线资源库| 亚洲黄色成人久久久| 成人一二三区视频| 激情网站在线观看| 久久99国产精品久久久久久久久| 一区二区三区视频播放| 日韩精品视频一区二区在线观看| 国产精品美女www爽爽爽| 亚洲男人天堂久久| 国产精品久久久久不卡| 欧美片第1页综合| 无码人妻精品一区二区中文| 欧美日韩久久久一区| www欧美xxxx| 亚洲欧洲精品一区二区| 成人午夜碰碰视频| 中文字幕在线观看精品| 国内成人精品一区| 国产一区二区三区91| 一级黄色电影片|