亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

CSS3 transition規范的實際使用經驗

2024-07-11 09:00:45
字體:
來源:轉載
供稿:網友

   關于具體解決方法或如何規避問題的意見可以參考另一篇非常有見地的文章,“All You Need to Know About CSS Transitions”。Alex MacCaw講述的是關于實現特定的效果,而我要談的是技術背景,主要討論在使用CSS過渡的過程中所未預料到的問題。

  結構 (HTML),表現(CSS),以及行為(JavaScript)相分離并不是什么新鮮的事情,然而 CSS 能跨越這個界限并且可以在短期內得到實際的應用,這還真的是一個完全不同的討論話題。

  幾周前,我開發一個 JavaScript 模塊,在能夠使用 CSS 過渡的條件下,JavaScript 端又無法獲取到實現過渡的方式。實際遇到的問題是這兩者根本沒有辦法同步,經過多次的測試后,我只能放棄。而我的測試結果正是本文所講述的。

  首先,我們要說一下getcomputedstyle(),是一種用 JavaScript 返回瀏覽器渲染CSS的屬性值的方法。 這個方法可以查看“DOM Level 2: getComputedStyle()”和“CSS Level 2: Computed Values”。

  這對于像 font-size 這樣的屬性, 通過一個參數便可以轉換為像素值。 但對于可以縮寫的屬性值,例如 margin ,一些瀏覽器則返回為空。再就是那些同一屬性的不同屬性值,例如 font-weight 的值 bold 和700。WebKit也有一個小bug,它會從偽對象中提取出屬性值。

  這里所講述的瀏覽器之間的差異是2013年1月在使用 Firefox18(Gecko),Opera 12.12 (Presto), Internet Explorer10(Trident),Safari 瀏覽器6.0.2(WebKit),Chrome 23(WebKit) 以及 Gecko 和 WebKit的 Nightly build channels。

  事不宜遲,讓我們來一起看一下規范與實際情況的差異,為了方便,我省略了各瀏覽器的前綴。在文中我通過創建一個 CSS3 Transitions Test Suite 來發現問題。

  1、指定過渡

  CSS3 transitions 規范定義了以下四個 CSS 屬性:

  transition-property

  transition-duration

  transition-delay

  transition-timing-function

  過渡屬性

  transition-property 是用來指定當元素其中一個屬性改變時執行 transition 效果。系統默認值是 all,這意味著瀏覽器能夠以動畫形式呈現所有的可過渡屬性(transition-duration持續時間超過0s),該屬性支持單個值或以逗號隔開的多個值列表(跟其他所有transition-*屬性一樣)。

  規范規定,一個瀏覽器應該接受并保存任何它不能識別的屬性。因此,下面的例子中將會看到持續2秒的 padding 過渡:

  1

  2

  transition-property:foobar,padding;

  transition-duration:1s,2s;

  不同于規范的是,上面的情況在 WebKit 下會解析為 transition-property: all。 而 Firefox 和 Opera 會解析為 transition-property: all, padding.

  過渡持續時間

  transition-duration 屬性規定了一個過渡從初始狀態到目標狀態的持續時間。它接受以秒或毫秒的值(例如,2.3S和2300ms都是指2.3秒)。

  盡管規范明確規定了過渡值必須為正數,但 Opera 仍接受-5S的值,至少對于getComputedStyle()來說是這樣的。雖然規范中并沒有限制屬性值的大小,但 Opera 和 IE 不接受低于10ms的值。而 WebKit 在 getComputedStyle()執行中有個小bug,例如:返回值0.009999999776482582s會取代0.01s。

  過渡延遲時間

  transition-delay 屬性規定了在執行一個過渡之前的等待時間,同樣使用值。Delay 可以是負值,但這會導致動畫無法平滑過渡。

  IE 和 Opera 不接受 transition-duration 在-10ms和10ms之間的值。WebKit 的 floating point 也會在這兒出現。

  transition-timing-function 屬性規定了過渡效果的時間曲線。包括cubic-bezier(x1, y1, x2, y2), step(, start|end),和預先定義的 cubic-bezier 曲線關鍵詞,linear, ease, ease-in, ease-out和ease-in-out。在使用 LEA Verou 特有的 cubic-bezier 曲線編輯器時,cubic-bezier 背后的公式就變得不再重要。盡管 cubic-bezier 曲線會平滑過渡,但是step()函數會在一個固定的間隔跳到下一個值。這樣便會產生逐幀動畫的效果;如“Pure CSS3 Typing Animation With steps()”。

  linear 的計算值通常表示為 cubic-bezier(0, 0, 1, 1)—— WebKit除外。但 WebKit 仍然會返回 cubic-bezier(0.25, 0.1, 0.25, 1),而不是 ease。規范規定 X 值的必須介于0和1之間,y 值可以超過該范圍,而WebKit 允許 X 超過此范圍,而 Android 瀏覽器(4.0版本)卻混淆了x和y的范圍。

  2 過渡完成

  我前面已經提到了 CSS 過渡異步運行的問題。規范提及了 TransitionEnd 事件允許 JavaScript 與已完成的過渡同步進行。但可惡的是該規范對此并沒具體闡述。事實上,它只是簡單地說明單個事件會因為已完成過渡的屬性而被終止。

  規范指出縮寫屬性(如padding)應為包括其在內的所有屬性(padding-top,padding-right,等等)實現過渡,它并沒有說哪個屬性應該在 TransitionEnd 事件中被具體命名。然而即使過渡被定義為縮寫屬性(如padding),Gecko,Trident 和 Presto 對于普通書寫的子屬性(如padding-top)同樣可以實現過渡,而 WebKit 則會阻止過渡。 如果你指定 transition-property: padding,WebKit 會為 padding 執行過渡, 但 transition-property: all 這樣就會針對 padding-left 執行新的過渡。而當 padding 正執行過渡時, iPhone 6.0.1 的 Safari 瀏覽器在也可以執行 font-size 和 line-height的過渡。

  1

  2

  .example{padding:1px;transition-property:padding;transition-duration:1s;}

  .example:hover{padding:10px;}

  以上 CSS 將在不同瀏覽器下觸發不同的 TransitionEnd:

  Gecko,Trident,Presto:

  padding-top,padding-right,padding-bottom,padding-left

  WebKit:

  padding

  1

  2

  .example {padding: 1px;transition-property: all, padding;transition-duration:1s;}

  .example:hover{padding:10px;}

  以上 CSS 將在不同瀏覽器下觸發不同的TransitionEnd:

  Gecko,Trident,Presto,WebKit:

  padding-top,padding-right,padding-bottom,padding-left

  Safari 6.0.1 on iPhone:

  padding-top, padding-right, padding-bottom, padding-left, font-size, line-height

  你可以指定負值 transition-delay 來“快速實現”轉換。但是transition-duration: 1s; transition-delay: -1s; 在 Gecko 和 WebKit 下執行轉換并會立即跳轉至目標值。而Trident 和 Presto 將不會觸發任何事件。

  WebKit在 getComputedStyle() 上遇到的浮點問題也同樣存在于 TransitionEnd.elapsedTime 中,所有的瀏覽器如此。 Math.round(event.elapsedTime * 1000) / 1000 可輔助修復。

  WebKit 和 IE 瀏覽器下執行 background-position,會觸發對 background-position-x 和 background-position-y 的 TransitionEnd,而不是 background-position 的TransitionEnd。

  所以,即使你知道過渡正在執行,你也不能依賴已有的 TransitionEnd.propertyName。盡管你可以編寫大量的 JavaScript 來彌補,但在沒有對每一個屬性進行恰當性能檢測的情況下,即使你采用最新方法也將無法實現。

  3 過渡屬性

  規范列出了瀏覽器支持動畫過渡的一些CSS屬性。當然也包括CSS2.1的屬性。還有一些可以動態變化的新屬性,如 Flexible Box Layout。

  該屬性數值類型非常重要。margin-top 接受和值,但根據可過渡CSS屬性列表,只有是可實現動畫效果。但這并不能讓瀏覽器開發商避開值實現過渡。然而,word-spacing 屬性除外。該屬性包括值,但沒有瀏覽器能以動畫形式顯示。

  撇開 TransitionEnd 事件,如果在過渡發生的指定時間內,getComputedStyle()值從A變到B,該屬性就會從值A過渡為值B。如果沒有執行,例如“CSS屬性值發生變化”,那么也許應該仔細核查下DOM。setTimeout()的解析度還不夠好以達到快速過渡(小于幾百毫秒的持續時間),這時候requestAnimationFrame()就是你的幫手。在重繪前會提醒你,并提供了一些中間值供參考。除了opera,其他的都可以支持。

  4 過渡屬性的優先級

  transition-property 規范允許多次過渡單個屬性,如果單個屬性在“過渡屬性”中的值被多次指定,過渡將通過持續時間,延遲和時間曲線給出的值來實現。因此,我們可以實現 padding 過渡持續1秒,padding-left 過渡持續2秒; 或使用 transition-property: all 來定義默認屬性類型并重置特定屬性。

  在 Firefox 和 IE 瀏覽器上,這些都沒有任何問題。 但 opera下會混淆優先順序。它認為 padding-left 比padding 和 all 更加具體,而不是簡單地使用最后一個屬性。

  最大的問題是WebKit。如果一個屬性被多次指定,它將進行多次過渡。 如果想讓WebKit崩潰,嘗試用transition-duration :0.1秒運行transition-property: padding, padding-left,WebKit將至少執行兩次過渡。但更有意思的是,TransitionEnd可以進行上百次的單一過渡。

  5 auto的轉變

  CSS 屬性中的 auto 值能夠自適應寬度,如果塊級元素設置了width: auto,那么就會繼承父級的寬度。有時你需要從 width: auto 改變到一個具體寬度,并且需要過渡那個改變。當然本規范并沒有強制或否定 auto 值可用于過渡。

  Firefox,IE 和 Opera 無法從 or 值過渡到 auto 值。 IE 下有 z-index 有一點點例外,但僅此而已。 另一方面,WebKit 能夠從and 過渡到幾乎可以接受 auto 值的任意CSS 屬性。WebKit 不太喜歡 clip;因為這個屬性,它只會引發 TransitionEnd 過渡,而過渡期間不會產生或顯示任何中間值或狀態。

  對于其他屬性,如 width 和 height,WebKit 下會有一些差異。如果 width: auto 過渡為 300px 的寬度,然后再過渡成 100px,那么過渡不會從 300 縮至100 像素。它會從 0 增加到 100 像素。

  關于完整的兼容性列表,可以查看“CSS Animatable Properties.”

  6 隱式過渡

  隱式過渡發生在當一個屬性的改變引起另一個屬性被過渡的時候, 或者當你想改變一個父級元素中的屬性, 會導致子元素不論是繼承過渡或附屬屬性的過渡。font-size: 18px, padding: 2em—–padding 會被計算為 2 × font-size, em 就是36像素。

  有各種各樣的相對值類型:, , em, rem, vh, vw等等。使用一個相對值,如 padding: 2em,讓瀏覽器重新計算屬性的 getComputedValue(),每次應變量(如font-size)都會發生改變。由于計算樣式改變,將反過來導致 padding 的過渡。這種過渡被定義為“隱式過渡”,因為padding屬性值沒有被修改。

  大多數瀏覽器會實現這種隱式過渡。除了 IE 10,只對 line-height 屬性執行隱式過渡。除了 vertical-align 外,Webkit 可以針對其他所有屬性執行隱式過渡。除了字體相對屬性值,還有寬度相對屬性值(通常為),相對屬性值(如vh和vw),默認初始值(Opera中的column-gap: 1em),還有“currentColor”。所有這些都有可能會,也可能不會引起隱式過渡。

  在 Firefox 中, 當繼承和附屬屬性執行過渡,但他們的 transition-duration 或 transition-delay 并沒有隨著過渡, 這些隱式過渡就會變得特別有趣。 而 Webkit 和 Opera 執行過渡時會很有視覺感,但 Firefox 會稍顯錯亂。在IE中不會輕易執行隱式過渡。

  另外,別忘了繼承, DOM 元素的 font-size 將會由其子元素繼承,只要不被覆蓋,就可能引起隱式過渡。

  7 轉換和偽元素

  偽元素(:before和:after),在 CSS2 中已經有了介紹. 如果不熟悉可以查看 “Learning to Use the :before and :after Pseudo-Elements in CSS”。 雖然 CSS3 中定義了額外的偽元素(::alternate,::outside),但是他們(到目前為止)還并沒有被支持。因此所有 CSS 動畫屬性也應該是偽元素的動畫屬性。

  Firefox 和 IE 10 可以在偽元素上實現屬性過渡. 而 Opera,Chrome 和 Safari 則不會。 WebKit 從2013年一月起也開始支持。

  偽元素的過渡會導致內容自身產生一些新問題,因為在生成內容時 TransitionEnd 過渡根本還沒有結束。 在某一時間段內,他們理應在主元素上被觸發,并通過 TransitionEnd.pseudoElement 提供偽元素,但即便是“CSS動畫過渡”的“過渡事件”部分,編寫者的方案也并沒有指定哪一個最合適。

  我們想要改變 content 屬性值,因此IE 8將在特殊情況下(比如:hover狀態)將會重新渲染該元素。結果表明,對老的IE版本進行兼容會影響到所有其他瀏覽器的效率。所以, 當試圖在偽元素上進行屬性過渡時,要確保 content 的值不會被改變。

  如果主元素沒有運行:hover狀態,那么 IE 10 將不針對偽元素“:hover”執行過渡。

  1

  2

  .some-selector:before{content:"hello";color:red;transition:all 1s linear 0s;}

  .some-selector:hover:before{color:green;}

  在 IE10 下,:before在 mouseover 的時候,:hover 是一定要定義的。

  這個問題在于不是一定要求你定義主元素:hover 狀態。而是如果沒有定義,IE 10 會將:hover解釋為:active。更奇怪的是,:active狀態甚至會在 mouseup 后繼續持續,而當你再次點擊就會取消。

  8 背景標簽

  在編輯標簽時,IE 10 是唯一可對背景或前景響應的瀏覽器,如果標簽變為背景后,雖然它會完成正在執行的過渡,但它不會執行新的過渡。IE 10 將等到標簽變為前景后再執行新過渡。幸運的是,IE 10 已經支持頁面的可見性 API,允許開發人員應對這種操作行為。

  9 隱藏元素

  對于隱藏的元素,過渡是不會被執行的,因為大多數瀏覽器都明確認為沒有必要在一個看不見的元素里運行過渡。然而,也有特例,在 Opera 下無論元素隱藏與否它都將執行過渡。

  10 過渡之前,DOM樹是否加載完畢

  當文檔脫離解析模式時,DOMContentLoaded 被觸發,如果你在使用 jquery,那么應該了解 jQuery.ready(),過渡可以在這之前運行。

  11 渲染差異

  這個問題我之前已經說過了, 本文就是基于我的測試結果進行闡述的。測試是自動運行的,但事實證明,還是發現了很多問題。

  當時要實現從漸變到漸變的背景過渡是不可能的,但可以實現從漸變到純色的過渡。如果漸變正在進行中,從白色到目標顏色的過渡即將開始,在過渡啟動時,會看到白色在快速閃動。目前所有的瀏覽器中都可以察覺到這一點。

  不過Firefox 似乎是用不同的算法來渲染圖像的,以表明它們執行了動畫過渡(見實例)。很顯然,在動畫過渡時, Gecko 并沒有呈現好的效果。如果 transform: scale() 足夠低,這種情況將發生。

  Firefox 不會從 a:visited 到 a:hover 過程中過渡動畫,反之亦然。 但它會從 a:visited 直接跳到 a:link,然后過渡到 a:hover 狀態, 你可以在這個例子中看到,這是在 Mozilla Developer Network”Privacy and the :visited Selector”中提到的。然而 IE 10 與 Chrome,Safari 和 Opera 瀏覽器一樣,會從a:link到a:visited實現過渡。

  如果子元素的 position 改變時, Firefox 不會觸發元素的屬性, 而 WebKit,Opera 和 IE 10 則會觸發。

  12 對規范的建議

  看完了整個規范并對所有功能進行了測試之后,覺得如果能進行以下優化將會更好:

  加入TransitionsEnd(注意是復數),一個元素的所有過渡一旦完成就啟動觸發。它能告知一系列已被觸發的屬性,但是不需要知道哪些已被過渡, 只要知道所有的動畫過渡何時可以完成即可。

  加入 TransitionStart 任務,以便可以獲取每個待過渡屬性。因為 JavaScript 的事件循環和渲染路徑不一定能互相牽制,單一的 TransitionsStart(也會重復多次)可能是更好的解決方案。我不知道為什么要 cancel 任務,所以這就叫“操作后就不再管”。

  要明確哪些 TransitionEnd 需要被觸發,前面舉例的 WebKit 中 padding 和 padding-left 的問題會讓人很頭疼。

  要明確說明“隱形過渡”如何處理, 前面例子中 transition-property: font-size的line-height: 1em 應該要有明確的處理方式。

  需要添加那些允許定義 pointer-events: none 并防止意外懸停狀態的::transitioning偽類,這里防止濫用樣式,因為他們自身會引發新的過渡或者改變正在進行的過渡。除了這些建議,我們還需要能在不大量使用 JavaScript 進行輔助的情況下進行一些常規操作。

  有時候你需要禁用過渡。例如,為了在網站訪問者面前呈現完美過渡之前,你需要調整布局并對尺寸規格進行精確測算對位置進行完美布局。

  有時你想立即從 DOM 中移除一個對象。你可以添加一個類,等待 TransitionEnd 完成后再進行刪除。

  跟刪除對象一樣,你想要添加一個新元素。你可插入這個元素,設置“隱藏”以實現新元素的樣式變化。

  重新排序,隱藏和顯示元素都比較常見。針對這些進行樣式操作就要像操作實用程序一樣,如 Isotope。

  13 使用delay

  使用延時,可以很好的解決無意的鼠標懸停造成的樣式變化,如同setTimeout()。

  14 總結(可參考前面談到過的實例)

  使用 transition-property: all 時注意,否則將遇到本不需要進行轉換的 TransitionEnd 情況。

  當使用可縮寫屬性時,觸發事件的數量會根據不同瀏覽器而不同。

  Opera 和 IE 不支持延遲時間為負值。

  Webkit在屬性優先級上存在問題,例如:要避免transition-property: margin, margin-left的情況。

  IE不支持隱式轉換。

  Firefox和Opera無法解析 transition-property: all, width。

  Opera 混淆了屬性的優先級。

  偽元素的過渡不會影響 TransitionEnd。

  偽元素的過渡在 IE 10 下會出現:hover的bug。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品天天看| 久久好看免费视频| 亚洲精品国产精品久久清纯直播| 国产精品va在线| 在线电影欧美日韩一区二区私密| 爽爽爽爽爽爽爽成人免费观看| 久久久久久久久国产| 亚洲人成免费电影| 91在线|亚洲| 综合av色偷偷网| 久久成人18免费网站| 亚洲欧美激情四射在线日| 在线观看免费高清视频97| 日本一区二区不卡| 日韩欧美综合在线视频| 亚洲欧洲在线视频| 亚洲a中文字幕| 亚洲精品按摩视频| 狠狠做深爱婷婷久久综合一区| 国产手机视频精品| 亚洲国产精品va在线看黑人动漫| 人人做人人澡人人爽欧美| 亚洲一区亚洲二区| 久久久亚洲国产天美传媒修理工| 激情成人在线视频| 最近2019中文字幕大全第二页| 欧美电影院免费观看| 欧美三级欧美成人高清www| 欧美日韩国产一区在线| 亚洲精品国精品久久99热一| 亚洲aⅴ日韩av电影在线观看| 中文字幕免费精品一区| 91老司机精品视频| 亚洲图片欧美日产| 九九热精品视频在线播放| 精品高清一区二区三区| 美女黄色丝袜一区| 国产精品视频男人的天堂| 午夜精品福利在线观看| 日韩精品免费在线播放| y97精品国产97久久久久久| 久久影院在线观看| 亚洲视频在线播放| 精品国内自产拍在线观看| 日日摸夜夜添一区| 麻豆国产va免费精品高清在线| 国产香蕉一区二区三区在线视频| 精品视频在线播放色网色视频| 欧美麻豆久久久久久中文| 久久久久久久国产| 久久精品久久久久| 欧美第一淫aaasss性| 色av吧综合网| 色综合天天综合网国产成人网| 亚洲娇小xxxx欧美娇小| 欧美日韩激情视频8区| 亚洲人成网站777色婷婷| 久久精品视频va| 精品中文字幕在线| 在线观看欧美www| 日韩中文字幕国产精品| 亚洲激情视频在线播放| 国产一区二区三区直播精品电影| 久久99国产精品久久久久久久久| 亚洲午夜未满十八勿入免费观看全集| 国产精品一区二区久久精品| 日韩国产欧美精品一区二区三区| 欧美理论电影在线播放| 久久久99免费视频| 97视频在线观看成人| 欧美国产日韩一区| 久久久国产精彩视频美女艺术照福利| 亚洲视频综合网| 久久久久久免费精品| 色一情一乱一区二区| 一区二区三区黄色| 国产日韩一区在线| 免费91在线视频| 91tv亚洲精品香蕉国产一区7ujn| 欧美激情第99页| 色777狠狠综合秋免鲁丝| 欧美午夜精品久久久久久久| 日韩在线视频免费观看| 日本精品久久久| 欧美精品中文字幕一区| 成人黄色免费网站在线观看| 久久男人av资源网站| 亚洲国产欧美一区二区三区久久| 在线播放日韩av| 国产亚洲欧洲在线| 国产一区二区成人| 中文字幕亚洲激情| 欧美丰满老妇厨房牲生活| 亚洲电影在线看| 国产偷国产偷亚洲清高网站| 亚洲精品中文字| 欧美日韩激情美女| 亚洲国产免费av| 亚洲欧美另类自拍| 91国内揄拍国内精品对白| 日韩精品高清在线观看| 日本欧美精品在线| 亚洲国产精品福利| 尤物九九久久国产精品的特点| 免费不卡在线观看av| 尤物yw午夜国产精品视频| 日本午夜人人精品| 成人写真福利网| 欧美伦理91i| 国产激情综合五月久久| 久久久国产一区二区三区| 日本sm极度另类视频| 91丝袜美腿美女视频网站| 日本韩国欧美精品大片卡二| 97视频在线看| 亚洲片在线资源| 国产成人精品a视频一区www| 欧洲美女免费图片一区| 亚洲性生活视频在线观看| 亚洲欧美日韩图片| 欧美疯狂xxxx大交乱88av| 亚洲最大激情中文字幕| 欧美精品久久久久久久久| 欧美极度另类性三渗透| 欧美在线激情网| 久久精品这里热有精品| 久久久久久久久国产| 成人天堂噜噜噜| 久久在线视频在线| 欧美成人免费小视频| 亚洲人成77777在线观看网| 国产精品久久久久久av福利软件| 亚洲国产精品久久精品怡红院| 亚洲free性xxxx护士hd| 精品久久久久久久大神国产| 日韩精品欧美国产精品忘忧草| 国产偷亚洲偷欧美偷精品| 久久久精品中文字幕| 久久久久久国产| 国产精品成人一区二区三区吃奶| 神马久久久久久| 欧美激情精品久久久久久黑人| 午夜精品久久久久久久久久久久久| 亚洲成人黄色在线| 中文字幕亚洲综合久久| 亚洲国产精品女人久久久| 久久资源免费视频| 亚洲激情视频网| 欧美国产日韩一区二区| 欧美最近摘花xxxx摘花| 91亚洲精品久久久久久久久久久久| 国产精品久久久久久久久粉嫩av| 欧美精品日韩www.p站| 久久成人精品视频| 欧美在线视频一区| 日韩精品免费观看| 日本精品久久中文字幕佐佐木| 中文字幕视频一区二区在线有码| 韩剧1988免费观看全集| 亚洲人成电影网站| 欧美色道久久88综合亚洲精品| 国产精品久久婷婷六月丁香| 91产国在线观看动作片喷水| 欧美日韩性生活视频|