欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長資訊網
最全最豐富的資訊網站

超詳細!圖文講解Vue3的組合式API!

組合式API

  • 組合式api(Composition API)算是vue3對我們開發者來說非常有價值的一個api更新,我們先不關注具體語法,先對它有一個大的感知

1. composition vs options

  • options API開發出來的vue應用如左圖所示,它的特點是理解容易,因為各個選項都有固定的書寫位置,比如響應式數據就寫到data選擇中,操作方法就寫到methods配置項中等,應用大了之后,相信大家都遇到過來回上下找代碼的困境
  • composition API開發的vue應用如右圖所示,它的特點是特定功能相關的所有東西都放到一起維護,比如功能A相關的響應式數據,操作數據的方法等放到一起,這樣不管應用多大,都可以快讀定位到某個功能的所有相關代碼,維護方便,設置如果功能復雜,代碼量大,我們還可以進行邏輯拆分處理【推薦:vue視頻教程】
    超詳細!圖文講解Vue3的組合式API!
    超詳細!圖文講解Vue3的組合式API!
    特別注意:
  • 選項式api和組合式api倆種風格是并存的關系 并不是非此即彼

  • 需要大量的邏輯組合的場景,可以使用compition API進行增強

2. 案例對比

上面我們通過圖示簡單了解了一下vue3帶來的全新的api形式,下面我們通過一個具體的小案例更加深入的體會一下倆種api下的開發模式對比,我們先暫時忽略語法細節,只關注代碼編寫形式

2.1 理解需求

超詳細!圖文講解Vue3的組合式API!
倆個獨立的功能:

  • 通過點擊按鈕來控制p的顯示和隱藏

  • 通過點擊按鈕控制p內字體顏色的變化

2.2 vue2.x option Api版本

