欧美亚洲韩国_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號
主站蜘蛛池模板: 超碰人人人 | 123成人网 | 久色影视| 日本视频不卡 | 色激情综合| 能看av的网址 | 一本大道香蕉大a√在线 | 精品精品 | 亚洲乱论| 99精品在线观看视频 | 黄色aaa毛片 | av操操操| 亚洲.www | 亚洲乱亚洲乱妇 | 91丨国产 | 日本超碰| 永久免费视频网站直接看 | 欧美一区二区三区色 | 亚洲免费视频二区 | www.九色| 国产精品一区在线看 | 天天做夜夜做 | 日本久久久久久久久久久 | 97成人资源 | 中文一二三区 | 欧美草逼网 | 亚洲视频精品在线观看 | 日本黄色视屏 | 91麻豆精品国产91久久 | 91女人18毛片水多国产 | 日韩一区二区三区四区五区六区 | 黄色av免费网站 | 午夜在线观看免费视频 | 99热超碰| 天天干天天操天天射 | 亚洲第一伊人 | avav国产 | 欧日韩在线视频 | 男人的天堂久久 | 日本不卡一二三区 | 91狠狠综合 | zzijzzij亚洲丰满少妇 | 成人黄色免费网 | 最新中文字幕在线视频 | 99久久免费精品国产免费高清 | 综合久色 | 污污的视频软件 | jizzjizz日本人 | wwwjavhd| 国产精品久久久久久久免费 | 国产视频一区二区在线 | 亚洲精品mv免费网站 | 一二三区在线播放 | 黄瓜视频在线免费看 | 超碰在线一区 | 日韩欧美亚洲一区二区三区 | 日韩免费高清视频网站 | 国毛片| 久久国产片 | 久久久精品视频网站 | 影音先锋三级 | 国产成人三级在线观看视频 | 久久久www成人免费精品 | a毛片在线免费观看 | 91国偷自产一区二区三区观看 | 成人妖精视频yjsp地址 | 五月婷婷激情综合 | 久久久久久久久久久久久久免费看 | a√天堂中文字幕在线 | 久久精品综合 | 欧美特黄色片 | 亚洲男人的天堂在线 | sese亚洲| 欧美日韩在线视频观看 | 欧美91视频 | 福利在线观看 | 日韩精品视频在线播放 | 日本成人免费在线 | 日本乱码一区二区 | 亚欧成人精品一区二区 | 欧美日韩中文字幕在线视频 | 六月丁香色婷婷 | 99国内精品| 欧美 亚洲 一区 | 久久日韩精品 | 国产一区二区色 | 日韩婷婷| 国产精品久久久久久久妇女 | 欧美在线激情视频 | 思思久久久 | 污污在线看 | 中国特黄毛片 | 性色一区二区三区 | 欧美精品五区 | 秋霞一级视频 | 亚洲激情偷拍 | 国产草草影院 | 午夜影视福利 | 香蕉视频久久 | 亚洲女人毛茸茸 | 黑人巨大精品欧美一区二区免费 | 精品亚洲一区二区 | 国内自拍偷拍视频 | 日韩美在线 | 中文字幕视频观看 | 奇米色影视 | 久久综合色鬼 | 可以直接看的毛片 | jzzijzzij亚洲成熟少妇在线播放 一区二区视频在线播放 | 一区二区激情 | 成人短视频在线 | av久操 | 福利视频在线播放 | 日本少妇喷水 | 国产成人中文字幕 | 成人亚洲玉足脚交系列 | 国产视频入口 | av日韩一区二区 | 亚洲1234区 | 国产精品欧美综合亚洲 | 精品国产1区| 欧美在线视频免费 | 成年人毛片视频 | 国产噜噜噜噜噜久久久久久久久 | 精品久久久久久久久久久久久久久久 | 久久久一区二区三区精品 | 婷婷激情综合网 | 露出调教羞耻91九色 | www国产在线 | 伊人久久亚洲 | 丰满肉嫩西川结衣av | 日韩午夜网站 | 夜夜欢视频 | 天天操夜夜欢 | 亚洲天堂2021av| v8888av| 亚洲精品国产一区二区精华液 | a视频在线| 色一情一交一乱一区二区三区 | 欧美污视频 | 成人视屏在线 | 天天影视色| 影音先锋中文字幕一区 | 99久久婷婷国产综合精品青牛牛 | 91在线视频播放 | 中文字幕第一页在线 | 黄色欧美网站 | 操操插插 | 91精品毛片 | 男人草女人 | 在线免费观看午夜视频8 | 久久久久久亚洲欧洲 | 97av免费视频 | 丁香六月欧美 | 成人免费播放视频 | 潘金莲一级淫片aaaaaa播放 | 亚洲影视精品 | 亚洲黄色在线免费观看 | 国产日韩精品在线 | 亚洲综合在线成人 | 香蕉久久夜色精品升级完成 | 女人洗澡一级特黄毛片 | 午夜精品久久久久 | 日本三级2019 | 97人人爽| 成人免费观看在线视频 | 日韩欧美国产另类 | 久久入口 | 日产久久久久久 | 欧美视频色| 亚洲一区视频在线播放 | 色01看片网 | www.在线观看网站 | 日日狠狠久久偷偷四色综合免费 | 中国少妇色| 超碰97人人在线 | 手机在线一区二区 | 黄色av一级 | 天天狠狠操 | 欧亚一区二区 | 欧美日韩不卡视频 | www.av麻豆 | 色综合久久88 | 少妇久久久久 | 国产a自拍| 亚洲毛片欧洲毛片国产一品色 | 风间由美乳巨码无在线 | 国产精品一级二级 | 性色av免费 | 午夜精品视频一区二区三区在线看 | 98国产精品 | 上原亚衣在线观看 | 九色91视频 | 中国精品久久 | 亚洲图片欧美视频 | 成人午夜毛片 | 欧美一级二级三级视频 | 在线观看免费视频a | 99精品国产99久久久久久97 | 国产无遮挡又黄又爽 | 超碰偷拍 | wwyoujizzcom | 夜夜爽夜夜操 | 粗大黑人巨茎大战欧美成人免费看 | 99久久婷婷 | 日韩精品久久久久 | 一区精品在线 | 国产一区二区在线不卡 | 亚洲丝袜色图 | av在线免| 亚洲一级图片 | 亚洲天堂欧美日韩 | 成人天堂噜噜噜 | 3d欧美精品动漫xxxx无尽 | 九九在线观看视频 | 色视频免费 | 国产有码在线 | 午夜免费大片 | youjizz.com自拍| 亚洲精品免费网站 | 在线亚州 | 操在线视频 | 日韩国产综合 | 精品久久久久久中文字幕 | www.久久精品.com| 免费黄色av网站 | 亚洲综合图色 | 精品乱码一区二区三区 | 婷婷伊人综合中文字幕 | 一级黄色片欧美 | 特黄一级大片 | 国产成人精品一区二区三区在线 | 欧美日韩亚洲成人 | 影音先锋中文字幕第一页 | 香蕉在线视频免费 | gogo亚洲肉体艺术国模 | 欧美黄色片视频 | 日本大尺度吃奶做爰久久久绯色 | 精品五月天 | 中国一级片黄色一级片黄 | 一区二区三区日韩 | 国产精品乱码一区二区三区 | 国产精品久久久久久婷婷天堂 | 国产成人精品自拍 | 91久久爱 | 国产精品一区二区人人爽 | 天天摸天天干天天操 | 国产精品96久久久久久 | 精品在线一区二区 | 国产视频一二三四区 | 永久免费毛片 | 高h奶汁双性受1v1 | 国产麻豆一区二区三区 | 黄色片视频在线观看免费 | 天天草夜夜 | 毛片精品| 亚洲午夜精品一区二区 | 亚洲精品日日夜夜 | 视频一区二区三区在线观看 | 天天射夜夜骑 | 一级黄色性感片 | 综合色av| 三上悠亚亚洲一区 | 久久久九九九九 | 国产精品第三页 | 日韩国产欧美一区二区三区 | 午夜小视频在线 | 在线一二区 | 免费看欧美大片 | 国产精品99久久久久久小说 | 黄色片不卡 | 一级片在线观看免费 | 伊人久久青青草 | 韩日黄色片 | 精品国产一区二区三区四区 | 欧美大片免费高清观看 | 亚洲视频自拍 | 欧美嘿咻视频 | 伊人干综合 | 亚洲一级性生活 | 女警白嫩翘臀呻吟迎合 | 影音先锋欧美色图 | 国产亚洲精品久久久久久无几年桃 | 黄网站在线观看视频 | 蜜桃在线一区 | 天天综合网天天综合 | 四虎影视永久免费 | 亚洲人成一区二区 | 中文字幕永久在线播放 | 欧美资源网 | 亚洲一区二区三区中文字幕 | 鸭子av| 91成熟丰满女人少妇777 | 国产精品久久二区 | 国产欧美日韩在线播放不了吗 | 一区二区三区不卡视频 | 欧美怡红院视频一区二区三区 | 污片在线免费观看 | 在线播放日韩 | 一区二区三区视频观看 | 日本乱偷中文字幕 | 91成人品 | 中文字幕免费在线 | 狠狠干视频在线 | 国产一区二区三区久久久 | 日韩黄色免费 | gogo亚洲肉体艺术国模 | 免费看的av | 超碰66 | 亚洲一区视频 | 黄色精品一区二区 | 亚洲欧美视频在线观看 | 99精品在线免费观看 | 97精品国产 | 日韩欧美在线免费观看 | 中文字幕精品在线视频 | 热99| a级在线播放 | 亚洲成人黄色在线 | 欧美色啪| 国产午夜精品久久 | wwww黄色片 | 国产色站 | 亚洲美女免费视频 | 国产日韩欧美 | 青青草欧美 | 91中文视频 | 日本中文视频 | 精品综合网 | www亚洲| 影音先锋男人的天堂 | 亚洲第一黄色 | 亚洲天堂精品久久 | 国产亚洲第一区 | 色婷婷视频网 | 丁香激情五月 | 午夜精品久久 | 九九99精品 | 久久天天躁狠狠躁夜夜av | av 一区二区三区 | 欧美狂猛xxxxx乱大交3 | 二级毛片视频 | 奇米777色| 色哟哟网站入口 | www黄在线观看 | 国产视频在线一区二区 | 亚洲国产精品第一区二区 | 国产精品成av人在线视午夜片 | 国产黄色大全 | 日韩一区二区三免费高清在线观看 | 中文在线视频 | 国产在线视频一区二区三区 | 国产一二区在线观看 | 一级特黄免费视频 | xxxx国产视频 | a一级黄色| 成人少妇影院yyyy | 亚洲国产精品一区二区www | 国产成人在线一区 | 一级视频在线观看 | 在线精品国产一区二区三区 | 麻豆视频在线观看免费网站黄 | 欧美伦理一区二区三区 | 亚洲最大的av网站 | 国产精品久久久久一区二区三区 | 一级国产特黄bbbbb | 337p亚洲精品色噜噜狠狠 | 少妇高潮一区二区三区99小说 | 国产一区二区三区影院 | 中文成人无字幕乱码精品区 | 久久精品国产99 | 国产精品伦子伦免费视频 | 丝袜一区二区三区 | 天干夜夜爽爽日日日日 | 成人av久久 | 成人免费视频网站 | 成人久久国产 | 中文字幕av在线播放 | 夜夜骚av| 亚洲国产成人精品久久久国产成人一区 | 伊人久久大香线蕉综合75 | 91精品国产乱码久久久久 | 亚洲综合色自拍一区 | 日皮视频免费看 | 久久久久免费精品视频 | 都市激情中文字幕 | 日韩在线视频一区二区三区 | 黄色免费在线观看网站 | 偷拍亚洲视频 | 国产黄色一区二区 | av综合在线观看 | 中国黄色一级视频 | 超级黄色录像 | 97超碰在 | 中文不卡在线视频 | 91娇羞白丝网站 | 夜夜草av| 69视频入口 | 人碰人人| 亚洲精品男同 | 亚洲看| 色婷婷a| 国内精品久久久 | 最新视频在线观看 | 国产成人av一区二区三区在线观看 | 日本网站在线 | 日韩极品少妇 | 男人的天堂免费 | 久久综合伊人77777蜜臀 | 操老女人视频 | 国产美女无遮挡免费看 | 先锋av网 | 欧美激情一区在线 | 久久免费国产 | 男人天堂综合 | 加勒比日韩 | 日韩成人免费在线观看 | 黄色网址在线免费观看 | 色综合天天网 | 国产黄色一级片 | 天天干天天插天天操 | 亚洲高清视频在线观看免费 | 三上悠亚久久 | 黄色av网站在线看 | 亚洲精品成人区在线观看 | 日韩av专区 | 懂色av一区二区三区蜜臀 | 重囗味sm一区二区三区 | 色悠悠av| 国内自拍视频在线观看 | 亚洲射图 | 亚洲图片小说视频 | 黄色片视频免费在线观看 | 91黄色免费视频 | 99激情网 | 91精品国产色综合久久不卡98口 | 国产高清免费在线观看 | 男人av的天堂 | 日日夜夜国产 | 国产在线精品成人欧美 | 综合在线播放 | 懂色av.com| 色婷婷综合久久久中文字幕 | 91福利网 | 福利视频91 | 九九九在线观看 | 这里有精品在线视频 | 久久久亚洲天堂 | 福利视频一区二区三区 | 亚洲激情黄色 | 黄色在线免费视频 | 国产中文字幕在线播放 | 在线观看久草 | 中文字幕一区二区三区乱码不卡 | 尤物久久| 亚洲另类天堂 | 亚洲影视网 | 国产理论视频 | 国产一区二区免费在线 | av操操 | 午夜亚州 | 亚洲综合爱 | 亚洲揄拍窥拍久久国产自揄拍 | 韩国av一区 | 久久精品综合 | 天天操夜夜添 | 亚洲 欧美 激情 另类 校园 | 久久综合色鬼 | 91在线一区二区 | 99激情在线 | 男人的天堂在线播放 | 天天草天天射 | 欧美福利社 | 吻胸摸激情床激烈视频大胸 | 丁香婷婷六月 | 亚洲三级一区 | 91视频黄色 | 五月激情啪啪 | 女性裸体瑜伽无遮挡 | 国产99热| 97视频人人 | 亚州中文| 开心成人激情 | 黄色欧美大片 | 成人深夜福利在线观看 | 中文字幕日韩精品视频一区视频二区 | 亚洲综合网在线观看 | 一区二区国产精品视频 | 国产精品综合在线 | 亚洲综合成人在线 | 日本精品少妇 | 午夜一二三| 顶级黄色片 | www.天堂在线| 免费成人深夜夜视频 | 亚洲精品sm一区二区 | 亚洲二区av| 日韩精品中文字幕一区二区 | 欧美性www| 荔枝视频污 | 国产大学生情侣呻吟视频 | 国产老女人乱淫免费可以 | 99久久精品免费看国产四区 | av天天在线 | 国产精品国产一区二区三区四区 | 色亚洲视频| 久久精品国产一区二区三区 | 91精品国产一区二区三密臀 | 亚洲视频五区 | 三级影片在线免费观看 | 国产乱叫456在线 | 国产高潮在线 | 日韩一级中文字幕 | av观看免费 | 99热日韩 | 精品123区| 两性免费视频 | 欧美亚洲影院 | 在线亚洲欧美日韩 | 尤物在线 | 182tv午夜| 国产又粗又长又黄视频 | 在线观看免费高清在线观看 | 处破大全欧美破苞二十三 | 欧美在线视频一区 | 国产伊人精品 | 国产一级淫片免费 | 久草中文在线 | 亚洲一区色 | 在线看免费视频 | 不卡的av在线免费观看 | av男人天堂网 | 亚洲毛毛片 | 91国偷自产一区二区三区观看 | 久久国产小视频 | 色激情五月 | 不卡一二区 | 天天爱天天色 | 极品大长腿啪啪高潮露脸 | 精品国产污污免费网站入口爱酱 | 日韩男女啪啪 | 色窝av| 成人性生交大片 | 91麻豆视频在线观看 | 日韩精品久久久久久免费 | 成人免费视频国产在线观看 | 亚洲a一区| 2022天天操 | 精品亚洲一区二区 | 成人小视频在线观看 | 日韩精品一二三 | 私库av在线| 在线精品一区二区 | 国产自产在线 | 丰满大乳少妇在线观看网站 | 久久99免费 | 一级成人毛片 | 在线亚洲区 | www网站在线免费观看 | 综合色88| 在线视频观看 | 花样视频污 | 日本特黄一级片 | 一级片一级片 | 888夜夜爽夜夜躁精品 | 欧美亚洲日本国产 | 污网站在线观看免费 | 97插插插| 欧美大黑bbbbbbbbb在线 | 国内精品视频一区 | 波多野吉衣视频在线观看 | 欧美午夜不卡 | 久久欧美视频 | 高清毛片aaaaaaaaa片 | 日本少妇喷水 | 国产情侣免费视频 | 男人的天堂中文字幕 | 999免费视频| 欧美一区二区黄色 | 色综合一区二区 | 国产一国产二国产三 | 国产精品秘 | 国产亚洲一区二区三区 | 一级a毛片在线观看 | 中文字幕11页中文字幕11页 | 超碰97在线免费 | 污到下面流水的视频 | 超碰人人艹 | 亚洲高清影院 | 欧美激情精品久久 | 一级欧美黄色片 | 中文字幕网站 | 黄色69| 亚洲男人的天堂在线视频 | 亚洲国产精品成人无久久精品 | 久久久综合精品 | 国产69久久精品成人看 | av大片在线 | 色偷偷视频 | 奇米在线视频 | 国产成人精品a视频一区 | 青青草公开视频 | 男女激情在线观看 | 伊人狼人影院 | 日韩在线一二三区 | 欧美性色视频 | 久久小视频 | 淫五月天 | 成人在线网 | 日韩不卡免费 | 亚洲欧洲中文字幕 | 色哟哟视频在线 | 国产午夜精品一区二区理论影院 | 在线观看黄色小视频 | 国产伦精品一区二区三区视频免费 | 国产免费看黄 | 日韩精品视频在线观看免费 | 亚洲激情视频 | 宅男噜噜噜666在线观看 | 射进来av影视网 | 国产麻豆一精品一男同 | 欧美精品在线视频观看 | 国产成人在线免费观看视频 | 免费观看一区二区三区毛片 | 亚洲人人夜夜澡人人爽 | 操操操操网 | 欧美亚洲精品在线 | 中文字幕日韩欧美一区二区三区 | 日韩av网页 | 三级黄色免费 | 91高清在线 | 日韩美一区二区 | 99精品一区 | 超碰在线免费播放 | 不卡的av网站 | 夜夜操免费视频 | 中文字幕视频网站 | 国产精品av网站 | 亚洲靠逼 | 色哟哟国产 | 日本韩国在线 | 欧美aa | 丁香激情五月 | 日韩精品福利视频 | 日韩一区二区在线播放 | 在线观看免费大片 | 一区二区三区视频免费在线观看 | 狠狠干干干 | 经典毛片| 顶级毛片 | 国产呦系列 | 嘿咻视频在线观看 | 日日狠狠久久 | 亚洲欧美大片 | 久久久久人| 亚洲激情视频网 | 日本超碰| 视频在线观看免费 | 一区二区三区观看 | 国产传媒在线观看 | 91新网站 | 爱爱一区 | 嫩草一区| 国产成人免费看 | 爱情岛论坛首页永久入口线路一 | 欧美精品自拍 | 久久久久成人网 | 国产99在线观看 | 日日弄天天弄美女bbbb | av在线一| 一级片免费观看视频 | 男男做爰猛烈叫床爽爽小说 | 亚洲天堂偷拍 | 第一福利丝瓜av导航 | 在线看日韩毛片 | 国产片91 | 91麻豆成人精品国产免费网站 | 国产女同视频 | 欧美乱大交做爰xxxⅹ | 日日操天天操 | 女人性做爰69片免费看 | 欧美色亚洲色 | 咪咪av| 中文在线播放 | 新超碰在线 | a一级黄色片 | 波多野结衣一本 | 日韩高清中文字幕 | 一级在线观看 | 日韩欧美三级在线观看 | 日韩一区欧美一区 | 香蕉视频色 | 天天操导航 | 在线视频亚洲 | 亚洲图片综合区 | 蜜色影院| 中文在线资源天堂 | 香蕉精品视频在线观看 | 欧美一区二区三区网站 | 日韩精品91| ,亚洲人成毛片在线播放 | 亚洲国产一区在线 | 亚洲精品一区14p | 国产午夜免费福利 | 久久久久97国产 | 成人免费视频一区二区三区 | www国产亚洲精品 | 国产99免费 | 99这里有精品视频 | 天堂成人网| 制服.丝袜.亚洲.中文.综合懂色 | 中文字幕在线欧美 | 日本午夜在线 | 亚洲精品视频一区二区 | 在线欧美色 | 1024手机在线观看 | 亚洲精品国产乱码久久久1区 | 欧美日韩精品一区二区三区 | 日韩精选在线观看 | 99re热视频| 激情av在线 | 大奶久久| 欧美在线网 | 中文字幕视频网站 | 日韩av在线免费看 | 成人激情文学 | 99视频在线播放 | 精品不卡一区二区 | 亚洲欧美中文日韩在线 | 就操成人网| 能直接看的av网站 | 亚洲综合情 | 亚洲免费黄色网址 | 国产99久久久| 新婚夫妇白天啪啪自拍 | 99久久国产精 | 96超碰在线 | 先锋资源久久 | 在线永久看片免费的视频 | 久久黄色大片 | 国产亚洲va天堂va777 | 日韩色网 | 国产普通话bbwbbwbbw | 91桃色网站 | 久久深夜 | 午夜影视剧场 | 日韩啪啪网 | 四虎影视成人永久免费观看亚洲欧美 | av怡红院| 婷婷欧美 | 香蕉免费毛片视频 | 黄色av一区二区三区 | 国产精品成人aaaa在线 | 亚洲视频在线观看 | 污网址在线观看 | 亚洲视频在线免费 | 91九色porn| 四虎激情 | 日本黄色中文字幕 | 偷拍欧美亚洲 | 久久av综合 | 精久久久久 | 日韩毛片一区二区三区 | 综合狠狠开心 | 天天操天天干天天插 | av在线亚洲天堂 | 1769国产精品视频 | 欧美一级片 | 国产精品美女久久久 | 亚洲精品一二 | 亚洲aa在线| 97黄色片 | 精品黑人一区二区三区国语馆 | 婷婷亚洲五月 | 国产黄色自拍视频 | 亚洲精品在线免费 | 你懂的国产视频 | 亚洲人成网77777 | 非洲黑寡妇性猛交视频 | 亚洲少妇网| www.com国产| 亚洲在线精品视频 | 色婷婷伊人 | 毛片最新网址 | 欧美精品少妇 | 久久人人爽人人爽人人片亚洲 | 国产成人小视频在线观看 | 自拍偷拍亚洲视频 | av一区二区三区 | 成人在线播放视频 | 激情91| 99久久黄色 | 亚洲乱码国产乱码精品精不卡 | 爱爱综合网 | 五月天色网站 | av字幕在线观看 | 一本一本久久a久久精品综合小说 | 黑人精品欧美一区二区蜜桃 | 久草视频免费在线观看 | 日韩三级在线 | 亚洲精品mv免费网站 | 一级国产精品 | 天天撸天天射 | 国产一区二区三区亚洲 | 国产欧美日韩成人 | www.久色| 国产清纯白嫩初高中在线观看性色 | 亚洲区小说区图片区 | 日韩欧美黄色 | 51国产视频| 国产永久在线观看 | xxxxxhd亚洲人hd | 91桃色在线观看 | 伊伊人成亚洲综合人网7777 | 精品aaa | 99久久久久久久久久久 | 四虎影院污 | 亚洲精品久久久一区二区三区 | 青青草91视频 | 日本一级网站 | 91成人在线免费观看 | 红桃视频91 | 亚洲天堂影音先锋 | 天天狠天天插天天透 | 武林美妇肉伦娇喘呻吟 | 国产二区视频在线观看 | 久久久精品国产 | 高清视频一区二区 | 福利在线一区 | 国产又粗又猛又爽又 | 超碰日本| 国产视频手机在线观看 | 国产免费一区二区三区 | 成人网入口 | 一区二区www | 久久黄色小说 | 日韩三级成人 | 欧美三级网 | 欧美日韩精品一区二区三区 | 超碰在线综合 | 最新午夜综合福利视频 | 日本囗交做爰视频 | 久久久久久久艹 | 三级福利视频 | 一区二区三区国产在线观看 | 国产精品久久片 | 一区二区三区在线视频观看 | 精品资源成人 | 亚洲天堂男人 | 97狠狠操 | 玖玖在线免费视频 | 欧美精品久久久久久久久 | 在线观看mv的中文字幕网站 | 亚洲综合91 | 国产专区一 | 特级av片 | 婷婷激情视频 | 国产奶水涨喷在线播放 | 国产黑丝av| 美女视频一区 | 日韩字幕在线观看 | 天天草天天操 | 夜夜高潮夜夜爽国产伦精品 | 国产999视频| 成年人午夜网站 | 欧美国产在线看 | 狠狠鲁狠狠干 | 91麻豆精品91久久久久同性 | 色综合图片区 | 国产精品av网站 | 尤物视频在线观看 | 噜噜狠狠狠狠综合久久 | 免费涩涩网站 | 亚洲你懂得 | 日韩免费一区二区 | 亚洲香蕉精品 | 久久伊人免费视频 | 精品999久久久 | 久久看av| 一区二区三区黄 | 日韩在线播放av | 亚洲精品久久久久58 | 久久人人爽人人 | 欧美极品少妇xxxxⅹ免费视频 | 91麻豆精品视频 | 精品久久久一区 | 91亚洲精品乱码久久久久久蜜桃 | 青春草视频在线免费观看 | 超碰97人人爱 | 欧美视频一区二区在线观看 | 99视频网站 | 夜夜偷影视 | 亚洲国产中文字幕 | 中文字幕久久久 | 亚洲欧美日韩久久 | 日本成人午夜视频 | 51成人做爰www免费看网站 | 国产专区在线 | 亚洲激情视频在线观看 | 天天躁日日躁狠狠躁av | 最新版天堂资源中文在线 | 亚洲免费视频二区 | 日韩美一区二区 | 在线观看福利网站 | 久久精品性| 国产青青操 | 久久夜色精品亚洲 | 日本久久片 | 国内自拍区 | 99视频精品| 国产对白叫床清晰在线播放 | 成人性生活免费视频 | 在线不卡免费视频 | 精品久久久久久久久久久久久 | 四虎影音先锋 | av合集| 91香蕉国产在线观看软件 | 亚洲精品影院在线 | 欧美亚洲精品在线观看 | 成人综合一区 | 一级黄色免费观看 | 91在线网址| 国产综合日韩 | av生活片 | 香蕉久| 日韩精品免费一区二区三区 | 免费看欧美大片 | 精品在线视频播放 | 日韩黄色在线观看 | 亚洲久草 | av自拍偷拍| 国产www在线 | 97人人爽 | 日韩午夜影院 | 激情伊人网| 亚洲国产视频一区二区三区 | 操操操干干干 | 亚洲成人精品一区二区 | 禁断介护老人中文字幕 | 国产女主播一区二区三区 | 亚洲不卡免费视频 | 色月婷婷 | www.欧美精品 | 成人18在线 | 2024日韩中文字幕 | 香蕉依人 | 青青草国产成人av片免费 | 欧美视频一区二区在线观看 | 超碰人人擦| 真实亲伦对白清晰在线播放 | 日韩一区二区在线播放 | 久久视频坊 | av首页在线观看 | 又色又爽又黄无遮挡的免费视频 | 久久性网 | 日韩欧美中文在线 | 亚洲精品久久久久久久蜜桃 | 青娱乐免费在线视频 | 美日韩在线视频 | 免费伊人网 | 日韩专区中文字幕 | 小日子的在线观看免费第8集 | 亚洲精品国产精品乱码不卡√香蕉 | 国产成人资源 | www.精品一区 | 亚洲午夜18毛片在线看 | 免费看的黄色小视频 | 亚洲精品久久久久久蜜桃 | 国产精品视频一区二区二 | 国产精品视频免费丝袜 | 国产片91| 神马午夜在线 | 在线观看黄色动漫 | 亚洲成人基地 | 日产精品久久久 | 在线毛片网站 | 人人爽人人爽人人片av | 久久伊人一区二区 | 亚洲一级无毛 | 911av| 爱爱动态图 | 中文字幕亚洲情99在线 | 老司机综合网 | 一级二级在线观看 | 色综合中文字幕 | 91麻豆精品秘密入口 | 欧美黑人疯狂性受xxxxx野外 | 天堂中文在线官网 | 国产在线高清视频 | 在线播放免费人成毛片乱码 | 国产精品一区av | 亚洲精品一 | 黄色在线观看国产 | 一区二区三区麻豆 | 性较小国产交xxxxx视频 | 日韩播放 | 五月开心婷婷 | 欧美少妇15p | 成人黄色免费视频 |