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

好家伙,這些寫 CSS 的新姿勢你還不知道?

開發 前端
本文就來聊聊以下三種 CSS 方案的優缺點以及各自方案的代表作,希望對你有幫助!

現在大部分搞前端的應該還是這樣寫 CSS 的: 

  1. .mock { 
  2.     margin: auto; 
  3.     font-size: 16px; 
  4.     // ... 
  5. <div class='mock'>mock</div> 

 以上代碼就是舉個例子,大部分情況應該都是寫一個類,然后整一堆樣式進去。

但是這種方式寫多了以后,你應該會感受到一些痛點,比如說:

  • 取名困難,節點結構一多,取名真的是個難事。當然了,我們可以用一些規范或者選擇器的方式去規避一些取名問題。
  • 需要用 JS 控制樣式的時候又得多寫一個類,尤其交互多的場景。
  • 組件復用大家都懂,但是樣式復用少之又少,這樣就造成了冗余代碼變多。
  • 全局污染,這個其實現在挺多工具都能幫我們自動解決了。
  • 死代碼問題。JS 我們通過 tree shaking 的方式去除用不到的代碼減少文件體積,但是 CSS 該怎么去除?尤其當項目變大以后,無用 CSS 代碼總會出現。
  • 樣式表的插入順序影響了 CSS 到底是如何生效的。
  • 等等,不一一說明了。其實對于筆者而言,第一二塊在開發中是最難受的兩個點,尤其是剛寫前端,需要做活動 / 產品頁的時候。

當下,社區里有一些 CSS 方案,能夠解決以上一些痛點:

  • Atom CSS
  • CSS-in-JS
  • 上述兩者的結合體

本文就來聊聊以上三種方案的優缺點以及各自方案的代表作。

Atom CSS

首先來聊聊啥叫做 Atom CSS:意思是一個類只干一件事,比如說: 

  1. .m-8 { 
  2.     margin: 8px; 

想象一下你按照這樣的思想搞出一大堆類似的類名,就能整出一個踐行 Atom CSS 方案的三方庫了,tailwindcss 就是這個方案里的佼佼者。其實 Atom CSS 很多人應該早都用過了,柵格系統上就有它的身影,無非不清楚原來它就是 Atom CSS 罷了。

我們先來看看如果用 tailwindcss 的話,寫好樣式的 HTML 大概長啥樣:  

 

上圖是人家官網上的,在這之前還有一段挺炫的動畫。看起來好像挺方便的,寫上一堆類名就能出左邊好看的樣式了,省了很多寫樣式的時間,但是讀者們可以來想想這種方式它會有啥好處及弊端?

在說優缺點之前,我們先來聊聊 Atom CSS 的歷史。其實它并不是一個新興產物,這玩意你往前推個十年就能看到它的討論。正所謂天道好輪回,蒼天饒過誰。Atom CSS 以前火過,而且是被噴火的,沉寂了幾年之后這幾年又被拿出來說了。

接下來我們以 tailwindcss 為例來聊聊 Atom CSS 方案的優劣點。

優劣點

如果你想在團隊內部推廣這個產品,學習成本會是一個問題,畢竟需要大家都看得懂你這坨東西到底是啥意思,這算一個很明顯的缺陷。但是對于語法問題你還真的不用怎么擔心,tailwindcss 是有語法補全的工具鏈的,Webstorm 已經內置了,VSCode 需要大家自行裝個插件,所以噴寫 tailwindcss 語法麻煩的可以歇一歇。

樣式復用,就像寫組件一樣,這次我們是把樣式一個個抽離了出來,這樣帶來的一大好處是減少了 CSS 代碼文件體積。

原本傳統的寫法是定義一個類,然后寫上需要的樣式: 

  1. .class1 { 
  2.     font-size: 18px; 
  3.     margin: 10px; 
  4. .class2 { 
  5.     font-size: 16px; 
  6.     color: red; 
  7.     margin: 10px; 

這種寫法是存在一部分樣式重復的,換成 Atom CSS 就能減少一部分代碼的冗余。

把 CSS 當成組件來寫。大家乍一看 tailwindcss 官網肯定會覺得我在 HTML 里寫個樣式要敲那么多類是有病吧? 

  1. <figure class="md:flex bg-gray-100 rounded-xl p-8 md:p-0"
  2.   <img class="w-32 h-32 md:w-48 md:h-auto md:rounded-none rounded-full mx-auto" src="/sarah-dayan.jpg" alt="" width="384" height="512"
  3.   <div class="pt-6 md:p-8 text-center md:text-left space-y-4"
  4.     <blockquote> 
  5.       <p class="text-lg font-semibold"
  6.         “Tailwind CSS is the only framework that I've seen scale 
  7.         on large teams. It’s easy to customize, adapts to any design, 
  8.         and the build size is tiny.” 
  9.       </p> 
  10.     </blockquote> 
  11.     <figcaption class="font-medium"
  12.       <div class="text-cyan-600"
  13.         Sarah Dayan 
  14.       </div> 
  15.       <div class="text-gray-500"
  16.         Staff Engineer, Algolia 
  17.       </div> 
  18.     </figcaption> 
  19.   </div> 
  20. </figure> 

其實我們是可以利用 Atom CSS 一次只干一件事的特性,將這些類隨意組裝成我們想要的類,這樣就可以提供出來一個更上層的通用樣式來復用。

比如說項目中的按鈕都是存在通用的圓角、內邊距、字體等,這樣我們就可以封裝出這樣一個類: 

  1. .btn { 
  2.     @apply p-8 rounded-xl font-semibold 

效率工具。tailwindcss 用的好肯定是能提高寫布局的效率的,尤其對于需要做響應式的頁面而言。當然這東西其實也算是甲之蜜糖乙之砒霜,評價兩極分化很嚴重,有人認為提高了效率,也有人認為反而是增加了成本,或者說是脫褲子放屁。

提供了一整套規范化的設計模式,直接點說就是 tailwindcss 給你內置好一套優秀的設計主題了。但是這玩意對于規范的視覺團隊來說是個不小的福音,不規范的話就可能是火葬場了。下面我給大家舉個例子: 

  1. // tailwind.config.js 
  2. const colors = require('tailwindcss/colors'
  3.  
  4. module.exports = { 
  5.   theme: { 
  6.     screens: { 
  7.       sm: '480px'
  8.       md: '768px'
  9.       lg: '976px'
  10.       xl: '1440px'
  11.     }, 
  12.     colors: { 
  13.       gray: colors.coolGray, 
  14.       blue: colors.lightBlue, 
  15.       red: colors.rose, 
  16.       pink: colors.fuchsia, 
  17.     }, 
  18.     fontFamily: { 
  19.       sans: ['Graphik''sans-serif'], 
  20.       serif: ['Merriweather''serif'], 
  21.     }, 
  22.     extend: { 
  23.       spacing: { 
  24.         '128''32rem'
  25.         '144''36rem'
  26.       }, 
  27.       borderRadius: { 
  28.         '4xl''2rem'
  29.       } 
  30.     } 
  31.   } 

以上是 tailwindcss 的主題配置文件,大家可以按照視覺的要求來做調整。比如說今天視覺覺得屏幕的 lg 尺寸應該是 976px,過段時間又覺得需要改成 1000px。對于開發者而言我們只需要修改一行代碼就能全局生效了,很舒服。

但是假如說視覺原本定義的邊距規則如下: 

  1. // tailwind.config.js 
  2. module.exports = { 
  3.   theme: { 
  4.     spacing: { 
  5.       px: '1px'
  6.       0: '0'
  7.       0.5: '0.125rem'
  8.       1: '0.25rem'
  9.       1.5: '0.375rem'
  10.       2: '0.5rem'
  11.       2.5: '0.625rem'
  12.       3: '0.75rem'
  13.       3.5: '0.875rem'
  14.       4: '1rem'
  15.       5: '1.25rem'
  16.       6: '1.5rem'
  17.       7: '1.75rem'
  18.       8: '2rem'
  19.       // ... 
  20.     }, 
  21.   } 

現在需要我們把 6 換成 1.6rem,但是這個規則只需要作用在某些組件上,此時我們需要如何修改樣式?新增一個 spacing 然后一個個去替換需要的地方么?

上述場景筆者認為還是不少見的,最起碼在我們公司內部是存在這樣的問題。已經定義了視覺規范并體現在內部的組件庫上,但是在業務中還是有不少視覺會去動組件的基本樣式,這里改個邊距,那里改個顏色等等。原本組件庫是為了幫助開發者提效的,但是在這種場景下開發者反而會抱怨改動樣式極大提高了他們的成本,并且大部分情況下還不得不這樣做。

再說回傳統 CSS 的問題,其實 tailwindcss 也解決了一部分,但是仍舊存在沒解決的點,比如說:

  • 死代碼問題沒解決
  • 樣式表的插入順序依舊有影響

以上說了那么多,其實對于我們使用 tailwindcss 而言,有利也有弊。它肯定是存在很好用的場景的,比如說寫個人的產品頁,或者說業務中樣式變化不頻繁的場景中,但是如果說需要業務中全量切換到 tailwindcss 的話,筆者肯定是持保留態度的。

對于 Atom CSS 來說,大家應該是不能否認它的優點的,但是我們是否有辦法在盡可能避免它的缺點的情況下又獲得它的優點呢?答案是有的,但是在講答案之前我想先來聊聊 CSS-in-JS。

CSS-in-JS

CSS-in-JS(下文以 CIJ 縮寫表示)核心就是在用 JS 寫 CSS,這同樣也是一個頗具爭議的技術方案。

在這個領域下有兩個庫比較流行,分別為:styled-components(下文以 sc 縮寫表示) 以及 Emotion。筆者目前已經用了一年多的 sc 了,來粗略談談它的優缺點。

我們先來了解下 sc 是怎么使用的。首先說下 sc 和 Emotion 的語法是趨于一致的,應該是為了 API 層面的統一吧,甚至前者還依賴了后者的一些包,以下是 sc 的常用寫法: 

  1. const Button = styled.a` 
  2.   display: inline-block; 
  3.  
  4.   ${props => props.primary && css` 
  5.     background: white; 
  6.     color: black; 
  7.   `} 
  8. render( 
  9.   <div> 
  10.     <Button 
  11.       href="https://github.com/styled-components/styled-components" 
  12.       target="_blank" 
  13.       rel="noopener" 
  14.       primary 
  15.     > 
  16.       GitHub 
  17.     </Button> 
  18.  
  19.     <Button as={Link} href="/docs"
  20.       Documentation 
  21.     </Button> 
  22.   </div> 

用法我們不多展開,有興趣的可以去官方看看,基本沒有學習成本的,主要是一些樣式組件上的使用。

另外 sc 并不是最終生成了內聯樣式,而是幫我們插入了 style 標簽。

優劣點

筆者用了一年多的 sc,感覺這種方案對于 React 來說是很香的。并且解決了我很討厭的傳統寫 CSS 的一些點,所以關于優劣點這段的講述會有點主觀。

首先 CSS-in-JS 這種方案不僅能讓我們完整使用到 CSS 的功能,而且還擴充了一些用法。比如說選擇器這塊,在 sc 中我們能通過選擇組件的方式來編寫樣式,如下代碼: 

  1. const Button = styled.a` 
  2.   ${Icon} { 
  3.     color: green; 
  4.   } 

另外既然我們通過 JS 來管理 CSS 了,那么我們就可以充分享受 JS 帶來的工具鏈好處了。一旦項目中出現沒有使用到的樣式組件,那么 ESLint 就可以幫助我們找到那些死代碼并清除,這個功能對于大型項目來說還是能減少一部分代碼體積的。

除此之外,樣式污染、取名問題、自動添加前綴這些問題也很好的解決了。

除了以上這些,再來聊兩點不容易注意到的。

首先是動態切換主題。因為我們是通過 JS 來寫 CSS 了,那么我們就可以動態地控制樣式。如果你的項目有切換主題這種類似的大量動態 CSS 的需求,那么這個方案會是一個不錯的選擇。

還有個點是按需加載。因為我們是通過 JS 寫的 CSS,現階段打包基本都走的 code split,那么就可以實現 CSS 文件的按需加載,而不是傳統方式的一次性全部加載進來(當然也是可以優化的,只是沒那么方便)。

聊完了優點我們再來說說缺點。

第一個缺點很明顯,有學習成本,當然筆者覺得這個學習曲線還是平緩的。

運行時成本,sc 本身就有文件體積,加上還需要動態生成 CSS,那么這其中必定有性能上的損耗。項目越大影響的也會越大,如果你的項目對于性能有很高的要求,那么需要謹慎考慮使用。另外因為 CSS 動態生成,所以不能像傳統 CSS 一樣緩存 CSS 文件了。

代碼復用性和傳統寫 CSS 的方式沒啥兩樣。

最后點是代碼耦合問題。會有人覺得在大型項目中將 CSS 及 JS 寫在一起會增加維護成本,并且也不符合 CSS 需要分離開來想法。

Atom CSS 加上 CSS-in-JS 的縫合怪

看了上文,如果你覺得兩種方案都挺好的話,可以了解下 twin.macro,這個庫(還有別的競品)把這兩種方案融合了起來。 

  1. import 'twin.macro' 
  2.  
  3. const Input = () => <input tw="border hover:border-black" /> 
  4. const Input = tw.input`border hover:border-black` 

這種方案之上其實還有更好玩的方式,能幫助我們盡量取其精華而去其糟粕。

自動生成 Atom CSS 的 CSS-in-JS 方案

假如說我不僅想用 CSS-in-JS,還想把 Atom CSS 也給整上,但是又不想記 / 寫一大堆類名,我這個想法能實現么?

答案是有的。利用運行時的方式把單個樣式抽離出來,最后實現雖然我們寫的是 CSS-in-JS,但是最終呈現的是 Atom CSS 的樣子。

以 styletron 舉個例子,開發時候的代碼長這樣: 

  1. import { styled } from "styletron-react"
  2.  
  3. export default () => { 
  4.   // Create a styled component by passing 
  5.   // an element name and a style object 
  6.   const Anchor = styled("a", { 
  7.     fontSize: "20px"
  8.     color: "red" 
  9.   }); 
  10.   return <Anchor href="/getting-started">Start!</Anchor>; 
  11. }; 

實際編譯出來的時候長這樣: 

  1. <html> 
  2.   <head> 
  3.     <style> 
  4.       .foo { 
  5.         font-size: 20px; 
  6.       } 
  7.       .bar { 
  8.         color: red; 
  9.       } 
  10.     </style> 
  11.   </head> 
  12.   <body> 
  13.     <a href="/getting-started" class="foo bar">Start!</a> 
  14.   </body> 
  15. </html> 

這樣的方式就能很好地享受到兩種方案帶來的好處了。但是這類方案筆者找了些競品,覺得還沒有前兩者方案來的流行,大家了解一下即可。另外這種方式帶來的運行時成本應該會更大,也許可以配套打包工具在本地先做一次預編譯(一個不成熟的想法,說錯勿噴)?

總結

說了那么多方案,可能讀者會有疑問,那么我到底該用啥?這里筆者說下自己的想法。

首先對于 sc 來說,筆者覺得很香,在項目中大范圍用起來未嘗不可,當然我們還可以搭配著 Atom CSS 一起來寫通用樣式。

對于 Atom CSS,筆者個人認為不適合項目中大規模使用,起碼在我們公司內部不會是一個好方案,畢竟視覺真的會來動某些通用樣式。 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2018-09-02 15:43:56

Python代碼編程語言

2022-05-05 12:02:45

SCSS函數開發

2020-06-03 08:53:40

CSS偽類 JS

2015-07-13 08:49:54

2020-10-28 08:06:09

Vue3框架數據

2016-07-22 17:55:07

云計算

2022-07-17 06:53:24

微服務架構

2021-05-26 08:21:43

@Autowired項目@Resouce

2017-10-16 13:30:28

windows 10技巧輸入法

2024-05-20 09:27:00

Web 開發CSS

2020-12-14 07:51:16

JS 技巧虛值

2025-08-18 02:55:00

Spring數據庫容器

2021-02-03 08:24:32

JavaScript技巧經驗

2023-05-22 15:37:31

CSS元素JavaScript

2024-12-17 08:33:42

2022-04-14 09:01:19

CSS父選擇器CSS類

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2023-08-14 15:56:52

CSS 偽元素開發

2020-10-12 08:20:54

CSS居中內聯
點贊
收藏

51CTO技術棧公眾號

国产在线免费看| 国产3p露脸普通话对白| 激情五月色婷婷| 99香蕉久久| 精品久久久久久久久久久| 精品乱码一区| 91久久国产综合久久91| 欧美交a欧美精品喷水| 欧美日韩激情视频| 日本高清久久一区二区三区| 国产无遮挡又黄又爽又色视频| 亚洲国产尤物| 亚洲天堂精品在线观看| 国产98在线|日韩| av黄色在线看| 99久久精品国产亚洲精品 | 色视频在线观看免费| 亚洲精选成人| 国产香蕉97碰碰久久人人| 性生活免费在线观看| 快射av在线播放一区| 成人精品免费看| 国产精品99久久久久久久久久久久| 成年人看片网站| 国产资源在线观看入口av| 久久―日本道色综合久久| 国产精品劲爆视频| 最新一区二区三区| 亚洲理论电影| 91精品久久久久久久91蜜桃| 免费国产黄色网址| 求av网址在线观看| www.亚洲免费av| 国产美女久久久| 日本熟妇一区二区| 日韩综合网站| 日韩精品中文在线观看| 亚洲一二三不卡| 美女一区网站| 亚洲图片欧美视频| 在线视频亚洲自拍| 国内av一区二区三区| 国产jizzjizz一区二区| 国产精品成人播放| 国产免费观看av| 欧美在线网址| 中文字幕亚洲专区| 精品无人区无码乱码毛片国产| 欧美人与性动交α欧美精品图片| 久久精品国产99国产| 97热精品视频官网| 久久精品黄色片| 日本a口亚洲| 日韩精品在线第一页| 成人性生生活性生交12| 99久久精品免费看国产小宝寻花| 成人亚洲一区二区一| 成人国内精品久久久久一区| 伊人中文字幕在线观看| 在线观看视频日韩| 色伦专区97中文字幕| 国产精品亚洲无码| 亚洲资源网站| 亚洲精品成人免费| 国产伦精品一区二区三区88av| av电影在线地址| 国产精品福利一区二区| 欧美一区二区三区四区在线观看地址| www.av88| 老牛嫩草一区二区三区日本 | 57pao精品| 国产对白videos麻豆高潮| 91精品啪在线观看国产81旧版 | 日韩小视频在线播放| 成人午夜在线影视| 亚洲图片你懂的| 视频一区视频二区视频三区视频四区国产 | 日韩在线观看成人| 成人黄色短视频| 日韩精品一区二区久久| 亚洲色图国产精品| 在线观看日本中文字幕| 国产亚洲一区| 国产亚洲xxx| 欧美日韩生活片| 日韩精品一区二区三区免费观影 | 亚洲天堂2016| 国产免费一区二区三区四在线播放| 亚洲乱码国产乱码精品精软件| 国产视频一区欧美| 浅井舞香一区二区| 成人黄色激情视频| 久久精品国产在热久久| 欧美中在线观看| 久久久蜜桃一区二区| 美腿丝袜亚洲综合| 91色在线观看| 人妻少妇精品无码专区久久| 91丨porny丨最新| 国产美女在线精品免费观看| 黄色成人一级片| 久久综合给合久久狠狠狠97色69| 成人免费淫片视频软件| 精品黑人一区二区三区在线观看| 日本最新不卡在线| 91精品视频播放| 天天操天天射天天舔| 91小视频在线观看| 日韩欧美亚洲区| 国产黄色小视频在线| 亚洲电影一区二区三区| 国产l精品国产亚洲区久久| 精品欧美一区二区三区在线观看 | 日本三级在线观看网站| 精品久久久久久中文字幕一区奶水| 超碰成人在线免费观看| 美女精品导航| 91久久免费观看| 久久久久亚洲av片无码v| 日韩高清一级| 美乳少妇欧美精品| 午夜久久久久久久久久影院| 国产一区美女在线| 久久综合久久久| h片在线观看网站| 色综合天天在线| 原创真实夫妻啪啪av| 奇米狠狠一区二区三区| 欧美日韩xxxxx| 一区二区三区在线免费观看视频 | 成人午夜视频在线观看免费| 天天综合网站| 日韩精品一区在线观看| 人人人妻人人澡人人爽欧美一区| 中文字幕亚洲影视| 欧美高清在线播放| 中文字幕在线一| 91麻豆.com| 97超碰在线视| 日韩五码电影| 亚洲欧美日韩成人| 日韩大片免费在线观看| 国产中文一区二区三区| 日韩久久不卡| 在线黄色的网站| 精品欧美黑人一区二区三区| 超碰人人干人人| 蜜桃久久av| 国产无套精品一区二区| 污片在线免费观看| 欧美三级三级三级爽爽爽| 国产精品无码毛片| 狠狠噜噜久久| 91嫩草免费看| 男人天堂久久久| 在线一区二区三区四区五区| 青青草视频网站| 欧美日韩福利| 国产成人精品日本亚洲11| 欧美成人性生活视频| 精品视频资源站| 我不卡一区二区| 先锋亚洲精品| 久久99导航| 夜鲁夜鲁夜鲁视频在线播放| 亚洲精品久久久久久下一站 | 在线观看免费高清视频| 2023国产精品| 久久精品免费一区二区| 红杏视频成人| 97国产在线观看| a级片在线视频| 亚洲欧美日韩在线| 国产黄色一区二区三区| 国产精品a级| 亚洲一区二区三区在线免费观看| 偷拍自拍在线| 亚洲动漫第一页| 亚洲色图14p| 欧美在线首页| 国产一区国产精品| 成人免费网站视频| 亚洲欧美日韩中文视频| 老熟妇一区二区三区| 国产日产亚洲精品系列| 天天爽人人爽夜夜爽| 99精品电影| 99一区二区三区| 青青在线视频| 亚洲精品日韩欧美| 成人午夜精品视频| 亚洲精品国产一区二区精华液 | 特级特黄刘亦菲aaa级| 狠狠综合久久av一区二区老牛| 国产精品91在线| 欧美日本一道| 精品少妇一区二区三区视频免付费| 久久久久久久毛片| 久久国产麻豆精品| 粉嫩av一区二区三区天美传媒 | 日本精品视频| 九九热精品视频| 五月婷婷久久久| 欧美色图天堂网| 免费一级a毛片夜夜看| 91免费观看国产| 九九热99视频| 激情综合亚洲| 日韩欧美在线观看强乱免费| 欧美天堂一区| 午夜精品免费视频| 亚洲免费视频一区二区三区| 亚洲精品一区二区在线观看| 男女啊啊啊视频| 中文字幕在线观看一区| 成人在线视频免费播放| 日本不卡的三区四区五区| av不卡在线免费观看| 久久黄色影视| 成人啪啪免费看| 另类专区亚洲| 韩国v欧美v日本v亚洲| 国产高清免费av在线| 精品成人佐山爱一区二区| 一区二区三区黄| 亚洲自拍偷拍网站| 五月天婷婷丁香网| 97久久精品人人爽人人爽蜜臀| 日韩av在线第一页| 久久成人综合| 麻豆成人av| 国产亚洲成av人片在线观黄桃| 午夜精品久久久久久久久久久久 | 在线播放第一页| 日本欧美一区二区在线观看| 极品粉嫩国产18尤物| 99精品视频在线观看播放| 欧美极品一区二区| 亚洲精品a区| 91精品久久久久久久久久久| 韩国主播福利视频一区二区三区| 亚洲性线免费观看视频成熟| 亚洲精品久久久久久久久久 | 日韩免费在线观看| 自拍偷拍精品视频| 色哟哟一区二区三区| 精品无码人妻一区二区三区品| 丁香婷婷深情五月亚洲| 日本在线播放一区二区| 久久亚洲视频| 欧美日韩在线中文| 欧美人成在线| 在线观看av的网址| 自产国语精品视频| 伊人情人网综合| 日韩精品一区二区久久| 秋霞久久久久久一区二区| 亚洲精品白浆高清| 99re在线国产| 日韩在线精品强乱中文字幕| 亚洲影院污污.| 欧美专区一区| 51午夜精品| 日本在线视频一区二区三区| 亚洲va码欧洲m码| 欧美成人一二区| 国产精品一区二区久久久久| 欧洲一级精品| 国产不卡av在线| 日韩精品三区| 国产精品久久久91| aaaa欧美| 97人人模人人爽人人喊38tv| 国语一区二区三区| 91一区一区三区| 午夜宅男在线视频| 国产精品自在在线| 久久性爱视频网站| 久久精品无码一区二区三区| 中文字幕无码日韩专区免费| 亚洲一区二区成人在线观看| 国产精品777777| 欧美剧情片在线观看| 午夜免费福利视频| 国产视频一区在线| 免费观看久久久久| 4k岛国日韩精品**专区| 激情久久一区二区| 国产一区免费观看| 日韩欧美自拍| 久久国产精品视频在线观看| 免费成人你懂的| 国产免费一区二区三区最新6| 韩国三级电影一区二区| 日本久久久久久久久久| 中文字幕乱码久久午夜不卡| 欧美三级日本三级| 91福利在线观看| 亚洲免费国产视频| 在线播放日韩专区| 波多野结衣视频一区二区| 国产欧美一区二区| 日韩av系列| 狠狠精品干练久久久无码中文字幕| 夜间精品视频| 国产一级特黄a大片免费| 成人手机电影网| 国产亚洲精品久久久久久豆腐| 国产精品水嫩水嫩| 久久av高潮av无码av喷吹| 欧美中文字幕久久| 午夜av免费观看| 欧美巨猛xxxx猛交黑人97人| av高清一区| 久久爱av电影| 激情久久综合| 激情成人在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 激情五月深爱五月| 色噜噜偷拍精品综合在线| 殴美一级特黄aaaaaa| 伦伦影院午夜日韩欧美限制| 一区二区三区短视频| 国产区二精品视| 中文字幕免费一区二区三区| www.99av.com| 久久精品视频一区| 天天综合天天干| 亚洲精品国产精品乱码不99按摩| 人成在线免费视频| 欧美精品久久一区二区| av在线精品| 99re99热| 国内精品伊人久久久久av影院| 中文字幕人妻熟女在线| 亚洲男人的天堂一区二区| 中文字幕一区二区在线视频| 亚洲精品中文字幕有码专区| 欧美久久天堂| 久久久久久精| 国产亚洲精品久久久久婷婷瑜伽| 久热免费在线观看| 91社区在线播放| 久久久久久久久影院| 日韩精品中文字幕在线播放| 美女的胸无遮挡在线观看| 狠狠色伊人亚洲综合网站色| 亚洲欧洲日本mm| 男人的天堂影院| 丰满岳妇乱一区二区三区| 性xxxx视频播放免费| 日本sm极度另类视频| 欧美军人男男激情gay| 五月婷婷之婷婷| 亚洲欧美日韩国产手机在线 | 一区二区三区精品视频在线观看| 日本黄网站免费| 久久久精品国产99久久精品芒果 | 欧美日韩免费网站| 午夜小视频免费| 日产精品99久久久久久| 国产欧美一区二区三区精品观看 | 亚洲色图欧美色| 欧美日韩中文国产| www.在线视频| 精品欧美日韩在线| 日韩中文字幕区一区有砖一区| 亚洲欧美一区二区三区不卡| 一区二区免费在线播放| 国产精品国产三级国产专业不| 欧美日韩福利| 性xxxxxxxxx| 精品久久久久久久久久久久久久 | 加勒比婷婷色综合久久| 日韩欧美中文字幕一区| 91豆花视频在线播放| 免费在线观看91| 久久99精品久久久久久| 国产高潮国产高潮久久久91 | 国产不卡av在线播放| 久久久女女女女999久久| 自拍偷拍精品| 在线免费黄色网| 一区二区三区四区精品在线视频 | 精品久久久久久久久久久久久久久久久 | 久久精品国产精品青草| 国产成人av免费在线观看| 亚洲大胆人体在线| 老司机成人影院| 日本一二三区视频在线| 91香蕉视频在线| 在线视频1卡二卡三卡| 久久免费国产视频| 日韩欧美精品一区| 五月天激情小说| 欧美日韩在线播放三区四区| 久草免费在线色站| 亚洲ai欧洲av| 99这里只有精品| 国产人妻精品一区二区三|