<template>   <div>     <!-- 功能一模板 -->     <button @click="show">顯示</button>     <button @click="hide">隱藏</button>     <div v-if="showDiv">一個被控制顯隱的div</div>   </div>   <div>     <!-- 功能二模板 -->     <button @click="changeRed">紅色</button>     <button @click="changeYellow">藍色</button>     <div :style="`color:${fontColor}`">一個被控制字體顏色的的div</div>   </div> </template>  <script> export default {   name: 'App',   data() {     return {       showDiv: true, // 功能一數據       fontColor: '' // 功能二數據     }   },   methods: {     // 功能一方法     show() {       this.showDiv = true     },     hide() {       this.showDiv = false     },     // 功能二方法     changeRed() {       this.fontColor = 'red'     },     changeYellow() {       this.fontColor = 'blue'     }   } } </script>

2.3 vue3.0 composition api版本

<template>   <div>     <!-- 功能一模板 -->     <button @click="show">顯示</button>     <button @click="hide">隱藏</button>     <div v-if="showDivFlag">一個被控制顯隱的div</div>   </div>   <div>     <!-- 功能二模板 -->     <button @click="changeRed">紅色</button>     <button @click="changeBlue">藍色</button>     <div :style="`color:${fontColor}`">一個被控制字體顏色的的div</div>   </div> </template>  <script> import { ref } from 'vue' export default {   name: 'App',   setup() {     // 功能一     const showDivFlag = ref(true)     function show() {       showDivFlag.value = true     }     function hide() {       showDivFlag.value = false     }     // 功能二      const fontColor = ref('')     function changeRed() {       fontColor.value = 'red'     }     function changeBlue() {       fontColor.value = 'blue'     }     return { showDivFlag, show, hide, fontColor, changeRed, changeBlue }   } } </script>

2.4 composition api版本優化

在這里可能會有疑惑,那我們現在是把功能相關的所有數據和行為放到一起維護了,如果應用很大功能很多的情況下,setup函數不會變得很大嗎?豈不是又會變得比較難維護,接下來我們就來拆解一下龐大的setup函數

<script>import { ref } from 'vue'function useShow() {   const showpFlag = ref(true)   function show() {     showpFlag.value = true   }   function hide() {     showpFlag.value = false   }   return { showpFlag, show, hide }}function useColor() {   const fontColor = ref('')   function changeRed() {     fontColor.value = 'red'   }   function changeBlue() {     fontColor.value = 'blue'   }   return { fontColor, changeRed, changeBlue }}export default {   name: 'App',   setup() {     // 功能一     const { showpFlag, show, hide } = useShow()     // 功能二     const { fontColor, changeRed, changeBlue } = useColor()     return { showpFlag, show, hide, fontColor, changeRed, changeBlue }   }}</script>

以上,我們通過定義功能函數,把倆個功能相關的代碼各自抽離到一個獨立的小函數中,然后通過在setUp函數中再把倆個小功能函數組合起來,這樣一來,我們既可以把setup函數變得清爽,又可以方便維護快速定位功能位置

到此我們沒有關注api細節,只是體會組合式api給到我們的好處,接下來我們就要深入到api細節,看看全新的api都該如何使用 ↓

3. setup入口函數

  1. setup 函數是一個新的組件選項,作為組件中組合式API 的起點(入口)
  2. setup 中不能使用 this, this 指向 undefined
  3. setup函數只會在組件初始化的時候執行一次
  4. setup函數在beforeCreate生命周期鉤子執行之前執行
export default {   setup () {     console.log('setup執行了')     console.log(this)   },   beforeCreate() {     console.log('beforeCreate執行了')     console.log(this)   }}

4. 響應式系統API

4.1 reactive 函數

  • 作用:reactive是一個函數,接收一個普通的對象傳入,把對象數據轉化為響應式對象并返回

使用步驟

  • 從vue框架中導入reactive函數

  • 在setup函數中調用reactive函數并將對象數據傳入

  • 在setup函數中把reactive函數調用完畢之后的返回值以對象的形式返回出去

代碼落地

<template>   <div>{{ state.name }}</div>   <div>{{ state.age }}</div>   <button @click="state.name = 'pink'">改值</button> </template>  <script> import { reactive } from 'vue' export default {   setup () {     const state = reactive({       name: 'cp',       age: 18     })     return {       state     }   } } </script>

4.2 ref 函數

  • 作用:ref是一個函數,接受一個簡單類型或者復雜類型的傳入并返回一個響應式且可變的 ref 對象

使用步驟

  • 從vue框架中導出ref函數

  • 在setup函數中調用ref函數并傳入數據(簡單類型或者復雜類型)

  • 在setup函數中把ref函數調用完畢的返回值以對象的形式返回出去

  • 注意:在setup函數中使用ref結果,需要通過.value 訪問,模板中使用不需要加.value

<template>   <div>{{ money }}</div>   <button @click="changeMondy">改值</button> </template>  <script> import { ref } from 'vue' export default {   setup() {     let money = ref(100)     console.log(money.value)     return {       money     }   } } </script>

總結說明:

  • ref 函數可以接收一個簡單類型的值,返回一個可改變的 ref 響應式對象,從而彌補reactive函數不支持簡單類型的問題

  • reactive和ref函數都可以提供響應式數據的轉換,具體什么時候需要使用哪個API社區還沒有最佳實踐,大家暫時可以使用自己熟練的API進行轉換

  • 推薦一種寫法:只有我們明確知道要轉換的對象內部的字段名稱我們才使用reactive,否則就一律使用ref,從而降低在語法選擇上的心智負擔

4.3 toRefs 函數

  • 場景: 經過reactive函數處理之后返回的對象,如果給這個對象解構或者展開,會讓數據丟失響應式的能力,為了解決這個問題需要引入toRefs函數,使用 toRefs函數 可以保證該對象展開的每個屬性都是響應式的

4.3.1 問題復現

還是之前的案例,如果我們想在模板中省略到state,直接書寫name和age,你可能會想到,那我在return出去的時候把state中的屬性解構出來不就好了

修改前

<template>   <div>{{ state.name }}</div>   <div>{{ state.age }}</div>   <button @click="state.name = 'pink'">改值</button> </template>  <script> import { reactive } from 'vue' export default {   setup() {     const state = reactive({       name: 'cp',       age: 18     })     return {       state     }   } } </script>

解構修改后

<template>   <div>{{ name }}</div>   <div>{{ age }}</div>   <button @click="name = 'pink'">改值</button> </template> <script> import { reactive } from 'vue' export default {   setup() {     const state = reactive({       name: 'cp',       age: 18     })     return {       ...state     }   } } </script>
  • 點擊改值按鈕,發現視圖已經不發生變化了,這就是我們所說的,如果解構reactive的返回值,將破壞調用響應式特性,就需要我們使用toRefs方法進行處理了

4.3.2 toRefs包裹處理

<template>   <div>{{ name }}</div>   <div>{{ age }}</div>   <button @click="name = 'pink'">改值</button> </template>  <script> import { reactive,toRefs } from 'vue' export default {   setup() {     const state = reactive({       name: 'cp',       age: 18     })     return {       ...toRefs(state)     }   } } </script>

4.4 computed

  • 在setup函數中使用計算屬性函數

作用:根據現有響應式數據經過一定的計算得到全新的數據

使用步驟

  • 從vue框架中導入computed 函數

  • 在setup函數中執行computed函數,并傳入一個函數,在函數中定義計算公式

  • 把computed函數調用完的執行結果放到setup的return值對象中

<template>   {{ list }}   {{ filterList }}  <button @click="changeList">change list</button></template><script>import { computed, ref } from 'vue'export default {   setup() {     const list = ref([1, 2, 3, 4, 5])     // 輸入大于3的數字     const filterList = computed(() => {       return list.value.filter(item => item > 3)     })     // 修改list的函數     function changeList() {       list.value.push(6, 7, 8)     }     return {       list,       filterList,       changeList    }   }}</script>

4.5 watch 偵聽器

  • 在setup函數中偵聽器的使用

作用:基于響應式數據的變化執行回調邏輯,和vue2中的watch的功能完全一致

  • 普通監聽

  • 立即執行

  • 深度監聽

使用步驟

  • 從vue框架中導入watch函數

  • 在setup函數中執行watch函數開啟對響應式數據的監聽

  • watch函數接收三個常規參數

    1. 第一個參數為函數,返回你要監聽變化的響應式數據
    2. 第二個參數為響應式數據變化之后要執行的回調函數
    3. 第三個參數為一個對象,在里面配置是否開啟立刻執行或者深度監聽

4.5.1 普通監聽

<template>   {{ age }}  <button @click="age++">change age</button></template><script>import { ref, watch } from 'vue'export default {   setup() {     const age = ref(18)     watch(() => {       // 返回你想要監聽的響應式屬性(ref產生的對象必須加.value)       return age.value    }, () => {       // 數據變化之后的回調函數       console.log('age發生了變化')     })     return {       age    }   }}</script>

4.5.2 開啟立刻執行

watch的效果默認狀態下,只有監聽的數據發生變化才會執行回調,如果你需要在一上來的時候就立刻執行一次,需要配置一下immediate屬性

<template>   {{ age }}  <button @click="age++">change age</button></template><script>import { ref, watch } from 'vue'export default {   setup() {     const age = ref(18)     watch(() => {       // 返回你想要監聽的響應式屬性(ref產生的對象必須加.value)       return age.value    }, () => {       // 數據變化之后的回調函數       console.log('age發生了變化')     },{ immediate: true})     return {       age    }   }}</script>

4.5.3 開啟深度監聽

當我們監聽的數據是一個對象的時候,默認狀態下,對象內部的屬性發生變化是不會引起回調函數執行的,如果想讓對象下面所有屬性都能得到監聽,需要開啟deep配置

<template>   {{ name }}   {{ info.age }}  <button @click="name = 'pink'">change name</button>   <button @click="info.age++">change age</button></template><script>import { reactive, toRefs, watch } from 'vue'export default {   setup() {     const state = reactive({       name: 'cp',       info: {         age: 18       }     })     watch(() => {       return state    }, () => {       // 數據變化之后的回調函數       console.log('age發生了變化')     }, {       deep: true     })     return {       ...toRefs(state)     }   }}</script>

4.5.4 更好的做法

使用watch的時候,盡量詳細的表明你到底要監聽哪個屬性,避免使用deep引起的性能問題,比如我僅僅只是想在state對象的age屬性變化的時候執行回調,可以這么寫

<template>   {{ name }}   {{ info.age }}  <button @click="name = 'pink'">change name</button>   <button @click="info.age++">change age</button></template><script>import { reactive, toRefs, watch } from 'vue'export default {   setup() {     const state = reactive({       name: 'cp',       info: {         age: 18       }     })     watch(() => {       // 詳細的告知你要監聽誰       return state.info.age    }, () => {       // 數據變化之后的回調函數       console.log('age發生了變化')     })     return {       ...toRefs(state)     }   }}</script>

5. 生命周期函數

使用步驟

  • 先從vue中導入以on打頭的生命周期鉤子函數

  • 在setup函數中調用生命周期函數并傳入回調函數

  • 生命周期鉤子函數可以調用多次

<template>   <div>生命周期函數</div> </template>  <script> import { onMounted } from 'vue' export default {   setup() {     // 時機成熟 回調函數自動執行     onMounted(() => {       console.log('mouted生命周期執行了')     })      onMounted(() => {       console.log('mouted生命周期函數又執行了')     })   } } </script>
選項式API 組合式API
beforeCreate 不需要(直接寫到setup函數中)
created 不需要(直接寫到setup函數中)
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeDestroyed onBeforeUnmount
destroyed onUnmounted

6. 父子通信

在vue3的組合式API中,父傳子的基礎套路完全一樣,基礎思想依舊為:父傳子是通過prop進行傳入,子傳父通過調用自定義事件完成

實現步驟

  • setup函數提供倆個參數,第一個參數為props,第二個參數為一個對象context

  • props為一個對象,內部包含了父組件傳遞過來的所有prop數據,context對象包含了attrs,slots, emit屬性,其中的emit可以觸發自定義事件的執行從而完成子傳父

代碼落地
app.vue

<template>   <son :name="name" @get-msg="getMsg"></son></template><script>import { ref } from 'vue'import Son from './components/son'export default {   components: {     Son  },   setup() {     const name = ref('cp')     function getMsg(msg) {       console.log(msg)     }     return {       name,       getMsg    }   }}</script>

components/son.vue

<template>   <div>     {{name}}     <button @click="setMsgToSon">set</button>   </div> </template>  <script> export default {   props: {     name: {       type: String     }   },   emits: ['get-msg'], // 聲明當前組件觸發的自定義事件   setup(props,{emit}) {     console.log(props.name)     function setMsgToSon(){       emit('get-msg','這是一條來自子組件的msg信息')     }     return {       setMsgToSon     }   } } </script>

7. provide 和 inject

通常我們使用props進行父子之間的數據傳遞,但是如果組件嵌套層級較深,一層一層往下傳遞將會變的非常繁瑣,有沒有一種手段可以把這個過程簡化一下呢,有的,就是我們馬上要學習的provide 和 inject,它們配合起來可以方便的完成跨層傳遞數據

超詳細!圖文講解Vue3的組合式API!

7.1 基礎使用

  • 在setup函數中使用provide和inject的基礎用法

來個需求: 爺組件中有一份數據 傳遞給孫組件直接使用
超詳細!圖文講解Vue3的組合式API!

實現步驟:

  • 頂層組件在setup方法中使用provide函數提供數據

  • 任何底層組件在setup方法中使用inject函數獲取數據

代碼落地
爺爺組件 - app.vue

<template>   <father></father></template><script>import Father from '@/components/Father'import { provide } from 'vue'export default {   components: {     Father  },   setup() {     let name = '柴柴老師'     // 使用provide配置項注入數據 key - value     provide('name', name)   }}</script>

孫組件 - components/Son.vue

<template>   我是子組件   {{ name }}</template><script>import { inject } from 'vue'export default {   setup() {     const name = inject('name')     return {       name    }   }}</script>

事實上,只要是后代組件,都可以方便的獲取頂層組件提供的數據

7.2 傳遞響應式數據

provide默認情況下傳遞的數據不是響應式的,也就是如果對provide提供的數據進行修改,并不能響應式的影響到底層組件使用數據的地方,如果想要傳遞響應數據也非常簡單,只需要將傳遞的數據使用ref或者reactive生成即可

  • 通過provide/inject傳遞響應式數據
    app.vue
<template>   <father></father>   <button @click="changeName">change name</button></template><script>import Father from '@/components/Father'import { provide, ref } from 'vue'export default {   components: {     Father  },   setup() {     // 使用ref轉換成響應式再傳遞     let name = ref('柴柴老師')     function changeName(){       name.value = 'pink'     }     provide('name', name)     return {       changeName    }   }}</script>

8. 模板中 ref 的使用

在模板中使用ref,我們都很清楚,它一般有三種使用場景

  • ref + 普通dom標簽 獲取真實dom對象

  • ref + 組件標簽 獲取組件實例對象

  • ref + v-for 獲取由dom對象(實例對象)組成的數組 (不經常使用)

  • 在setup函數中使用ref獲取真實dom獲取組件實例的方法

實現步驟

  • 使用ref函數傳入null創建 ref對象 => const hRef = ref(null)

  • 模板中通過定義ref屬性等于1中創建的ref對象名稱建立關聯 => <h1 ref="hRef"></h1>

  • 使用 =>hRef.value

代碼落地
components/RefComponent.vue

<template>   我是一個普通的組件</template>

app.vue

<template>   <h1 ref="h1Ref">我是普通dom標簽</h1>   <ref-comoonent ref="comRef"></ref-comoonent></template><script>import { onMounted, ref } from 'vue'import RefComoonent from '@/components/RefComponent'export default {   components: {     RefComoonent  },   setup() {     const h1Ref = ref(null)     const comRef = ref(null)     onMounted(() => {       console.log(h1Ref.value)       console.log(comRef.value)     })     // 必須return     return {       h1Ref,       comRef    }   }}</script>

9. 來個案例吧 – Todos

核心功能

  • 渲染列表數據 v-for

  • 點擊刪除當前列表 splice + index

  • 回車添加新項目 @keyup.enter=“addTodo” list.unshift

  • 選擇狀態切換 v-model

  • 多選和取消多選 計算屬性的set和get

  • 未完成任務數量統計 computed

<template>   <section class="todoapp">     <!-- 頭部輸入框區域 -->     <header class="header">       <h1>todos</h1>       <input         class="new-todo"         placeholder="請輸入要完成的任務"         autofocus         v-model="curTask"         @keyup.enter="add"       />     </header>     <section class="main">       <!-- 全選切換input -->       <input id="toggle-all" class="toggle-all" type="checkbox" v-model="isAll"/>       <label for="toggle-all">標記所有已經完成</label>       <ul class="todo-list">         <!-- 任務列表 -->         <li v-for="(item, index) in list" :key="item.id">           <p class="view">             <!-- 雙向綁定 flag -->             <input class="toggle" type="checkbox" v-model="item.flag" />             <label>{{ item.name }}</label>             <!-- 刪除按鈕 -->             <button class="destroy" @click="del(index)"></button>           </p>         </li>       </ul>     </section>     <footer class="footer">       <span class="todo-count"> 還未完成的任務有:<strong>{{count}}</strong>項 </span>     </footer>   </section></template><script>import { computed, ref } from 'vue'export default {   setup() {     const list = ref([       { id: 1, name: '吃飯', flag: false },       { id: 2, name: '睡覺', flag: false },       { id: 3, name: '打豆豆', flag: true }     ])      // 刪除函數     function del(index) {       // index 要刪除項的下標值       // splice       list.value.splice(index, 1)     }      const curTask = ref('')     function add() {       // 添加邏輯       list.value.unshift({         id: new Date(),         name: curTask.value,         flag: false       })       curTask.value = ''     }      // 全選取消全選     // {name:"cp"}  console.log(info.name)  info.name = 'pink'     const isAll = computed({       // 獲取isAll數據的時候會執行get函數       get() {         // 當list列表中所有項的flag屬性都為true 就為true         // every         return list.value.every(item => item.flag === true)       },       set(val) {         // 拿到isAll最新值 遍歷一下list 把里面的flag屬性設置為最新值         list.value.forEach(item => {           item.flag = val        })       }     })      // 計算未完成的任務     const count = computed(()=>{       return  list.value.filter(item=>item.flag === false).length    })         return {       list,       del,       curTask,       add,       isAll,       count    }   }}</script><style>html, body {   margin: 0;   padding: 0;}button {   margin: 0;   padding: 0;   border: 0;   background: none;   font-size: 100%;   vertical-align: baseline;   font-family: inherit;   font-weight: inherit;   color: inherit;   -webkit-appearance: none;   appearance: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale;}body {   font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;   line-height: 1.4em;   background: #f5f5f5;   color: #111111;   min-width: 230px;   max-width: 550px;   margin: 0 auto;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale;   font-weight: 300;}:focus {   outline: 0;}.hidden {   display: none;}.todoapp {   background: #fff;   margin: 130px 0 40px 0;   position: relative;   box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);}.todoapp input::-webkit-input-placeholder {   font-style: italic;   font-weight: 300;   color: rgba(0, 0, 0, 0.4);}.todoapp input::-moz-placeholder {   font-style: italic;   font-weight: 300;   color: rgba(0, 0, 0, 0.4);}.todoapp input::input-placeholder {   font-style: italic;   font-weight: 300;   color: rgba(0, 0, 0, 0.4);}.todoapp h1 {   position: absolute;   top: -140px;   width: 100%;   font-size: 80px;   font-weight: 200;   text-align: center;   color: #b83f45;   -webkit-text-rendering: optimizeLegibility;   -moz-text-rendering: optimizeLegibility;   text-rendering: optimizeLegibility;}.new-todo, .edit {   position: relative;   margin: 0;   width: 100%;   font-size: 24px;   font-family: inherit;   font-weight: inherit;   line-height: 1.4em;   color: inherit;   padding: 6px;   border: 1px solid #999;   box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);   box-sizing: border-box;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale;}.new-todo {   padding: 16px 16px 16px 60px;   border: none;   background: rgba(0, 0, 0, 0.003);   box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);}.main {   position: relative;   z-index: 2;   border-top: 1px solid #e6e6e6;}.toggle-all {   width: 1px;   height: 1px;   border: none; /* Mobile Safari */   opacity: 0;   position: absolute;   right: 100%;   bottom: 100%;}.toggle-all + label {   width: 60px;   height: 34px;   font-size: 0;   position: absolute;   top: -52px;   left: -13px;   -webkit-transform: rotate(90deg);   transform: rotate(90deg);}.toggle-all + label:before {   content: "?";   font-size: 22px;   color: #e6e6e6;   padding: 10px 27px 10px 27px;}.toggle-all:checked + label:before {   color: #737373;}.todo-list {   margin: 0;   padding: 0;   list-style: none;}.todo-list li {   position: relative;   font-size: 24px;   border-bottom: 1px solid #ededed;}.todo-list li:last-child {   border-bottom: none;}.todo-list li.editing {   border-bottom: none;   padding: 0;}.todo-list li.editing .edit {   display: block;   width: calc(100% - 43px);   padding: 12px 16px;   margin: 0 0 0 43px;}.todo-list li.editing .view {   display: none;}.todo-list li .toggle {   text-align: center;   width: 40px;   /* auto, since non-WebKit browsers doesn't support input styling */   height: auto;   position: absolute;   top: 0;   bottom: 0;   margin: auto 0;   border: none; /* Mobile Safari */   -webkit-appearance: none;   appearance: none;}.todo-list li .toggle {   opacity: 0;}.todo-list li .toggle + label {   background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");   background-repeat: no-repeat;   background-position: center left;}.todo-list li .toggle:checked + label {   background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E");}.todo-list li label {   word-break: break-all;   padding: 15px 15px 15px 60px;   display: block;   line-height: 1.2;   transition: color 0.4s;   font-weight: 400;   color: #4d4d4d;}.todo-list li.completed label {   color: #cdcdcd;   text-decoration: line-through;}.todo-list li .destroy {   display: none;   position: absolute;   top: 0;   right: 10px;   bottom: 0;   width: 40px;   height: 40px;   margin: auto 0;   font-size: 30px;   color: #cc9a9a;   margin-bottom: 11px;   transition: color 0.2s ease-out;}.todo-list li .destroy:hover {   color: #af5b5e;}.todo-list li .destroy:after {   content: "×";}.todo-list li:hover .destroy {   display: block;}.todo-list li .edit {   display: none;}.todo-list li.editing:last-child {   margin-bottom: -1px;}.footer {   padding: 10px 15px;   height: 20px;   text-align: center;   font-size: 15px;   border-top: 1px solid #e6e6e6;}.footer:before {   content: "";   position: absolute;   right: 0;   bottom: 0;   left: 0;   height: 50px;   overflow: hidden;   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6,     0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6,     0 17px 2px -6px rgba(0, 0, 0, 0.2);}.todo-count {   float: left;   text-align: left;}.todo-count strong {   font-weight: 300;}.filters {   margin: 0;   padding: 0;   list-style: none;   position: absolute;   right: 0;   left: 0;}.filters li {   display: inline;}.filters li a {   color: inherit;   margin: 3px;   padding: 3px 7px;   text-decoration: none;   border: 1px solid transparent;   border-radius: 3px;}.filters li a:hover {   border-color: rgba(175, 47, 47, 0.1);}.filters li a.selected {   border-color: rgba(175, 47, 47, 0.2);}.clear-completed, html .clear-completed:active {   float: right;   position: relative;   line-height: 20px;   text-decoration: none;   cursor: pointer;}.clear-completed:hover {   text-decoration: underline;}.info {   margin: 65px auto 0;   color: #4d4d4d;   font-size: 11px;   text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);   text-align: center;}.info p {   line-height: 1;}.info a {   color: inherit;   text-decoration: none;   font-weight: 400;}.info a:hover {   text-decoration: underline;}/* 	Hack to remove background from Mobile Safari. 	Can't use it globally since it destroys checkboxes in Firefox */@media screen and (-webkit-min-device-pixel-ratio: 0) {   .toggle-all,   .todo-list li .toggle {     background: none;   }    .todo-list li .toggle {     height: 40px;   }}@media (max-width: 430px) {   .footer {     height: 50px;   }    .filters {     bottom: 10px;   }}</style>

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
主站蜘蛛池模板: 国产操| 成人免费在线观看网站 | 亚洲天堂2021av | 久草视频精品在线 | 国产亚洲精品久久久 | 在线观看国产区 | 亚洲乱熟| 亚洲高清影院 | 免费在线看a | 婷婷开心激情网 | 超碰青青操 | 一区二区三区四区中文字幕 | 国产wwwwwww| 中文字幕资源在线 | 伊人久久亚洲综合 | 91在线观看视频网站 | 国产一区二区黄色 | 婷婷色亚洲 | 字幕专区码中文欧美在线 | 伊人七七 | 高潮久久久久久久久 | 中文字幕天堂在线 | 丁香花免费高清完整在线播放 | 在线不卡免费视频 | 久久久av免费 | 国产精品国产三级欧美 | 国产精品久久人人做人人爽 | 亚洲成人精品一区二区三区 | 91久久久久久久久久久久 | 色中色av| 五月婷婷av | 久久国产综合 | 欧美视频在线播放 | 337p亚洲欧洲色噜噜噜 | 日韩欧美小视频 | 国产第一页屁屁影院 | 色呦呦国产 | 久久99操| 40到50岁中老年妇女毛片 | 咪咪色影院 | 91久久超碰| 亚洲高清在线视频 | 91日本在线观看 | 免费啪啪网址 | av视| 亚洲综合在线五月天 | 处破大全欧美破苞二十三 | 久久毛片视频 | 人操人操 | 国产黄av| 欧美一区亚洲一区 | 五月婷婷社区 | 天堂伊人| 成人黄色在线看 | 夜夜爽天天爽 | 美女精品一区二区 | 日韩精品免费看 | 欧美日韩99| 亚州中文av | 又粗又色又爽一区二区三区 | 欧美一级乱黄 | 国产男人搡女人免费视频 | 日批视频| 国产视频二区 | 国产九色 | 色窝av| 国产在线不卡av | 国产精品久久久一区 | 在线观看免费亚洲 | 国产一级特黄a高潮片 | 视频丨9l丨白浆 | 99在线免费观看 | 一道久久 | 成人黄色免费视频 | 调教丰满的已婚少妇在线观看 | 九色福利 | a级免费毛片| 成人小视频在线观看 | 偷偷操不一样的99 | 久久久精品视频免费 | 精品黄网 | 中文字幕成人在线观看 | 久久99网 | 亚洲精品在线观看中文字幕 | www视频在线观看网站 | 午夜寂寞视频 | 国产精品999 | 国产精品国产精品国产专区不蜜 | 中文在线永久免费观看 | 成人在线观看黄色 | 成人午夜av | www.三级 | av最新| 久久精品久 | 特级西西444www大精品视频 | 亚洲激情社区 | 11一12免费毛片 | 色多多在线视频 | 欧美日韩少妇精品 | 在线观看亚洲黄色 | 色噜噜狠狠一区二区三区 | av一二三区| 免费的黄色小视频 | 亚欧在线观看视频 | 88国产精品视频一区二区三区 | 婷婷精品在线 | 精品黑人一区二区三区国语馆 | 亚洲一区二区福利 | 天堂视频在线 | 国产情侣免费在线 | 欧美偷拍另类 | 精品久久久久久久久久久久 | 一级黄色免费大片 | 日日夜夜撸撸 | 亚洲aⅴ在线观看 | 日本顶级大片 | 日本不卡视频在线播放 | 有码视频在线观看 | 精品小视频在线观看 | 成人免费视频观看 | 高清亚洲| 男人的天堂一区二区 | 国产50页| 麻豆成人91精品二区三区 | 天天干天天插天天操 | 91成人短视频 | 免费日批网站 | 青草视频污 | 深爱综合网 | 一本一道波多野结衣一区二区 | v天堂在线 | 亚洲精品网站在线 | 日日草夜夜草 | 男女网站视频 | 一级少妇精品久久久久久久 | 激情天堂网 | 婷婷综合视频 | 国产伦子伦对白在线播放观看 | 国产高潮呻吟av | 九九久久国产精品 | 高清亚洲 | xx99小雪| 99香蕉视频| 久久99精品一区二区三区 | 岛国精品一区二区三区 | 日韩免费在线视频观看 | 一级日韩片 | 日韩一级片免费在线观看 | 国产传媒毛片精品视频第一次 | 在线中文天堂 | 男人天堂网在线观看 | 国产群p| 国产欧美a | 国产精品一区在线 | 国产区精品| 国产在线观看黄 | 一级一级国产片 | 国产福利小视频在线观看 | 老熟妇毛片 | 亚洲午夜久久久久久久国产 | 日韩日日日 | 欧美成人激情视频 | 影音先锋成人 | 日本少妇激情 | 欧美高清视频一区 | 日韩欧美高清视频 | 9.1成人免费看片 | 在线精品视频一区 | 国产又黄又粗又猛又爽 | 黄色av网址在线观看 | 欧美精品在线免费 | 成人国产精品入麻豆 | 色人综合| 午夜在线国产 | 真实的国产乱xxxx在线 | 黑人性生活视频 | 玖操 | 亚洲欧美亚洲 | 日韩在线观看视频网站 | 圆产精品久久久久久久久久久 | 国产在线一级片 | 2023国产精品 | 奇米第四色777 | 高清一二三区 | 黄瓜视频在线观看污 | 久久人人爽人人爽人人片亚洲 | 日本在线成人 | 青草伊人网 | 激情文学中文字幕 | 操操综合网 | 久久国产精品一区二区三区 | 欧美激情999 | 国产性xxx | 亚洲精品视频免费 | 欧美一区日韩一区 | 免费中文字幕日韩欧美 | 久草成人在线视频 | 中国1级毛片 | 亚洲精品一区二区三 | 国产在线色视频 | 中国特黄毛片 | 可以免费看的av网站 | 综合伊人 | 91午夜理伦私人影院 | 亚洲产国偷v产偷自拍网址 亚洲成色777777女色窝 | 久久久久在线观看 | 看片国产 | 伊人久久一区二区 | 婷婷在线综合 | 欧美一区二区在线视频 | 国产成人免费网站 | 91美女网站| 天天夜夜骑 | 久操国产| 一本到视频 | 日日干日日草 | av青青草| 亚洲综合1区 | jizz国产在线 | 最新午夜综合福利视频 | 一级片观看 | 欧美日韩亚 | 欧美亚洲天堂网 | 亚洲视频区 | 亚洲午夜18毛片在线看 | 麻豆综合 | 狠狠干天天干 | 91久久精 | 91极品美女 | 欧美高清一区二区 | 欧美视频h | 亚洲精品一区在线观看 | 九九热九九热 | 99精品国自产在线 | 乱子伦一区二区三区 | 欧美亚洲综合网 | 中文字幕少妇在线三级hd | 欧美无遮挡高潮床戏 | 91无打码 | 黄色福利社 | 精品亚洲一区二区三区 | 中文字幕第一区 | 99热在线只有精品 | 9999久久久久 | 日韩av成人在线 | 日本免费高清 | 伊人视屏 | 国产又粗又大又长 | 免费高清毛片 | 91桃色在线观看 | 天天干天天干 | 男人操女人免费网站 | av资源网在线观看 | 欧美成人激情 | 少妇一级淫片免费放 | 亚洲激情视频网 | 亚洲三级影院 | 视频一区亚洲 | 免费在线观看黄色av | 乳揉みま痴汉4在线播放 | 国产精品久久婷婷六月丁香 | 亚洲作爱 | 午夜怡红院 | 亚洲制服另类 | 国产老头户外野战xxxxx | 欧美一区二区三区激情 | 国产精品美女www | 婷婷色五| 美女免费毛片 | av九九九 | 日日干天天干 | 中文在线亚洲 | 日韩1页 | 国产超碰人人 | 狠狠干2017 | 午夜激情福利 | 色婷婷18 | 久久99国产视频 | 欧美资源在线观看 | 好男人www在线视频 亚洲视频一二 | 亚洲va视频 | 国产一区二区三区四区在线观看 | 国产99对白在线播放 | 国产精品一区二区在线免费观看 | 性av网 | 亚洲乱码国产乱码精品精 | 好吊妞视频一区二区三区 | 最新91视频 | 奇米网久久 | 国产一区,二区 | 国产三级自拍视频 | 黑人巨大精品欧美一区免费视频 | 91毛片网站 | 国产探花一区二区 | 国产免费福利 | 色偷偷欧美| 日韩国产在线观看 | 在线a亚洲视频播放在线观看 | 日日干夜夜撸 | avtt亚洲天堂 | 亚洲欧美另类激情 | 99re中文字幕| 国产精品自拍99 | 国产视频一二三区 | av大片在线| 色久网| 天天插天天爽 | 国产区一区二区 | 亚洲欧洲日本在线 | 成人久久久久久 | 高清久久久| 黄色片网站免费观看 | 91国内视频 | 日韩av一二区 | 欧美激情一区二区三区 | 国语av | 男人天堂2014 | 亚洲一区在线观 | 99国产精品99久久久久久 | 欧美一区二区三区不卡视频 | 超碰91在线 | 尤物影院在线观看 | 波多野结衣视频观看 | 国产精品久久久久久久久借妻 | 亚洲精品永久免费 | 国产精品视频网址 | 91久久综合亚洲鲁鲁五月天 | 狠狠干狠狠爱 | 亚洲插插 | 色就色欧美 | 97香蕉超级碰碰久久免费软件 | 国产在线一二区 | 欧美日韩在线观看一区 | 奇米第四色777 | 亚欧日韩av| 欧洲精品视频在线观看 | 日韩精品欧美激情 | 久久奇米 | 精品国产一区二区三区久久久蜜臀 | 黄瓜视频在线观看污 | 日韩国产成人在线 | 亚洲欧洲免费 | 操久久 | 国产不卡av在线 | 久久网免费视频 | 99精品在免费线偷拍 | 亚洲精品乱码久久久久久蜜桃动漫 | 最近免费中文字幕中文高清6 | 国产免费美女 | 亚洲一区二区三区国产精华液 | 日本在线播放一区 | 欧美日韩亚洲国产另类 | 亚洲xxxx天美 | av国产成人| 手机在线看片国产 | 亚洲欧美在线一区二区 | 欧美区一区二区三 | 日本三级视频在线播放 | 日本动漫艳母 | 瑟瑟综合 | 国内外毛片 | 青青草视频播放器 | 亚洲草逼视频 | 中文字幕不卡视频 | 日韩精品视频在线看 | 国产高清av | 欧美xxxⅹ性欧美大片 | 污片视频在线观看 | 天天天色综合 | 国产中出视频 | ww欧美 | 密臀久久 | 欧美日韩视频 | 一本色道久久88综合亚洲精品ⅰ | 午夜精品视频在线 | 色www国产亚洲阿娇 韩国中文字幕hd久久精品 | 国产第十页 | 在线超碰av| 日韩欧美成 | 亚洲狠狠婷婷综合久久久久图片 | 亚洲乱码一区二区三区三上悠亚 | 2019狠狠干 | 男人添女人荫蒂国产 | 国产精品99视频 | 三级黄色免费片 | 91自啪 | 国产理论视频在线观看 | 黄色综合 | 91午夜交换视频 | 五月激情六月 | 手机看片欧美 | 国产免费激情视频 | 亚洲精品国产精品国自产网站按摩 | 大桥未久av一区二区三区中文 | 久久波多野结衣 | 精品国产999久久久免费 | 日本精品成人 | 国产福利啪啪 | 日韩美av | 日韩欧美午夜 | 日本精品一二三 | 亚洲在线网站 | 欧美一级免费片 | 免费在线观看视频 | 亚洲精品乱码久久久久久金桔影视 | 91精品国产色综合久久不卡粉嫩 | 国产精品乱码久久久 | 国模视频一区 | 亚洲精品乱码久久久久久日本蜜臀 | 五月天激情开心网 | 综合国产第二页 | 永久免费看片女女 | 2024国产精品 | 麻豆回家视频区一区二 | 亚洲射射射 | 一级黄色免费看 | 国产精品国产三级国产普通话对白 | 人人爱人人射 | 最近日韩免费视频 | 国产在线一级 | 亚洲永久精品国产 | 精品www | 亚洲精品性 | 国产特级片 | 中文字幕一区二区三区四区五区 | 日韩狠狠操 | 香蕉免费毛片视频 | 成人自拍偷拍 | 欧美成人综合一区 | 亚洲精品视频在线观看免费 | 精品一区二区国产 | 欧美日韩不卡合集视频 | 少妇一级淫片免费放2 | 国产在线一级片 | 国产113页| 国产一级一片免费播放 | 中文字幕丰满人伦在线 | av中亚| 理论片高清免费理论片毛毛片 | 欧美 中文字幕 | 免费黄色网址在线观看 | av一区二区在线播放 | 蜜桃色一区二区三区 | 综合99| 国产剧情久久 | 黑人干亚洲女人 | 日韩av在线资源 | 中文字幕日韩精品视频一区视频二区 | 精品98 | 西西午夜视频 | 一级黄色激情片 | 97成人资源 | 男人天堂网址 | 伊人久久大香线蕉 | 伊人av综合网 | 午夜精品久久久久久久99热黄桃 | 国产思思 | a级片在线观看 | 丁香六月欧美 | 九九自拍视频 | 色伊人久久 | 国产伦理av| 成人黄色一级片 | 欧州一区二区 | 久久99网 | 亚洲爱视频 | 波多一区| 野外一级片 | 国产亚洲欧美久久久久 | 国产精品亚洲欧美在线播放 | 亚洲一a | 久久成人亚洲 | 日韩在线精品视频 | 成人午夜又粗又硬又大 | 91精品一本久道久久丁香狠狠躁 | 夜夜草 | 黄色a一级视频 | 超碰成人av| 国产精品一区二区毛片 | 亚洲综合套图 | 国产永久免费视频 | 91综合视频 | 亚洲午夜久久久 | 久久一级片免费看 | 男人舔女人下部高潮全视频 | 最新中文字幕在线视频 | 天天射夜夜爽 | 亚洲五月婷 | 在线视频 中文字幕 | 久久久888 | 狠狠操在线 | 精品视频免费久久久看 | 激情欧美成人 | 91视频污在线观看 | 黄色成人在线视频 | 日本中文在线播放 | 视频福利在线 | 91久久久久久久久久久久久 | 免费黄色短片 | 久久免费成人 | 综合久久91 | 国产精品久久久久久久天堂 | 91蝌蚪91密月 | 欧美a级片视频 | 好骚综合av | 日韩性av | 国产精品一区二区av | 伦理久久 | 男人av的天堂 | 久久免费少妇高潮99精品 | 重口味av | 日韩网| 香港三日本三级少妇66 | 国产精品二区视频 | 亚洲人掀裙打屁股网站 | 国内性爱视频 | 香蕉视频污在线观看 | 日韩videos | 悟空影视大全免费高清观看在线 | 中文字幕亚洲图片 | 爱的天堂| 色吧av| 在线一区| 精品在线免费视频 | 亚洲国产高清视频在线观看 | 久久深夜| www.日本在线 | 日本视频网站在线观看 | 999免费视频 | 久久色在线观看 | 91未成人在线观看喷潮 | 在线观看国产一区 | 夜夜狠狠 | 激情成人综合网 | 亚洲免费中文字幕 | 91精品国产综合久久香蕉 | 国产手机视频在线 | 老汉色av | 日日夜夜操操操 | www.久久精品 | 亚洲黄色片视频 | 开心色站| 3d动漫啪啪精品一区二区中文字幕 | 国产小视频a| 国产午夜三级一区二区三 | 毛片在线免费观看视频 | 日韩黄色免费 | 欧美日韩看片 | 福利视频91 | 欧美视频色 | 亚洲视频免费在线观看 | 日韩在线免费av | 亚洲欧美日韩中文字幕在线观看 | 91美女视频网站 | 亚洲少妇自拍 | 多男调教一女折磨高潮高h www久久久com | 香蕉视频在线观看黄 | 亚洲第一成年免费网站 | 亚洲视频在线观看一区二区 | 一区二区视屏 | 欧美在线视频免费观看 | 日皮视频在线观看 | 依人久久| 久久午夜视频 | 日韩免费小视频 | 四虎久久| 偷拍精品一区二区三区 | 亚洲女优视频 | 亚洲五月综合 | 九九九热视频 | 欧美在线不卡视频 | 国产精久久 | 亚洲av成人精品毛片 | 欧美黄色大片网站 | 自拍偷拍亚洲区 | 久久久www成人免费毛片 | 成年人黄色录像 | 欧美不卡一区二区 | 伊人久久综合影院 | 国产精品午夜视频 | 成人高清网站 | 亚洲资源在线播放 | 尤物网站在线观看 | www网站在线观看 | 黄瓜视频色 | 日本精品视频在线播放 | 91一区二区在线 | 一级大片免费观看 | 精产国产伦理一二三区 | 中文天堂在线视频 | 久久成人激情 | 天天天操| 日日爽夜夜 | a级在线播放 | 日韩欧美一 | 欧美大波大乳巨大乳 | 久久官网| 涩涩视频在线播放 | 午夜免费成人 | 欧美性天堂| 男人的天堂网av | 日韩黄网站 | 高清av在线 | 午夜激情啪啪 | 最好看的2019中文大全在线观看 | 久久成人午夜 | 91久久国产综合久久91精品网站 | 中日韩无砖码一线二线 | 欧美日韩中文字幕一区二区 | 欧美成人精品欧美一级乱黄 | 日韩av第一页 | 2018狠狠干| 中文字幕 欧美 日韩 | 天堂最新| 亚洲精品911 | 一区二区久久久久 | 韩国三级少妇高潮在线观看 | 你操综合| 久久精品99久久久久久 | 欧美视频免费看 | 91在线观看免费视频 | 欧美日视频 | 伊人春色av | www视频免费在线观看 | 午夜亚洲精品 | 黄色大片子 | www.av麻豆 | 日日夜夜精品免费 | 最新精品国产 | 1级黄色大片 | 国产视频福利一区 | www.xxx国产| 自拍偷拍亚洲第一 | 91网在线| 久久久久夜色 | 国产人成在线 | 日韩a√| 日皮在线观看 | 污视频在线观看网站 | 中文成人无字幕乱码精品区 | 久久午夜网站 | 精品国产乱码久久久久久婷婷 | 毛片a级片| 精品乱码一区二区 | 女优色图| 国产操操操 | 久久精品免费观看 | 亚洲精品乱码久久久久久麻豆不卡 | 欧美日韩精品亚洲精品 | 最近中文字幕在线mv视频在线 | 亚洲自偷精品视频自拍 | 日本性视频网站 | 高清欧美性猛交xxxx | 中日韩无砖码一线二线 | 国产一级久久 | 一本色道综合久久欧美日韩精品 | 亚洲免费播放 | 欧美自拍偷拍第一页 | 久久久精品视频网站 | av毛片网 | 久久精品久久精品 | 国产精品久久久久久久天堂 | 亚洲宗合网 | 美国特色黄a大片 | 国产成人精品123区免费视频 | 日本天天操 | 亚洲一卡一卡 | 色综合久久综合 | 欧美日韩午夜 | 亚洲一区二区在线 | 香蕉福利视频 | 夜夜嗨av一区二区三区网页 | 欧美高清视频一区二区三区 | 黄色av高清 | 欧美综合色 | 婷婷色小说 | 亚洲在线观看视频 | 午夜啪视频 | 九色91popny蝌蚪新疆 | 成年人在线观看 | 蜜臀va | 亚洲综合图 | 欧美日韩在线免费 | 超碰成人福利 | 欧美日韩中文字幕在线视频 | 日韩黄色一级视频 | 久久r精品| 国产精品91在线 | 欧美不在线 | 欧美精品导航 | 色婷婷国产精品综合在线观看 | 久久夜色精品国产欧美乱 | 成人深夜福利在线观看 | 欧美天天射 | 国产男人搡女人免费视频 | 日韩欧美三级在线观看 | 免费福利在线视频 | 91啦丨九色丨刺激 | 日本黄色网页 | 亚洲五月综合 | 欧美在线色 | 日韩黄色大片 | 精品国产一区二区三区av 性色 | 欧美精品一区二区三 | 欧美片网站免费 | 深夜福利免费在线观看 | 91在线超碰 | 欧美一a一片一级一片 | 午夜网站在线观看 | 性色av浪潮| 国产精品亚洲二区 | 久久狠狠高潮亚洲精品 | 一级成人av | 亚洲我不卡 | 99精品一区二区 | 2019毛片| 人人爽人人干 | 欧洲中文字幕 | 日韩第三页 | av一级| 18xxxx日本 | 爱逼综合| 91精品国产91久久久久久三级 | 国产精品系列在线观看 | 99天堂网 | www.成人免费 | 亚洲美女毛片 | 九九热8 | 亚洲综合15p | 婷婷色综合| 噜噜啪啪 | 亚洲综合日韩 | 国产999在线观看 | 91网站在线播放 | 国产黄a三级三级三级av在线看 | 一区二区三区国产在线 | av小片| 亚欧美精品 | 免费黄色看片 | 国产精品一二三四五 | 人人看超碰 | 成人自拍网站 | 国产又粗又长又黄视频 | av字幕在线观看 | 中文在线资源 | 秋霞免费av | 亚洲国产精品二区 | 久久精品欧美一区二区三区麻豆 | 志在出位国语完整在线观看 | 亚洲 欧美 另类 综合 偷拍 | 日本99热| 一级黄色片69| 天天色av | 青青操视频在线观看 | 色屁屁草草影院ccyycom | 国产免费一区 | av在线高清观看 | 国产热| 亚洲一级性生活 | 久久国产精品波多野结衣 | 4438色| 天堂av中文在线 | 五月色综合 | 免费看欧美片 | 四虎影院www| 黄色免费网站在线看 | 日韩欧美福利 | 亚洲蜜桃妇女 | 在线天堂av | 九九热精品免费视频 | 嫩草视频在线免费观看 | 色婷婷在线观看视频 | 国产96视频 | 国产精品suv一区二区 | 国产精品jizz在线观看美国 | 九九热99久久久国产盗摄 | 色香蕉av | 精品九九九九九 | 免费看成年人视频 | 国产乱码77777777| 精品国产乱码久久久久久108 | 日韩av成人在线 | 日韩精品免费视频 | 亚洲 欧美 日韩 偷拍 | 国产精品一区二区免费视频 | 啪啪网站免费看 | 韩日成人| 2021国产精品 | 久久久国产精品成人免费 | 成人激情免费视频 | 日韩一区二区精品 | 在线观看 中文字幕 | 日本免费在线观看视频 | 国产第一区第二区 | 九九热视频在线观看 | 韩国精品av | av三级在线播放 | 超碰98在线观看 | 国产古装艳史毛片hd | 精品日本一区二区三区 | 99爱视频在线观看 | 亚洲欧洲第一页 | 狠狠躁| 99久草 | 在线一区二区三区做爰视频网站 | 四虎国产精品永久在线国在线 | 日本国产精品视频 | 吃奶在线观看 | 亚洲最大在线观看 | 欧美日韩天堂 | 国产一区二区三区亚洲 | 国产66精品久久久久999小说 | 91操人视频 | 欧洲一区二区三区四区 | 成人免费看视频 | 青娱乐在线视频观看 | 青青草在线观看视频 | a天堂在线资源 | 一级做a爰片性色毛片 | 精品h视频 | 国产福利资源在线 | 成人a毛片 | 国产精品乱码妇女bbbb | 伊人久久av | 超碰在线免费97 | 四虎影院在线视频 | 99久久久精品| 精品suv一区二区 | 欧美高清不卡 | 欧美bbw视频 | 亚洲高清视频在线观看 | 波多野结衣视频网站 | 亚洲国产成人在线观看 | 一区二区三区毛片 | 91精品色| 杨贵妃颤抖双乳呻吟求欢小说 | 成人午夜高潮a∨猛片 | 女同另类之国产女同 | 久久久国产精品x99av | 91在线观看 | 可以免费看的av毛片 | 尤物精品在线 | 自拍偷在线精品自拍偷无码专区 | 欧美日韩国产精品一区 | 国产福利视频一区二区 | 99久久久国产精品免费蜜臀 | 91极品在线 | 最近中文字幕日本 | 亚洲国产欧美一区 | 日韩午夜小视频 | 国产伦精品一区二区三区四区免费 | 日韩精品一区二区三区中文在线 | 青青操久久| 国产精品视频999 | 亚洲综合首页 | 亚洲xxx在线 | 精品午夜一区二区三区在线观看 | 国产无遮挡又黄又爽又色视频 | 奇米成人| www.亚洲激情 | 你懂的网址在线 | 在线观看免费高清视频 | 久久久三级 | 亚洲综合日韩在线 | 青青在线视频 | 久久久久人人 | 中文字幕在线一 | av这里只有精品 | 国产激情在线免费观看 | 亚洲男女av | 青青草伊人网 | 亚洲欧美日韩免费 | 日本在线视频一区二区 | 中文字幕综合网 | 久久精品视频在线免费观看 | japanese在线看 | 日韩av不卡在线观看 | 一级黄色片免费播放 | 免费观看国产视频 | 麻豆一区二区99久久久久 | 国产性hd | 欧美精品久久久久久久久久 | 久久网站免费 | 欧美一区亚洲二区 | 51国产偷自视频区视频 | 一区三区视频在线观看 | 性生活三级视频 | 国产在线不卡av | 香蕉97视频观看在线观看 | 成人在线观看网址 | 中文字幕1区2区3区 欧洲天堂网 | 波多野在线播放 | 秋霞影院午夜伦 | 日韩和的一区二区 | 午夜精品久久久久久久99 | www.久久综合| 欧美一级特黄aa大片 | 欧美性jizz18性欧美 | 国内偷拍久久 | 欧美三日本三级少妇三99 | 精品欧美日韩 | 亚洲视频在线免费观看 | 欧美日韩国 | 超碰激情 | 中文字幕69| 都市激情亚洲欧美 | 华人色 | 樱桃香蕉视频 | 久久福利视频导航 | 筱田优全部av免费观看 | 在线看亚洲 | 国产精品久久久久久久岛一牛影视 | 欧美呦交 | 午夜影院在线观看18 | 亚洲综合涩 | av最新地址| 五月天婷婷激情 | 特黄特色免费视频 | 夜夜春av| 超碰在线网 | 欧美性生交xxxxx久久久 | 91成人毛片 | 8mav精品成人| 北条麻妃一区二区三区 | 免费爱爱网址 | 91原创视频 | 天天干天天操天天干 | 亚洲欧美在线观看 | 动漫一区二区 | 秋霞视频在线观看 | 久久精品丝袜高跟鞋 | 亚洲福利视频导航 | 国产区精品视频 | 九色综合网 | 久久99影院 | 特级丰满少妇一级aaaa爱毛片 | 在线观看欧美精品 | 日批网址| 成人国产在线视频 | 成人免费视频免费观看 | 成年人视频网 | 国产999在线| 国产精品毛片一区二区三区 | 亚洲天码中字 | 人人人人干 | 黑人一级片 | 99在线视频观看 | 麻豆一级片 | 日韩欧美成人网 | 天天碰天天干 | 精品成人av| 色呦呦官网 | 久久久久久久黄色片 | 性视频在线 | 天天看av| 亚洲a精品 | 日本色站 | 亚洲精品1234 | 亚洲欧美中文日韩在线 | 久久久久久久一区二区三区 | 国产欧美精品一区二区 | 色av免费| 亚洲乱码一区二区三区三上悠亚 | 九九热精品在线观看 | 日本一二三不卡 | 亚洲女人天堂 | www奇米影视com | 精品成人一区二区三区 | 亚洲欧美不卡 | 欧美大色网 | 亚州一区二区 | 国产一区二三区 | 成人综合网站 | 91成人免费在线 | 伊人久久综合 | 亚洲激情视频在线播放 | 久久在草 | 色综合天天综合综合国产 | www.日日日| 国产在线观看a | 在线观看日韩中文字幕 | 日韩在线影院 | 欧美日韩国产精品一区二区 | 国产福利久久 | 99国产精品久久久久久久日本竹 | 操久久 | 久久久资源 | 91新视频| 日本大学生三级三少妇 | 一本久道久久综合 | 国产欧美第一页 | 色国产精品 | 国产成人在线观看免费网站 | 国产成人精品一二三区 | 爱爱精品| 国产三级网 | 亚洲婷婷一区 | 激情图片网站 | 91视频在线视频 |