<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          《CSS揭秘》實用技巧總結(jié)

          共 11174字,需瀏覽 23分鐘

           ·

          2020-08-24 10:26

          ?

          作者:幻靈爾依 (授權(quán)原創(chuàng))

          https://juejin.im/post/5e0fef935188253a624a6a72

          ?

          《css揭秘》中講了47個css技巧,其中有很多日常編碼中并不會用到,本文除了將書中部分實用技巧羅列出來之外,還嘗試用幫助讀者搞明白backgroundanimation 等常用但是卻掌握不牢固的知識點。所以閱讀本文不僅可以學(xué)習(xí)一些實用技巧,也可以鞏固自己的 css 基礎(chǔ)知識。

          實用小技巧

          DRY原則

          全名Don't Repeat Yourself,該原則適用于所有編程語言而不限于css。

          擴大可點擊區(qū)域

          • 關(guān)鍵實現(xiàn):偽元素
          • 具體分析:利用偽元素和定位達到鼠標(biāo)移到邊緣時候出現(xiàn)手型且可點擊
          .expand-range?{
          ??position:?relative;
          }
          .expand-range:after?{
          ??content:?'';
          ??position:?absolute;
          ??top:?-10px;?right:?-10px;?bottom:?-10px;?left:?-10px;
          }

          推薦使用scss:

          @mixin expand-range($top: -10px, $right: $top, $bottom: $top, $left: $right, $position: relative) {
          position: $position;
          &:after {
          content: '';
          position: absolute;
          top: $top;
          right: $right;
          bottom: $bottom;
          left: $left;
          }
          }
          //使用:.test { @include expand-range($top: -5px, $position: absolute) }

          巧用層疊上下文

          • 關(guān)鍵實現(xiàn):偽元素 層疊上下文
          • 具體分析:利用層疊上下文和 z-index: -1 特性實現(xiàn)偽元素覆蓋背景同時又不會遮擋文字(具體實現(xiàn)原理參考這里 )。這是一個非常常用又好用的技巧,善加利用可以達到很多意想不到的效果。地址
          ??position:?absolute;
          ??top:?0;?right:?0;?bottom:?0;?left:?0;
          ??z-index:?-1;
          層疊上下文

          邊框內(nèi)圓角

          • 關(guān)鍵實現(xiàn):偽元素 層疊上下文
          • 具體分析:利用偽元素實現(xiàn)圓角矩形并疊加在父元素的背景之上文字之下:地址
          邊框內(nèi)圓角

          clip-path

          • 關(guān)鍵實現(xiàn):clip-path
          • 具體分析:css3 新屬性 clip-path 可以實現(xiàn)區(qū)域裁剪,現(xiàn)在瀏覽器支持較好的有三個函數(shù):clip-path: circle(50px at 50px 50px)50px 50px 的地方為圓心裁剪一個半徑 50px 的圓;clip-path: ellipse(30px 40px at 50px 50px)50px 50px 的地方為圓心裁剪一個橫向半徑 30px,縱向半徑 40px 的橢圓;clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%) 按照多個坐標(biāo)剪裁一個多邊形,此處是菱形。有了 clip-path,就可以輕易的實現(xiàn)任意多邊形了:地址
          clip-path

          自適應(yīng)的橢圓

          • 關(guān)鍵實現(xiàn):border-radius
          • 具體分析:border-radius 竟然可以設(shè)置 8 個角的半徑~ 其中水平方向(對角線上下有弧度的地方)和垂直方向(對角線左右有弧度的地方)各四個,可以用 / 分割。如果水平或垂直方向指定的值少于四個,則會按照和 margin、padding 一樣的規(guī)則重復(fù)。如果只指定來水平方向的,那么垂直方向的跟水平方向的一樣。
          ????border-radius:?5em?1em;?/*相當(dāng)于border-radius:?5em?1em?5em?1em?/?5em?1em?5em?1em;*/
          自適應(yīng)的橢圓

          自適應(yīng)寬度

          • 關(guān)鍵實現(xiàn):min-content關(guān)鍵字
          • 具體分析:如何實現(xiàn)一個元素的寬度根據(jù)后代元素的最大固定元素寬度自適應(yīng)呢?絞盡腦汁,也只能利用 display: inline-block 的包裹特性實現(xiàn)一個不完全的版本:地址 這種方法的缺陷是文本脫離了文檔流,高度未計入包含塊。但是如果利用 min-content 關(guān)鍵字,可以一行代碼實現(xiàn)且無副作用:地址
          ??width:?min-content;
          自適應(yīng)寬度

          投影模擬多重邊框

          • 關(guān)鍵實現(xiàn):box-shadowinset
          • 具體分析:使用box-shadow可以模擬實現(xiàn)多重邊框,但是由于陰影不占空間,所以無法觸發(fā)點擊事件,鼠標(biāo)hover邊框時無法出現(xiàn)小手,所以需要配合inset關(guān)鍵字使用:地址
          ??height:?200px;
          ??background:?cyan;
          ??box-shadow:?0?0?0?5px?#000?inset,
          ??????????????0?0?0?10px?#555?inset,
          ??????????????0?0?0?15px?#999?inset;
          投影模擬多重邊框

          單側(cè)投影

          • 關(guān)鍵實現(xiàn):box-shadow
          • 具體分析:box-shadow 前兩個參數(shù)指定陰影的x、y偏移量,注意若為正數(shù)時整體向右/向下偏移,那么相應(yīng)的左方/上方會空出一部分來(可以用來隱藏模糊半徑或擴張半徑),負數(shù)相反;第三個參數(shù)是陰影模糊半徑,即高斯模糊多增加出來的過度顏色;第四個參數(shù)是陰影擴張半徑,表示陰影增加的尺寸,可以是負數(shù),表示陰影縮短的尺寸:地址
          ??box-shadow:?0?5px?4px?-4px?black;

          第二個參數(shù)使陰影整體下移 5px ,第三個參數(shù)使陰影四周多了 4px 的高斯模糊(注意由于整體下移了 5px,所以此時上方還是沒有陰影露出的),第四個參數(shù)又把陰影整體縮小了 4px,,所以左右兩邊才沒有出現(xiàn)模糊半徑導(dǎo)致的高斯模糊陰影色,從而實現(xiàn)單側(cè)投影。

          單側(cè)投影

          還可以逗號分隔設(shè)置多個陰影色,比如下面的兩側(cè)投影效果:地址

          ??box-shadow:?5px?0?5px?-5px?black,
          ?????????????-5px?0?5px?-5px?black;
          單側(cè)投影

          不規(guī)則投影

          • 關(guān)鍵實現(xiàn):filter: drop-shadow()
          • 具體分析:box-shadow 不能透過透明背景顯示出來,不能越過偽元素/子元素顯示出來,而這些drop-shadow能做到。(但無論哪種投影都會被clip-path剪裁掉~~)地址
          ??filter:?drop-shadow(2px?2px?10px?rgba(0,0,0,.5));
          不規(guī)則投影

          濾鏡的染色和褪色效果

          前端開發(fā)大都了解糊濾的高斯模鏡效果是filter: blur()實現(xiàn)的,但是卻很少使用濾鏡的其他幾個調(diào)色效果。filter 的值有blur()drop-shadow()url()brightness()contrast()grayscale()hue-rotate()invert()opacity()saturate()sepia()~~可以使用復(fù)合形式如:filter: sepia(1) saturate(4)等。下面是filter屬性值大集合:地址

          濾鏡的染色和褪色效果

          餅圖 svg

          餅圖的 css 實現(xiàn)方案非常奇怪,所以我忽略之。推薦使用 svg 的實現(xiàn)方案,非常簡單,先來個基本教學(xué)吧~

          先畫個圓:

          <svg?width="100"?height="100">
          ??<circle?r="25"?cx="50"?cy="50"?/>
          svg>

          這里 r="25" 是半徑25, cx cy 分別表示圓心的 x y 坐標(biāo)。

          circle?{
          ??fill:?yellowgreen;
          ??stroke:?#666;
          ??stroke-width:?50;
          }

          這里給圓形定義了一個寬度 40 的描邊:

          餅圖 svg

          再把描邊設(shè)為線段長度 20 間隔 10 的虛線:

          circle?{
          ????...
          ????stroke-dasharray:?20?10;
          }

          當(dāng)把虛線的間隔設(shè)定為大于等于圓周時,虛線的線段長度就是一個扇形區(qū)域(當(dāng)線段長度等于圓周時扇區(qū)達到100%):

          給 svg 設(shè)置圓角和背景色,并旋轉(zhuǎn) -90deg ,就可以實現(xiàn)一個餅圖:地址(使用currentColor關(guān)鍵字和color: inherit 是為了實現(xiàn)DRY原則。)

          但是這樣的餅圖其扇區(qū)大小是不易計算的,為了方便計算,可以讓虛線的線段長度同時也是圓周無限接近100,這樣就可以更方便的設(shè)置扇區(qū)的百分比。圓周是 2πr ,所以 100 = 2πr ,計算得出半徑 r 近似值 16。再利用 svg 的 viewBox 屬性,實現(xiàn)自適應(yīng)容器大小的餅圖:地址

          這種方法有個弊端,就是當(dāng)設(shè)置 stroke-dasharray: 100 100 時會有一條縫,這是取近似值無法避免的。

          背景 background

          background 是我們最常用的屬性之一,但作為一個老前端,我也只能羞恥的說我目前并沒有完全掌握這個屬性。

          background 是一個簡寫屬性,可以包括多個屬性:background-clip、background-color、background-image、background-origin、background-position、background-repeat、background-size、background-attachment 。接下來我們一個個來看看這些屬性的作用:

          • background-color 最常用的屬性,默認(rèn)不繼承(background的所有屬性都默認(rèn)不繼承),初始值為 transparent;有時候使用默認(rèn)繼承可以實現(xiàn)一些好玩的效果,比如倒影;
          • backgroundo-image 背景圖片,可以逗號分割設(shè)置多個,可以是圖片url或者漸變色;
          • background-clip 背景剪裁,可以逗號分割設(shè)置多個,值可以為 broder-box(初始值)、padding-boxcontent-boxtext(新,將背景被文字剪裁);
          • background-origin 設(shè)置背景起始點的相對區(qū)域,搭配 background-position 使用,可以逗號分割設(shè)置多個,值可以是border-boxpadding-box(初始值)、content-box
          • background-position 設(shè)置背景的起始點,可以逗號分割設(shè)置多個,值可以是 10px 20pxcenter centerleft 10px bottom 20px等等,非常靈活;
          • background-size 設(shè)置背景的大小,可以逗號分割設(shè)置多個,值可以是數(shù)字值如30px 40pxauto auto(初始值)、convercontainbackground-repeat: repeat就是根據(jù)這個尺寸大小來重復(fù)的。
          • background-repeat 設(shè)置背景的重復(fù)方式,初始值為 repeat,常使用值的還有no-repeat
          • background-attachment 設(shè)置背景圖像的位置是在視口內(nèi)固定,還是隨著包含它的區(qū)塊滾動。可以逗號分割設(shè)置多個,值有scroll(初始值)、localfixed。詳情查看MDN

          簡寫時 background-size 只能緊接著 background-position 出現(xiàn),以 / 分割,如:"center / 80%"。

          半透明邊框

          • 關(guān)鍵實現(xiàn):background-clip
          • 具體分析:由于background屬性默認(rèn)會覆蓋整個盒模型包括邊框border,所以設(shè)置border-color: rgba(0, 0, 0, .5)時會透出背景色,達不到半透明邊框的效果。css3增加了background-clip屬性,定義背景填充的裁剪區(qū)域。設(shè)置padding-box便可以實現(xiàn)半透明邊框:地址
          ??border:?10px?solid?rgba(255,?255,?255,?.5);
          ??background:?white;
          ??background-clip:?padding-box;
          半透明邊框

          靈活的背景定位

          • 關(guān)鍵實現(xiàn):backgrond-position background-origin
          • 具體分析:我們都知道background-position可以定位背景圖片等位置,但是都是相對padding-box的左上角開始等。css3 允許這樣寫:background-position: right 10px bottom 20px,同時 css3 還支持background-origin,其默認(rèn)值如同其表現(xiàn)border-box,支持設(shè)為padding-boxcontent-box:地址
          ??height:?200px;
          ??padding:?10px;
          ??border:?5px?solid?cyan;
          ??background:?lightblue;
          ??background:?radial-gradient(#00a4fd,?cyan)?no-repeat?right?100px?bottom?/?100px?100px;
          ??background-origin:?content-box;
          背景定位

          background-position 設(shè)為百分比值較為復(fù)雜。百分比值實際上執(zhí)行了以下的計算公式:

          (container width - image width) * (position x%) = (x offset value)
          (container height - image height) * (position y%) = (y offset value)

          由計算公式可知:當(dāng)值為0%時,實際偏移值為0px,此時圖片的左邊界(或上邊界)和容器的左邊界(或上邊界)重合;當(dāng)值為50%時,實際偏移值為容器減圖片剩余空間的一半,圖片左右邊界(或上下邊界)距離容器左右邊界(或上下邊界)相等,此時圖片的中點和容器的中點重合。當(dāng)值100%時,實際偏移值為容器減圖片的剩余空間,所以此時圖片的右邊界(或下邊界)和容器的右邊界(或下邊界)重合。二者之差為負值時同樣有效。地址

          背景定位

          條紋背景

          • 關(guān)鍵實現(xiàn):background-image
          • 實現(xiàn)分析:利用線性漸變實現(xiàn)多種顏色的交錯重復(fù),形成條紋背景。lienar-gradient的第一個參數(shù)是漸變的角度,可以是方向關(guān)鍵字to top(初始值,可忽略不寫)等,也可以是角度90deg等;#fb3 50%指的是色標(biāo)和終點位置值;這里linear-gradient的第二個位置值設(shè)置為0會被解析為前一個色標(biāo)的位置值即50%,這樣寫更加符合DRY原則。
          background:?linear-gradient(#fb3?50%,?#58a?0);
          background-size:?100%?30px;
          條紋背景

          也可以設(shè)置為垂直條紋背景:

          background:?linear-gradient(to?right,?#fb3?50%,?#58a?0);
          background-size:?100%?30px;

          還可以設(shè)置為斜向條紋:

          background:?linear-gradient(45deg,?#fb3?25%,?#58a?0,?#58a?50%,?#fb3?0,?#fb3?75%,?#58a?0);
          background-size:?30px?30px;
          垂直條紋背景

          斜向條紋需要設(shè)置四條條紋才能在平鋪到時候做到無縫拼接。

          更好的斜向條紋:(這里必須設(shè)置起始值#fb3 0)

          background:?repeating-linear-gradient(60deg,?#fb3?0,?#fb3?15px,?#58a?0,?#58a?30px);
          更好的斜向條紋

          網(wǎng)格

          • 關(guān)鍵實現(xiàn):background-imagebackground-size
          • 給多個漸變設(shè)置不同的方向、大小,可以實現(xiàn)網(wǎng)格的效果。地址
          background:?#58a;
          background-image:?linear-gradient(white?1px,?transparent?0),
          ??????????????????linear-gradient(to?right,?white?1px,?transparent?0);
          background-size:?30px?30px;
          網(wǎng)格

          更好的網(wǎng)格:

          background:?#58a;
          background-image:?linear-gradient(white?2px,?transparent?0),
          ??????????????????linear-gradient(to?right,?white?2px,?transparent?0),
          ??????????????????linear-gradient(rgba(255,?255,?255,?.5)?1px,?transparent?0),
          ??????????????????linear-gradient(to?right,?rgba(255,?255,?255,?.5)?1px,?transparent?0);
          background-size:?75px?75px,?75px?75px,?15px?15px,?15px?15px;
          更好的網(wǎng)格

          棋盤

          • 關(guān)鍵實現(xiàn):background-imagebackground-sizebackground-position
          • 具體分析:給多個漸變設(shè)置不同的大小、位置,可以實現(xiàn)網(wǎng)格的效果。地址
          ??background:?#eee;
          ??background-image:
          ????linear-gradient(45deg,?rgba(0,?0,?0,?.25)?25%,?transparent?0,?transparent?75%,?rgba(0,?0,?0,?.25)?0),
          ????linear-gradient(45deg,?rgba(0,?0,?0,?.25)?25%,?transparent?0,?transparent?75%,?rgba(0,?0,?0,?.25)?0);
          ??background-size:?30px?30px;
          ??background-position:?0?0,?15px?15px;
          棋盤

          折角

          • 關(guān)鍵實現(xiàn):線性漸變
          • 具體分析:150deg 是為了形成30度角,方便利用勾股定理測出各種長度,其他的靠你自己看了~ 地址
          折角

          到這里 background 屬性基本講完了,光看無用,多動手實踐吧。

          波點

          • 關(guān)鍵實現(xiàn):徑向漸變
          • 具體分析:利用徑向漸變實現(xiàn)一個個小圓點,按規(guī)律擺放即能生成波點 地址
          ??background:
          ????radial-gradient(tan?30%,?transparent?0),
          ????radial-gradient(tan?30%,?transparent?0);
          ??background-color:?#666;
          ??background-size:?30px?30px;
          ??background-position:?0?0,?15px?15px;
          波點

          切角

          • 關(guān)鍵實現(xiàn):clip-path、徑向漸變
          • 具體分析:一般來說多邊形的切角效果(其實還是不規(guī)則多邊形)用clip-path都可以輕松實現(xiàn),但是對于圓形的切角,使用徑向漸變是最好的選擇。但是如果有弧形的切角呢?radial-linear第一個參數(shù)指定漸變的起始點點(默認(rèn)為中心點),同時可指定漸變類型是橢圓還是圓;地址
          ??background:
          ????radial-gradient(circle?at?top?left,?transparent?15px,?blue?0)?top?left,
          ????radial-gradient(circle?at?top?right,?transparent?15px,?cyan?0)?top?right,
          ????radial-gradient(circle?at?bottom?right,?transparent?15px,?cyan?0)?bottom?right,
          ????radial-gradient(circle?at?bottom?left,?transparent?15px,?cyan?0)?bottom?left;
          ??background-size:?50%?50%;
          ??background-repeat:?no-repeat;
          切角

          餅圖

          • 關(guān)鍵實現(xiàn):錐形漸變
          • 具體分析:利用錐形漸變可以輕松實現(xiàn)多個扇區(qū),所以 svg 的方法權(quán)當(dāng)學(xué)習(xí)了一波 svg 用法吧。
          ??background:?conic-gradient(lightblue?30%,?yellowgreen?0,?yellowgreen?50%,?cyan?0);
          餅圖

          動畫 animation

          animation 屬性是 animation-name、animation-duration、 animation-timing-function、animation-delay、animation-iteration-count、animation-direction、animation-fill-mode、animation-play-state 屬性的一個簡寫屬性形式。

          • animation-name 指定動畫的名稱,可以逗號分割設(shè)置多個(以下皆可);
          • animation-duration 指定動畫運行的時間;
          • animation-delay 指定動畫執(zhí)行前的延時;
          • animation-timing-function 指定動畫執(zhí)行的速度函數(shù),如linearease(默認(rèn))、ease-in-out等,也可用貝塞爾函數(shù)cubic-bezier()
          • animation-iteration-count 指定動畫的運行的次數(shù),默認(rèn)為1,可以為Infinite無限次;
          • animation-direction 指定動畫是否反方向播放,normal 正常的順序,alternate 交替運行,reverse 反向運行,alternate-reverse 反向交替運行;
          • animation-fill-mode 設(shè)置CSS動畫在執(zhí)行之前和之后的樣式,none 不設(shè)置,forwards 保留最后一幀動畫的樣式,backwards 立即應(yīng)用第一個關(guān)鍵幀中定義的值,并在animation-delay期間保留此值,both 同時應(yīng)用forwardsbackwards的規(guī)則;
          • animation-play-state 定義一個動畫是否運行或者暫停,值為runningpaused

          回彈效果

          如何給動畫加上回彈效果呢?這里介紹一種最便利的方法:

          • 關(guān)鍵實現(xiàn):cubic-bezier(x1, y1, x2, y2)
          • 具體分析:利用貝塞爾曲線的第二個控制錨點大于 1 時的特性實現(xiàn)回彈
          回彈效果

          上圖圖橫軸為時間,縱軸為動畫進度。圖中貝塞爾曲線有兩個控制手柄,x1, y1 控制第一個錨點,x2, y2控制第二個錨點。其中 x1 、x2 不能大于/小于 1,但是y1, y2 可以。當(dāng) y2 大于 1 時,就會產(chǎn)生提前到達終點,然后超過終點,然后再返回終點的效果,像回彈一樣。地址

          ??animation:?bounce?3s?both?cubic-bezier(.7,?.1,?.3,?2);

          transition 屬性是 transition-property、transition-duration、transition-timing-function、transition-delay 的一個簡寫屬性。使用 transition 同樣可以實現(xiàn)回彈效果:地址

          p?{
          ??transform-origin:?1.4em?-.4em;
          ??transition:?transform?.5s?cubic-bezier(.25,?.1,?.3,?1.5);
          }

          input:not(:focus)?+?p?{
          ??transform:?scale(0);
          ??transition:?transform?300ms;?/*此處是為了縮小時重置transition-timing-function,不觸發(fā)回彈*/
          }

          會動的背景

          • 關(guān)鍵實現(xiàn):animationbackground-position
          • 具體分析:將動畫最后一幀的background-position設(shè)為100% 0%,動畫便會將背景位置從最初的0% 0%向最后的100% 0%過度:地址
          div?{
          ??width:?150px;?height:?150px;
          ??background:?url('http://c3.staticflickr.com/3/2671/3904743709_74bc76d5ac_b.jpg');
          ??background-size:?auto?100%;?
          ??animation:?panoramic?10s?linear?infinite?alternate;
          }
          div:hover?{
          ??animation-play-state:?paused;
          }

          @keyframes?panoramic?{
          ??to?{?background-position:?100%?0;?}
          }

          環(huán)形路徑移動的動畫

          • 關(guān)鍵實現(xiàn):animation transform-origin
          • 具體分析:設(shè)置旋轉(zhuǎn)容器的transform-origin為大圓容器中心點,同時利用兩個元素在向不同方向旋轉(zhuǎn)時旋轉(zhuǎn)角度互相抵消的原理,實現(xiàn)圖像沿環(huán)形路徑旋轉(zhuǎn)同時保持自身角度的不變。注意小圓距離大圓的距離由大圓的padding屬性控制,調(diào)整padding時需要調(diào)整小圓的旋轉(zhuǎn)原點transform-origin以保持環(huán)形路徑的正確:地址
          @keyframes?spin?{
          ??to?{?transform:?rotate(1turn);?}
          }
          .avatar?{
          ??animation:?spin?3s?linear?2s?infinite;
          ??transform-origin:?110px?110px;
          }
          .avatar?>?img?{
          ??animation:?inherit;
          ??animation-direction:?reverse;
          }
          環(huán)形路徑移動的動畫

          筆者推薦css文章

          其實現(xiàn)在社區(qū)已經(jīng)不乏介紹 css 技巧的好文,這里推薦幾篇我覺得寫的極好的css技巧文章(當(dāng)然可能大家也看過,很慚愧我其實現(xiàn)在也沒看完):

          • 不止于 CSS
          • 靈活運用CSS開發(fā)技巧
          • 你未必知道的49個CSS知識點
          • 你未必知道的CSS知識點(第二季)
          • 《CSS世界》中提到的實用技巧
          • 我寫CSS的常用套路
          • 50道CSS基礎(chǔ)面試題(附答案)
          • CSS 面試題總結(jié)

          總結(jié)

          總體來說,《css揭秘》這本書并沒有給我?guī)硖篌@喜,個人感覺不如閱讀《css世界》帶來的收獲多。當(dāng)然了,這本書屬于純技巧型的,并沒有講述很多原理知識,所以也不能苛責(zé)吧。有興趣的同學(xué)可以跟著我學(xué)習(xí)一波 css世界,相信肯定會有更大的收獲

          》》面試官都在用的題庫,快來看看《《


          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产婷婷婷婷 | 一级黄色A视频 | 日韩欧美三级免费 | 变态另类网站 | 五月天婷婷丁香蜜桃91 |