日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

零基础微信落地页小程序实战项目

發(fā)布時(shí)間:2024/3/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零基础微信落地页小程序实战项目 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

微信小程序簡(jiǎn)單易上手,只要有一些編程基礎(chǔ),即可快速開(kāi)發(fā)基本的項(xiàng)目。
本項(xiàng)目是常見(jiàn)的,商品廣告落地頁(yè)小程序。提供商品瀏覽,商品列表按鈕,購(gòu)買(mǎi),微信授權(quán),手機(jī)號(hào)綁定,驗(yàn)證碼校驗(yàn),用戶協(xié)議,消息通知,監(jiān)聽(tīng)者模式等基本功能。
定位學(xué)習(xí)人群是剛接觸微信小程序的,零基礎(chǔ)同學(xué)。
本人剛接觸微信小程序時(shí),也是零基礎(chǔ),HTML和CSS都是第一次接觸,經(jīng)過(guò)兩個(gè)星期的學(xué)習(xí),就掌握了基本的開(kāi)發(fā)技巧,并獨(dú)立完成多個(gè)項(xiàng)目。所以即使沒(méi)有這方面經(jīng)驗(yàn)的同學(xué)也不要?dú)怵H,只要學(xué)習(xí)幾個(gè)實(shí)戰(zhàn)項(xiàng)目之后,應(yīng)付工作基本上都是綽綽有余的。


效果圖展示:




目錄

  • 創(chuàng)建小程序

  • 落地頁(yè)可適配長(zhǎng)度界面

  • 落地頁(yè)底部欄:

    • 客服按鈕,購(gòu)買(mǎi)按鈕
    • 微信登錄授權(quán)
    • 底部用戶協(xié)議,用戶協(xié)議同意定位
  • 3 x 3 按鈕組件

    • 組件使用
      • flex-grow
      • flex-shrink
    • 組件傳遞數(shù)據(jù)
    • CSS關(guān)鍵幀動(dòng)畫(huà)
  • 拼團(tuán)成功組件

  • 廣告輪播

    • 水平廣告輪播
    • 消息輪播
  • 下浮層

  • Notification 監(jiān)聽(tīng)者模式

  • Toast 提示彈窗

  • 總結(jié)

  • 代碼下載


  • 創(chuàng)建

    創(chuàng)建一個(gè)小程序項(xiàng)目,如果只是學(xué)習(xí),那只需要下載安裝 微信開(kāi)發(fā)者工具。如果是商用的話,需要申請(qǐng)APPID,并根據(jù)自己需要開(kāi)通相應(yīng)的功能,例如支付接口,以及申請(qǐng)自己的資源CDN



    下面介紹如何創(chuàng)建一個(gè)小程序:



    啟動(dòng)工具之后,點(diǎn)擊“+” 創(chuàng)建小程序。



    如果沒(méi)有申請(qǐng) APPID,可以使用測(cè)試號(hào),就是隨機(jī)生成的測(cè)試號(hào),只是本地開(kāi)發(fā)使用,不可以商用。

    選擇 不使用云服務(wù),點(diǎn)擊創(chuàng)建,選擇編程語(yǔ)言。然后點(diǎn)擊確定。

    這樣就來(lái)到項(xiàng)目界面。

    — NEXT —


    落地頁(yè)可適配長(zhǎng)度界面

    本小節(jié),我們來(lái)實(shí)現(xiàn)一下落地頁(yè)可適配長(zhǎng)度的滾動(dòng)界面。


    需要?jiǎng)?chuàng)建 page,名稱(chēng)就叫做 landingpage。

    在app.json中,添加啟動(dòng)頁(yè),輸入名稱(chēng),按下回車(chē),會(huì)自動(dòng)在 pages/ 路徑下生成文件夾,并生成 landingpage.js,landingpage.json,landingpage.wxml,landingpage.wxss 四個(gè)文件。

    {"pages":["pages/landingpage/landingpage",...] }

    我習(xí)慣先寫(xiě) .wxml 文件,然后在 .wxss 文件中隨時(shí)調(diào)試界面樣式,涉及到引用的組件,在 .json 文件中添加即可。界面邏輯寫(xiě)在 .js 文件中。

    分析界面結(jié)構(gòu):
    • 整體結(jié)構(gòu)為縱向垂直布局,可以先設(shè)置幾張圖片依次平鋪。

    先設(shè)置 landingpage 整體樣式:

    <view class='main-wrap'></view>

    .main-wrap {position: relative;display: flex;flex-direction: column;background: #EEE; }

    使用 wx:for 設(shè)置一組圖片,wx:key可以寫(xiě)成 *this

    <block wx:for="{{bannerImgList}}" wx:for-index="index" wx:key="*this"><image class="banner" mode="widthFix" src="{{item}}" lazy-load="true" /> </block>

    圖片樣式為:

    .banner {width: 100%;height: auto; }

    這里 bannerImgList 為本地一組圖片資源,在 data 中聲明:

    bannerImgList: ['../../images/landingpage1.jpg','../../images/landingpage6.jpg','../../images/landingpage7.jpg','../../images/landingpage8.jpg', ]

    這樣,落地頁(yè)基本就有了一個(gè)簡(jiǎn)單的界面,圖片從上到下鋪滿屏幕。

    注意這里的圖片在實(shí)際項(xiàng)目中,需要使用CDN的下載地址,不然本地資源太多,影響小程序加載速度,而且上傳小程序也有尺寸限制。

    Tips:
    • 書(shū)寫(xiě) wxml 標(biāo)簽快捷方式:
    • 輸入 view . className 回車(chē),會(huì)自動(dòng)生成 <view class=“className”></view>
    • 輸入 view # idName 回車(chē),會(huì)自動(dòng)生成 *<view id=“idName”></view>,其他標(biāo)簽同理。
    • 微信小程序,自定義組件不支持 id 選擇器,所以注意在組件中要使用類(lèi)選擇器。
    • 圖片加載方式設(shè)置為 lazy-load 表示需要顯示圖片時(shí)才顯示,這樣做能提高界面刷新效率。

    — NEXT —


    落地頁(yè)底部欄:

    本小節(jié),我們布局底部欄,包含用戶協(xié)議,和兩個(gè)按鈕。



    分析界面布局
    • 上下兩層結(jié)構(gòu),內(nèi)部為水平布局。

    先創(chuàng)建一個(gè)bottom容器:
    <view class="bottom-box"></view>

    .bottom-box {position: relative;width: 100%;height: 120rpx; }

    再添加兩個(gè)按鈕和文字:

    <view id="bottom-wrap" style="padding-bottom:{{safeAreaHeight}}rpx;"><view id="kefu" bindtap="tapKefu" hover-class="button-hover"><image id="kefu-icon" mode="widthFix" src="../../images/kefu.png"></image><text id="kefu-txt">咨詢</text></view><button class="button-normal" hover-class="button-hover" bindtap="getUserProfile">購(gòu) 買(mǎi)</button> </view>
    Tips:
    • bindtag ??按鈕點(diǎn)擊事件的回調(diào)函數(shù)名稱(chēng)
    • hover-class ??按鈕選中樣式
    • getUserProfile ??是微信授權(quán)接口,固定寫(xiě)法
    • safeAreaHeight ??是為了適配

    樣式如下:

    #bottom-wrap {position: fixed;width: 100%;bottom: 0;z-index: 1;background: #fff;display: flex;flex-direction: row;/* padding-bottom: constant(safe-area-inset-bottom);padding-bottom: env(safe-area-inset-bottom); */ }#kefu {position: relative;margin-top: 10rpx;margin-left: 30rpx;width: 200rpx;height: 100rpx;display: flex;flex-direction: row;border: 2rpx solid green;border-radius: 100rpx;background-color: #EEE;justify-content: space-evenly;align-items: center; }#kefu-icon {margin: 0;padding: 0;width: 70rpx;height: 70rpx; }#kefu-txt {margin: 0;padding: 0;font-size: 30rpx;line-height: 30rpx;color: green; }.button-normal {position: relative;padding: 0;margin: 10rpx;margin-right: 30rpx !important;width: 400rpx !important;height: 100rpx;display: flex;flex-direction: row;border-radius: 100rpx;background-color: #FF6400;align-items: center;justify-content: center;font-size: 40rpx;color: #fff; }.button-hover {opacity: 0.75; }
    Tips:
    • constant(safe-area-inset-bottom) 和 env(safe-area-inset-bottom)
      是適配 iPhoneX 底部 “Dock” 欄的方法。但是適配的高度偏高,這里還是使用自定義高度。
    • position 是標(biāo)簽需要經(jīng)常使用的定位屬性,一般常用的是
      • position: relative; 相對(duì)位置
      • position: absolute; 絕對(duì)位置,常用于浮動(dòng)在父級(jí)節(jié)點(diǎn)上,不會(huì)撐起父級(jí)容器。
      • position: fixed; 固定位置,常用于固定在界面的下方或者上方,不會(huì)隨著窗體滾動(dòng)而變化位置。

    自定義適配高度,具體計(jì)算規(guī)則在如下代碼中:

    const system = wx.getSystemInfoSync(); const windowHeight = Math.round(system.windowHeight); const safeArea = system.safeArea && system.safeArea.top > 20 ? system.safeArea : { top: 0 }; const safeAreaHeight = safeArea.top / 2;
    • 底部欄需要始終固定在屏幕最下方,所以使用 position: fixed

    客服按鈕,購(gòu)買(mǎi)按鈕

  • 點(diǎn)擊客服按鈕的回調(diào)函數(shù)是 tapKefu
  • 點(diǎn)擊購(gòu)買(mǎi)按鈕的回調(diào)函數(shù)是 getUserProfile

  • 微信登錄授權(quán)

    • getUserProfile 是微信官方提供的接口,用于喚起用戶微信授權(quán)。
      可以獲得用戶的用戶名,微信昵稱(chēng),頭像地址等個(gè)人信息。
      如果用戶不同意,那么不會(huì)獲得相應(yīng)的數(shù)據(jù)。
      并且該 API 無(wú)法主動(dòng)調(diào)起,必須通過(guò)綁定點(diǎn)擊事件。
    wx.getUserProfile({lang: 'zh_CN',desc: '用于完善用戶資料',success: res => {...},fail: err => {...},complete: param => {...} })

    這里包含成功,失敗,還有完成(無(wú)論成功失敗都會(huì)走的),三個(gè)處理函數(shù)。可以在這里實(shí)現(xiàn)業(yè)務(wù)邏輯。



    底部用戶協(xié)議,用戶協(xié)議同意定位


    一般界面都會(huì)設(shè)計(jì)諸如 “用戶協(xié)議”,”個(gè)人信息保護(hù)聲明“,“電信業(yè)務(wù)經(jīng)營(yíng)許可證”,之類(lèi)的信息。


    如下:

    <!-- 備案信息 --> <view class="question-wrap"> <view class="record-wrap"><image class="choose-record"src="{{chooseRecord ? chooseRecordImg : unChooseRecordImg}}"catchtap="tapChoose" /><text>我同意</text><text class="record" catchtap="tapRecord">《個(gè)人信息授權(quán)及保護(hù)聲明》</text><text>和</text><text class="record" catchtap="tapRecord">《用戶協(xié)議》</text> </view> <text class="question-desc">XXXXXXXX公司 京ICP備123456789號(hào)</text> </view>

    其實(shí)就是幾個(gè)文字和URL組成的。

    這里點(diǎn)擊授權(quán)信息,跳轉(zhuǎn)到一個(gè)內(nèi)嵌的 webView 界面,顯示 H5 鏈接。我就暫時(shí)寫(xiě)成 bai du 地址了,可以替換成真實(shí)業(yè)務(wù)地址。

    const h5 = 'www.baidu.com'; const url = `../../pages/commonWebView/commonWebView? url=${encodeURIComponent(h5)}&share=false`; wx.navigateTo({ url });

    commonWebView頁(yè)面也很簡(jiǎn)單,只需要實(shí)現(xiàn)對(duì)應(yīng)的回調(diào)函數(shù)即可,詳細(xì)代碼實(shí)現(xiàn),可下載代碼包,仔細(xì)查看,這里篇幅有限不再占用。


    <web-view src="{{url}}" bindmessage="webViewObserverMessage" bindload="webViewLoadSuccess" binderror="webViewLoadError" />

    — NEXT —


    3 x 3 按鈕組件



    在落地頁(yè)經(jīng)常需要實(shí)現(xiàn)一個(gè)可以點(diǎn)擊的按鈕列表,為用戶提供直觀的可選產(chǎn)品。


    組件使用

  • 創(chuàng)建組件,在根目錄下創(chuàng)建 components 路徑。
  • components 下創(chuàng)建組件文件夾,右鍵文件夾創(chuàng)建組件,文件夾名稱(chēng)和組件名稱(chēng)盡量一致。
  • 在需要引用組件的 wxml 中,以標(biāo)簽形式使用組件。
  • 在需要引用組件的 json 文件 usingComponents 數(shù)組下,添加組件相對(duì)路徑。

  • 這里新建一個(gè) <Fruits></Fruits> 水果按鈕列表組件。


    分析界面結(jié)構(gòu):
    • 縱向三層,整體居中。
    • 第一層是標(biāo)題 “請(qǐng)選擇水果”,外加兩個(gè)小手動(dòng)畫(huà)。內(nèi)部是水平布局。
    • 第二層是 3 x 3 按鈕列表,里面有文字,有點(diǎn)擊事件,有按鈕樣式,整體居中布局。
    • 第三層是一個(gè)居中布局的文字。

    結(jié)構(gòu)很簡(jiǎn)單,開(kāi)始動(dòng)手寫(xiě) wxml

    <view class="title-wrap"> <image class="finger" src="{{fingerImg}}"/> <text>請(qǐng)選擇要購(gòu)買(mǎi)的水果</text> <image class="finger" src="{{fingerImg}}"/> </view><view class="fruits-list"> <view class="fruit" wx:for="{{fruitsList}}" wx:key="index" data-index="{{index}}" catchtap="tapFruit"><text>{{item}}</text><button class="fruit-btn" bindtap="getUserProfile" data-index="{{index}}"></button> </view> </view><view class="tips">{{'*購(gòu)買(mǎi)成功記得五星好評(píng)哦'}}</view>

    樣式:

    .title-wrap {margin: 40rpx auto;padding: 0;display: flex;flex-direction: row;justify-content: space-between;flex-grow: 1;flex-shrink: 1;font-size: 34rpx;color: #000;font-family: PingFangSC-Semibold,PingFang SC; }.finger {width: 44rpx;height: 50rpx; }.fruits-list {position: relative;margin: 0 50rpx;display: flex;flex-flow: row wrap; }.fruit {position: relative;margin: 0 8rpx 24rpx;width: 200rpx;background: #fff;border: 2rpx solid rgba(255, 107, 44, 1);border-radius: 10rpx;font-size: 28rpx;line-height: 72rpx;font-weight: 600;color: rgba(255, 98, 3, 1);text-align: center; }.fruit:nth-child(3n+1) {margin-left: 0; }.fruit:nth-child(3n) {margin-right: 0; }.fruit-btn {background: transparent;width: 100% !important;height: 100%;z-index: 1;position: absolute;top: 0;bottom: 0;left: 0;right: 0; }.tips {margin: 12rpx 30rpx 38rpx;font-size: 24rpx;font-weight: 300;color: #999999;line-height: 24rpx;letter-spacing: 1rpx;text-align: center; }
    Tips:
    • 小手指是上下移動(dòng)的,可以使用CSS關(guān)鍵幀動(dòng)畫(huà)實(shí)現(xiàn)
    • 按鈕列表中,需要綁定按鈕序號(hào),使用 data-index 綁定循環(huán)中的序號(hào)。
    • 節(jié)點(diǎn)自適應(yīng)左右居中常用的方法就是設(shè)置 margin: 0 auto

    這里面用到了 flex-growflex-shrink。著重簡(jiǎn)單介紹一下,因?yàn)檫@兩個(gè)屬性經(jīng)常會(huì)用到。


    flex-grow

    flex-grow 處理父元素在還有剩余空間時(shí)的分配規(guī)則,分為兩種情況。

    即:所有元素的 flex-grow 值之和大于1,和小于1。

  • 大于1時(shí),例如:

    父元素寬600,子元素A和B,寬分別為200,300。還剩余100。

    此時(shí)A,B的 flex-grow 分別為2,3。則剩余100,分給A 2/5,分給B 3/5。

    A,B寬度為:

    200 + 40 = 240300 + 60 = 360
  • 小于1時(shí),作為分母的總和會(huì)引入1來(lái)處理。例如:

    上例中,A,B flex-grow 分別為 0.2,0.3。則分給A 0.2/1,分給B 0.3/1。

    A,B寬度為:

    200 + 20 = 220300 + 30 = 330

    還剩50沒(méi)有分配給任何子元素?cái)U(kuò)張。

  • 另外,flex-grow 還會(huì)受到父元素的 max-width 影響。如果grow后的結(jié)果超出 max-widthmax-width 會(huì)優(yōu)先生效。

  • flex-shrink

    flex-grow 處理父元素剩余空間相對(duì)應(yīng)的,是 flex-shrink 處理父元素空間不足時(shí),子元素的收縮規(guī)則。

    同樣分為兩種情況,所有元素的 flex-shrink 值之和大于1,和小于1。

  • 大于1時(shí),例如:

    父元素寬度為600,子元素寬度為400,300。超出100。

    A,B flex-shrink 分別為 1,2。總權(quán)重為 400 + 300 * 2 = 1000

    A收縮 -100 * 1 * 400 / 1000 = -40B收縮 -100 * 2 * 300 / 1000 = -60

    A,B實(shí)際寬度為:

    400 - 40 = 360300 - 60 = 240
  • 小于1時(shí),例如,

    A,B flex-shrink 分別為 0.1,0.2。總權(quán)重為 400 * 0.1 + 300 * 0.2 = 100
    子元素收縮總和為 100 * 0.3 / 1 = 30

    A收縮 -30 * 0.1 * 400 / 100 = -12B收縮 -30 * 0.2 * 300 / 100 = -18

    A,B實(shí)際寬度為:

    400 - 12 = 388300 - 18 = 282

    多出70沒(méi)有分配給任何子元素收縮。

  • 同樣,也會(huì)受到min-width的限制。

  • 組件傳遞數(shù)據(jù)

    父組件向子組件傳遞數(shù)據(jù)

    在組件的屬性列表中新增參數(shù)字段:

    properties: {option: {type: Boolean,value: true} }

    這個(gè)屬性需要在使用組件的位置賦值,并作為參數(shù)傳遞下去:

    <Fruits option="{{true}}"></Fruits>


    子組件向父組件傳遞數(shù)據(jù)

    在子組件內(nèi) trigger 一個(gè)事件,然后在子組件被引用的位置 bind 事件。并且在事件響應(yīng)函數(shù)中,使用傳遞過(guò)來(lái)的數(shù)據(jù)。

    • Trigger: this.triggerEvent('eventName', { index }); 可以在后面夾帶參數(shù)。

    • Bind: <Fruits option="{{true}}" bindeventName="callBack"></Fruits>

    • CallBack:

      callBack: function (e) {// 事件傳遞過(guò)來(lái)的參數(shù)const index = e.detail.index; }

    CSS關(guān)鍵幀動(dòng)畫(huà)

    為了實(shí)現(xiàn)手指向下的小動(dòng)畫(huà),使用關(guān)鍵幀處理。

    如果在 @keyframes 規(guī)則中指定了 CSS 樣式,動(dòng)畫(huà)將在設(shè)定時(shí)間逐漸從當(dāng)前樣式更改為新樣式。

    .finger:first-child {margin-right: 10rpx;animation: moveDownLeft .9s infinite; }.finger:last-child {margin-left: 10rpx;animation: moveDownRight .9s infinite; }
    • 左右手各使用一個(gè)動(dòng)畫(huà),因?yàn)槿绻褂猛粋€(gè)動(dòng)畫(huà),再Y軸翻轉(zhuǎn)一下也可以。但是會(huì)出現(xiàn)左右動(dòng)畫(huà)不同時(shí)運(yùn)動(dòng)的問(wèn)題。
    • 0.9s 是持續(xù)時(shí)間,infinite 是無(wú)限循環(huán)。

    keyframes :

    @keyframes moveDownLeft {0% {transform: translateY(0rpx);}50% {transform: translateY(9rpx);}100% {transform: translateY(0rpx);} }@keyframes moveDownRight {0% {transform: translateY(0rpx) scale(-1, 1);}50% {transform: translateY(9rpx) scale(-1, 1);}100% {transform: translateY(0rpx) scale(-1, 1);} }

    左手動(dòng)作設(shè)置了從開(kāi)始到一半,再到結(jié)束時(shí)的Y軸位移。右手Y軸動(dòng)作一致,只不過(guò)水平翻轉(zhuǎn)一下。



    — NEXT —


    拼團(tuán)成功組件



    在落地頁(yè)中加入拼團(tuán)成功動(dòng)畫(huà)。同樣也是使用組件實(shí)現(xiàn)。

    動(dòng)畫(huà)效果設(shè)計(jì)為,開(kāi)始顯示兩個(gè)人已在團(tuán)內(nèi),另有一個(gè)人的頭像在拼團(tuán)成功時(shí)飛入第三個(gè)頭像框,表示拼團(tuán)成功。同時(shí)文字由“即將成團(tuán)”變成“拼團(tuán)成功”。并且倒計(jì)時(shí)持續(xù)刷新。拼團(tuán)成功會(huì)有一個(gè)標(biāo)志章顯示出來(lái),然后頭像和拼團(tuán)文字整體向上滾動(dòng),最后刷新出下一組拼團(tuán)頭像。

    最右側(cè)是一個(gè)去拼團(tuán)的點(diǎn)擊按鈕。

    寫(xiě)動(dòng)畫(huà)的難點(diǎn)不是動(dòng)作怎樣寫(xiě),而是整體的節(jié)奏感是否協(xié)調(diào)。

    分析界面布局:

    縱向布局分三層

    • 第一層標(biāo)題,里面水平結(jié)構(gòu),包含三個(gè)文字。
    • 第二層頭像,文字,按鈕,另外還有一個(gè)飛動(dòng)的圖片。這里頭像又可以做成組件。
    • 第三層是一個(gè)拼團(tuán)成功的圖片。

    PinTuan組件

    <view class="wrap"><view class="text-wrap"><text>還差</text><text class="persion-num">{{personNum}}人</text><text>成團(tuán),可直接參與</text></view><view class="pintuan-content"><PinTuanHead class="pin-tuan" headUrls="{{headUrls}}" animation="{{pinTuanAni}}" bindtransitionend="pinTuanAniEnd" isNeedLogin="{{isNeedLogin}}"></PinTuanHead><view class="join" animation="{{pinTuanAni}}" bindtransitionend="pinTuanAniEnd"><text class="join-text">{{joinText}}</text><text class="clock">還剩{{clockText}}</text></view><image animation="{{headAniData}}" bindtransitionend="headAniEnd" class="move-head" src="{{moveHead}}"></image><button class="goGroup" bindtap="getUserProfile">去參團(tuán)</button></view><image wx:if="{{pinTuanSuccess}}" class="successed" src="{{successedImg}}" mode="widthFix"animation="{{successAni}}" bindtransitionend="successAniEnd" style="transform: scale(0.3) opacity(0)"></image><view class="bottom-border"></view> </view>

    animation動(dòng)畫(huà)

    使用animation動(dòng)畫(huà),可以實(shí)現(xiàn)復(fù)雜的動(dòng)作流程。動(dòng)畫(huà)的開(kāi)始和結(jié)束都需要處理邏輯。

    創(chuàng)建動(dòng)畫(huà)后,需要導(dǎo)出一下,代碼實(shí)現(xiàn)如下:

    let ani = wx.createAnimation({delay: 0,duration: 500,timingFunction: 'ease' }); ani.opacity(0).translateY(-30).step(); this.setData({pinTuanAni: ani.export() });

    先設(shè)置動(dòng)畫(huà)屬性,再設(shè)計(jì)動(dòng)畫(huà)運(yùn)動(dòng)軌跡,最后導(dǎo)出:

    • timingFunction: 'ease' 設(shè)置緩動(dòng)效果。
    • ani.opacity(0).translateY(-30).step(); 先透明度為0,然后Y軸坐標(biāo)。
    • step() 表示一組動(dòng)畫(huà)完成。可以在一組動(dòng)畫(huà)中調(diào)用任意多個(gè)動(dòng)畫(huà)方法,一組動(dòng)畫(huà)中的所有動(dòng)畫(huà)會(huì)同時(shí)開(kāi)始,一組動(dòng)畫(huà)完成后才會(huì)進(jìn)行下一組動(dòng)畫(huà)。
    • bindtransitionend 是設(shè)置動(dòng)畫(huà)結(jié)束時(shí)的回調(diào)函數(shù)。

    代碼和樣式請(qǐng)下載資源包,對(duì)應(yīng) PinTuan 文件夾下,因篇幅有限,這里不列出詳細(xì)代碼


    PinTuanHead組件

    分析界面布局:

    三個(gè)頭像,分為頭像背景圖,和真實(shí)頭像圖。并且需要?jiǎng)討B(tài)控制頭像顯示。

    <view class="wrap"><image wx:if="{{person1Show}}" class="icon" src="{{headUrls[0].avatar}}" mode="widthFix"></image><image wx:else class="back" src="{{backImg}}" mode="widthFix"></image><image wx:if="{{person2Show}}" class="icon" src="{{headUrls[1].avatar}}" mode="widthFix"></image><image wx:else class="back" src="{{backImg}}" mode="widthFix"></image><image wx:if="{{person3Show}}" class="icon" src="{{headUrls[2].avatar}}" mode="widthFix"></image><image wx:else class="back" src="{{backImg}}" mode="widthFix"></image> </view>

    代碼和樣式在資源包 PinTuanHead 文件夾

    Tips:
    • 樣式中使用 :nth-child 表示同類(lèi)標(biāo)簽的第幾個(gè)標(biāo)簽。這類(lèi)偽標(biāo)簽可以節(jié)省 wxml 空間,減少 document 渲染的節(jié)點(diǎn)數(shù)量


    — NEXT —


    廣告輪播



    微信提供輪播圖組件,可以設(shè)置輪播間隔,提示點(diǎn),循環(huán)等屬性。

    水平廣告輪播

    設(shè)置一組圖片水平方向循環(huán)輪播

    <swiper class="banner-scroll" indicator-dots="{{true}}" indicator-active-color="skyblue" indicator-color="#fff" autoplay="{{true}}" interval="{{5000}}" circular="{{true}}" duration="{{500}}"><block wx:for="{{swiperList}}" wx:key="*this"><swiper-item><image class="box-image" src="{{item}}" mode="widthFix"/></swiper-item></block> </swiper>

    消息輪播

    左上角設(shè)置縱向消息輪播。

    分析界面布局:
    • 水平布局,左邊是用戶頭像,右邊是文字。
    • 文字顯示分兩種情況,如果是帶拼團(tuán)的,就隨機(jī)顯示“剛剛拼團(tuán)成功”和“剛剛參團(tuán)成功”文字。如果不帶拼團(tuán),就顯示“剛剛搶單成功”。

    <view class="recent-payment-list-wrap"><swiper class="recent-payment-list" vertical="{{true}}" autoplay="{{true}}" interval="{{3000}}" circular="{{true}}"duration="{{500}}" capture-catch:touchmove='preventTouchMove'><block wx:for="{{recentPaymentUsers}}" wx:for-index="index" wx:key="index"><swiper-item><view class="recent-payment-cell"><view class="recent-payment-cell-content"><image class="recent-payment-avatar" src="{{item.avatar}}" mode="aspectFill" /><view class="recent-payment-name">{{item.name}}</view><view wx:if="{{showPinTuan}}"><view wx:if="{{item.pinTuanRandom}}" style="flex-shrink: 0;">剛剛拼團(tuán)成功</view><view wx:else style="flex-shrink: 0;">剛剛參團(tuán)成功</view></view><view wx:else style="flex-shrink: 0;">剛剛搶單成功</view></view><view style="flex-grow: 1;"></view></view></swiper-item></block></swiper></view>

    代碼和樣式在資源包,landingpage 文件夾下


    — NEXT—


    下浮層

    點(diǎn)擊水果按鈕,彈出注冊(cè)手機(jī)號(hào)下浮層。如果已經(jīng)注冊(cè)手機(jī)號(hào),彈出訂單詳情彈窗。


    切換下浮層顯示通過(guò) promptStatus 值為0或者1決定。

    下浮層封裝為組件 FruitPrompt,自定義組件的顯隱,不能通過(guò)設(shè)置 hidden 實(shí)現(xiàn)。可以設(shè)置 wx:if 條件判斷顯示。

    為了方便處理下浮層的顯示,設(shè)置一個(gè)浮層基類(lèi)組件 PromptFruitPrompt 繼承自 Prompt

    Prompt:

    <view class='prompt {{slowDown?"hideOpacity":""}}' data-type="mask" catchtap='closeCallback' catchtouchmove='touchMove'><view class='container {{slowDown?"slowDown":""}}' catchtap='catchEvent'><view class='title'>{{title}}</view><image src='{{iconClose}}' class='icon' catchtap='closeCallback' data-type="button" /><slot></slot><view wx:if="{{showButton}}" class='btnContainer'><button class="menuBtn" bindtap="btnCallback">{{btnText}}</button></view></view> </view>

    注冊(cè)手機(jī)號(hào),獲取驗(yàn)證碼,驗(yàn)證碼倒計(jì)時(shí)

    分析界面布局

    縱向布局:

    • 手機(jī)號(hào)和驗(yàn)證碼用到 input 標(biāo)簽。
    • 輸入手機(jī)號(hào)和驗(yàn)證碼之后,“獲取驗(yàn)證碼” 按鈕高亮,并可以點(diǎn)擊。
    <block wx:if="{{status === 1}}"><view class="section-title">注冊(cè)手機(jī)號(hào)</view><view class="phone-cell"><text>*</text><input type="number" maxlength="11" placeholder="點(diǎn)擊輸入手機(jī)號(hào)" class="input" value="{{phoneNumber}}"focus="{{phoneNumberFocus}}" bindinput="phoneInput" /></view><view class="phone-cell"><text>*</text><view class="input-wrap"><input type="number" maxlength="6" placeholder="請(qǐng)輸入驗(yàn)證碼" placeholder-class="input-placeholder" class="input"value="{{verifyCode}}" bindinput="verifyInput" /><view class="verify-button" hover-class="verify-btn-hover" hover-stay-time="100"style="{{inputCodeButtonStyle}}" catchtap="tapGetVerifyCode">{{inputCodeButtonTitle || '獲取驗(yàn)證碼'}}</view></view></view><view class="section-title">商品信息</view><view class="order-info-wrap"><view class="order-info-name">自定義文字內(nèi)容</view><view class="order-info-time">2021:01:01 00:00-2021:12:31 00:00</view></view> </block>

    注冊(cè)手機(jī)號(hào),需要實(shí)現(xiàn)驗(yàn)證碼功能,點(diǎn)擊獲取驗(yàn)證碼,校驗(yàn)手機(jī)號(hào)輸入合法性。合法則申請(qǐng)驗(yàn)證碼,并且進(jìn)入 60s 倒計(jì)時(shí)。

    驗(yàn)證碼倒計(jì)時(shí)部分,利用 setInterval 封裝一個(gè)公共的倒計(jì)時(shí)函數(shù),提供異步回調(diào)函數(shù)。

    function initCountdown({isCheck: isCheck = false,name: name,timeTotal: timeTotal,timeInterval: timeInterval,checkCallback: checkCallback,timeChangedCallback: timeChangedCallback,endCallback: endCallback }) {if (typeof name !== 'string' || !name) {return;}const countdownInterval = countdownMap[name];if (countdownInterval) {clearInterval(countdownMap[name].interval);} else if (isCheck) {if (typeof checkCallback === 'function') {checkCallback();}return;} else {countdownMap[name] = {timeTotal: timeTotal,timeInterval: timeInterval};}if (typeof timeChangedCallback === 'function') {timeChangedCallback(countdownMap[name].timeTotal);}countdownMap[name].interval = setInterval(() => {if (countdownMap[name].timeTotal <= 0) {clearInterval(countdownMap[name].interval);delete countdownMap[name];if (typeof endCallback === 'function') {endCallback();}return;}countdownMap[name].timeTotal -= countdownMap[name].timeInterval;if (typeof timeChangedCallback === 'function') {timeChangedCallback(countdownMap[name].timeTotal);}}, countdownMap[name].timeInterval); }

    在點(diǎn)擊驗(yàn)證碼按鈕時(shí),觸發(fā)倒計(jì)時(shí)。

    initCountdownManager(isCheck) {countdownManager.initCountdown({isCheck: isCheck,name: 'bindPhone.verifyCode',timeTotal: 60000,timeInterval: 1000,checkCallback: () => {this.data.countingdown = false;},timeChangedCallback: countdown => {this.setData({inputCodeButtonTitle: `重新發(fā)送(${parseInt(countdown / 1000)}s)`,inputCodeButtonStyle: 'color: #CCCCCC;'});},endCallback: () => {this.setData({inputCodeButtonTitle: '重新發(fā)送',inputCodeButtonStyle: 'color: #FF8134;'});this.data.countingdown = false;}}); }
    Tips:
    • setData 函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層(異步),同時(shí)改變對(duì)應(yīng)的 this.data 的值(同步)。
    • 如果更新數(shù)據(jù)之后,沒(méi)有使用 setData 函數(shù)
      例如: this.data.countingdown = false 則只是將數(shù)據(jù)寫(xiě)入 this.data,不能刷新界面顯示。

    訂單詳情

    設(shè)計(jì)顯示售罄標(biāo)記,先到先得標(biāo)記。


    分析界面布局:

    縱向結(jié)構(gòu);

    • 水果按鈕列表,3 x 3 列表。
    • 按鈕右上角設(shè)置標(biāo)簽。
    • 訂單介紹,保質(zhì)期時(shí)長(zhǎng)。介紹按鈕右上角有標(biāo)簽。
    <block wx:if="{{status === 0}}"><view class="choose-wrap"><view class="section-title">請(qǐng)選擇要購(gòu)買(mǎi)的水果</view><view class="choose-fruit-list"><viewclass="choose-fruit-item {{fruit.soldout ? 'item-soldout' : '' }} {{fruit.disable ? 'item-disable' : '' }}"wx:for="{{fruits}}" wx:for-item="fruit" wx:for-index="index" wx:key="*this" data-index="{{index}}"catchtap="tapChooseFruit">{{fruit.title}}</view></view><block wx:if="{{!currentFruit.soldout}}"><view class="section-title"><text>選擇水果發(fā)貨時(shí)間</text><text class="choose-fruit-tips">新鮮水果,好吃不貴</text></view><scroll-view enable-flex="true" scroll-y class="choose-term-list"><view class="choose-term-item {{term.selected ? 'item-selected' : ''}}" wx:for="{{chooseTerms}}"wx:for-item="term" wx:for-index="termIndex" wx:key="*this" data-index="{{termIndex}}"catchtap="tapChooseTerm"><text>{{term.name}}</text><view class="choose-term-item-tips">{{term.tip}}</view></view></scroll-view></block><block wx:else><view class="soldout-title">該水果已售罄</view><view class="soldout-desc">到貨第一時(shí)間聯(lián)系您</view></block></view> </block>

    代碼和樣式請(qǐng)下載資源包,對(duì)應(yīng) FruitPrompt 文件夾下,因篇幅有限,這里不列出詳細(xì)代碼

    Notification 監(jiān)聽(tīng)者模式

    處理邏輯,經(jīng)常需要用到監(jiān)聽(tīng)者模式。實(shí)際原理很簡(jiǎn)單,只需一個(gè)數(shù)組,將需要監(jiān)聽(tīng)的對(duì)象和鉤子函數(shù)壓棧,然后在捕獲到鉤子時(shí),在出棧。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-9cV8cQRN-1633762407320)(soldout.png)]

    const observerList = [];// 添加觀察者 function addObserver(notificationName, selector, target) {const observer = {name: notificationName,target: target,selector: selector}observerList.push(observer); }
    // 發(fā)送通知 function postNotification(notificationName, data = {}) {for (let i = 0; i < observerList.length; i++) {const observer = observerList[i];if (notificationName === observer.name) {observer.selector(data);}} }

    — NEXT —


    Toast 提示彈窗

    封裝各種提示彈窗。使用 wx.showToast 我們?cè)俜庋b一層,可以提示各種自定義信息,也可以加自定義 icon


    // 文字提示框 function showTextToast(title, cb, seconds, mask = true) {showToast({title: title,icon: 'none',mask: mask,callback: cb,seconds: seconds}) }// 加載提示框 function showLoadingToast(title, cb, seconds) {showToast({title: title,icon: 'loading',mask: true,callback: cb,seconds: seconds}) }// 成功提示框 function showSuccessToast(title, cb, seconds) {showToast({title: title,icon: 'success',mask: true,callback: cb,seconds: seconds}) }// 錯(cuò)誤提示框 function showErrorToast(title, cb, seconds) {showToast({title: title,image: 'XXXX',icon: 'none',mask: true,callback: cb,seconds: seconds}) }// 文字提示框 function showToast({title: title,icon: icon,image: image,mask: mask,callback: callback,seconds: seconds }) {if (!title) {if (callback) {callback()}return;}if (!seconds) {seconds = 1.7;}wx.showToast({title: title,icon: icon,image: image,mask: mask,duration: seconds * 1000});setTimeout(function () {if (callback) {callback()}}, seconds * 1000); }

    總結(jié)

    微信小程序開(kāi)發(fā),常用標(biāo)簽和 style 樣式并不多,很容易掌握。


    常用 wxml 標(biāo)簽:

    • view 當(dāng)作節(jié)點(diǎn)使用
    • image 圖片
    • text 文字
    • block 不占位標(biāo)簽
    • swiper 輪播
    • scroll-view 滾動(dòng)層
    • web-view H5內(nèi)嵌
    • input 輸入框
    • button 按鈕

    常用 style 樣式

    • position: relative, absolute, fixed 設(shè)定節(jié)點(diǎn)坐標(biāo)
    • margin, padding 設(shè)定節(jié)點(diǎn)邊距,margin是外邊距,padding是內(nèi)邊距
    • display 設(shè)定元素的顯示類(lèi)型
    • width, height 寬高
    • top, bottom, left, right 設(shè)定 absolute 坐標(biāo)后設(shè)定上,下,左,右,間距
    • background 背景,可以設(shè)定顏色,背景圖片,背景尺寸
    • z-index Z 軸優(yōu)先級(jí)
    • font 字體,可以設(shè)定字體庫(kù),字體顏色,陰影,描邊,字體大小,字間距,行間距
    • border 邊框,圓角,自定義邊角
    • animation 動(dòng)畫(huà),可以設(shè)定逐幀動(dòng)畫(huà),也可以綁定動(dòng)畫(huà)事件

    常用技巧

    居中:

    • 左右居中:父節(jié)點(diǎn)需要設(shè)置 display:flex; 然后子節(jié)點(diǎn)設(shè)置 margin: 0 auto; 子節(jié)點(diǎn)可以水平左右居中。
    • 節(jié)點(diǎn)內(nèi)容居中:同樣,也需要父節(jié)點(diǎn)設(shè)置 display:flex; 然后父節(jié)點(diǎn)再設(shè)置 align-items: center; 可以實(shí)現(xiàn)內(nèi)部元素水平和垂直都居中。
    • 文字水平居中:設(shè)置父節(jié)點(diǎn) text-align: center; 可以實(shí)現(xiàn)內(nèi)部文字水平居中。
    • 文字垂直居中:text 標(biāo)簽 font-sizeline-height 設(shè)置一致時(shí),文字垂直居中。
    • 依靠元素顯示類(lèi)型居中:display: flex; justify-content: center; // 水平居中 vertical-align: middle; // 垂直居中

    — NEXT —


    代碼下載

    鏈接: 百度云盤(pán)下載
    密碼: 9ia8
    云盤(pán)二維碼:

    總結(jié)

    以上是生活随笔為你收集整理的零基础微信落地页小程序实战项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    超碰在线网 | 一区二区三区在线免费 | 成人小视频在线 | 美女久久久久久 | 国产精品99在线播放 | 国产不卡精品 | 夜夜夜夜夜夜操 | 激情电影在线观看 | 天天射日| 亚洲春色奇米影视 | 超碰97国产精品人人cao | 日韩av电影中文字幕在线观看 | 97视频总站| 色婷婷综合五月 | 99色精品视频 | 成年人在线看视频 | 国产国语在线 | 91豆花在线观看 | 丁香久久综合 | 日韩精品一区二区三区三炮视频 | 9999毛片| 一区二区视频免费在线观看 | 91自拍成人| 精品嫩模福利一区二区蜜臀 | 久久高清av | 中文字幕一区二区三区久久蜜桃 | 国产一级性生活 | 天天操夜夜干 | 久久久影院官网 | 中文字幕 欧美性 | 国产伦精品一区二区三区四区视频 | 久久撸在线视频 | 国产精品久久久久久久久久久久久久 | 韩国av电影在线观看 | 久久av一区二区三区亚洲 | 国产精品久久久久aaaa | 中文字幕视频 | 91大神在线观看视频 | 一区二区三区在线免费观看视频 | 久久不射电影院 | 久久久久夜色 | 久久99精品久久久久久久久久久久 | 日日成人网 | 亚洲黄色软件 | 久久久高清一区二区三区 | 色偷偷888欧美精品久久久 | 久久久精品欧美一区二区免费 | 五月婷婷丁香 | 国产精品一区二区三区免费看 | 国精产品满18岁在线 | 亚洲蜜桃在线 | 黄色成人av| 在线观看国产日韩 | 日韩在线电影一区二区 | 97成人精品视频在线观看 | 午夜精品一区二区三区在线视频 | 激情五月开心 | 欧美一级免费黄色片 | 国产一区在线精品 | 97精品国产97久久久久久 | 午夜 在线| 久久人人爽人人爽人人片av软件 | 成人av免费播放 | 91自拍91| 久久国产精品99久久久久久丝袜 | 免费视频一级片 | 免费a网址 | 国产免费视频一区二区裸体 | 日韩黄色免费电影 | 日韩二区三区在线观看 | 国产精品第二十页 | 草久久久久 | 二区视频在线观看 | 国产高清一级 | 日韩欧美视频免费看 | 国产涩涩在线观看 | 国产精品日韩久久久久 | 日韩高清免费在线 | 中文字幕第一 | 成人久久免费视频 | 精品久久久久国产 | 国产一级精品在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 国产在线精品福利 | 国产在线观看 | 久久在现视频 | 日韩久久一区 | 久久人人添人人爽添人人88v | 九九色在线 | 亚洲乱码国产乱码精品天美传媒 | 天天摸天天弄 | 免费网站在线观看人 | 成人久久18免费网站麻豆 | 最新亚洲视频 | 四虎在线观看视频 | 久久免费资源 | 玖玖爱免费视频 | 日本不卡一区二区三区在线观看 | 国产精品亚州 | 国产黄在线免费观看 | 欧美一区成人 | 在线观看久久久久久 | 亚洲伦理电影在线 | 色天天| 亚洲五月综合 | 亚洲精品视频大全 | 日韩丝袜在线观看 | 999国内精品永久免费视频 | 成人理论电影 | 性色va| 777奇米四色| 免费高清无人区完整版 | 色欧美88888久久久久久影院 | 五月婷婷在线播放 | 日本久久久久久久久 | 亚洲 成人 一区 | 丁香六月婷 | 免费观看一区 | 色婷婷综合久久久久中文字幕1 | 国产无吗一区二区三区在线欢 | 国产成人av一区二区三区在线观看 | 国产福利91精品一区二区三区 | 97超碰人人看 | 欧美精品在线视频 | 在线观看中文字幕dvd播放 | 国产在线观| 日韩视频一区二区在线观看 | 国产中文| 992tv在线观看网站 | 欧美日韩国产综合一区二区 | 国产色影院 | 久久综合九色99 | 98精品国产自产在线观看 | av在线电影免费观看 | 久久精品导航 | 国产一级精品在线观看 | 91成人短视频在线观看 | 亚洲国产中文字幕在线观看 | 91亚洲激情 | 欧美极度另类性三渗透 | 国产主播大尺度精品福利免费 | 久久国精品 | 香蕉在线观看 | 成人在线视 | 久久国产精品99久久久久久老狼 | 免费网站色 | 久久99久久99 | 国产成人精品在线观看 | 亚洲精品 在线视频 | 在线观看一级片 | 中文字幕视频一区二区 | 色视频 在线 | 日韩高清精品免费观看 | 99久久久久久久 | 激情五月婷婷综合网 | 麻豆传媒在线视频 | 人人澡人| 精品人妖videos欧美人妖 | 免费在线观看黄网站 | 亚洲va欧美va人人爽 | 日韩精品一区二区三区视频播放 | 亚洲精品国偷拍自产在线观看 | 国产精品69av | 欧美一级欧美一级 | 视频一区二区在线观看 | 91激情视频在线播放 | 国产一区在线不卡 | 亚洲v欧美v国产v在线观看 | 91九色在线播放 | 亚洲精色 | 成人在线观看免费 | 亚洲综合激情五月 | www.成人sex | 亚洲成人资源 | 91在线区 | 深夜国产福利 | 亚洲作爱视频 | 国产成人精品久久久久蜜臀 | 男女免费视频观看 | 日日婷婷夜日日天干 | 黄色毛片在线 | 99久久这里有精品 | 国产日韩欧美视频在线观看 | 黄色a在线观看 | 免费a现在观看 | 国产馆在线播放 | 午夜精品一区二区三区免费 | 久久高清免费视频 | 日韩三级免费 | 久草在线免费新视频 | 午夜三级毛片 | 国产精品成人av久久 | 成人黄色免费观看 | 成人网在线免费视频 | 久久精品一区二区三区国产主播 | 天天操综合网 | 免费在线色 | 国产精品久久久久四虎 | 欧美动漫一区二区三区 | 日日操日日 | 在线观看国产成人av片 | 天堂入口网站 | 精品一区二区免费 | 精品免费视频 | 色狠狠操 | 成人丝袜 | 国产99中文字幕 | 干 操 插 | 国产精品一区二区视频 | 久久成人国产精品免费软件 | 有码中文字幕在线观看 | 美女国产精品 | 日韩com| www五月天| 噜噜色官网 | 国产在线永久 | 香蕉免费在线 | 久久久久久高潮国产精品视 | 国产资源免费 | 久久国产精品免费观看 | 久久天 | 国产 字幕 制服 中文 在线 | 国产综合婷婷 | 99在线播放 | 在线免费观看欧美日韩 | 美女国产在线 | 日本 在线 视频 中文 有码 | 亚洲一级黄色av | 91视频大全| 久久久久草 | av专区在线 | 亚洲精品视频偷拍 | 国产剧情一区二区在线观看 | 黄色片免费电影 | 亚洲高清久久久 | 久久久久国产视频 | 天天干干 | 免费成人在线网站 | 狠狠干综合网 | 日韩电影在线观看一区二区 | 九色91在线视频 | 成人中心免费视频 | 亚洲成av人片在线观看www | 久久精品国产精品亚洲 | 久久免费黄色网址 | 亚洲精品三级 | 日韩久久网站 | 免费看的黄色 | 久久精品视频在线观看 | 久久国产欧美日韩精品 | 97超级碰碰| 久热av | 日韩在线免费高清视频 | 国内丰满少妇猛烈精品播 | 国产一级片在线播放 | 国产精品久久久久久久久久久杏吧 | 最近乱久中文字幕 | www.五月激情.com| 久久综合久久综合久久综合 | 日韩激情中文字幕 | www.夜夜骑.com| 久久亚洲影院 | 人人添人人澡人人澡人人人爽 | 开心激情五月网 | 五月激情视频 | 中文字幕4| 看黄色91 | 天堂av高清 | 国产九色在线播放九色 | 婷婷色伊人 | 国产99久久精品一区二区300 | 91人人澡 | 国产精品午夜久久久久久99热 | 久久久久久久久影视 | 911久久| 日本在线精品视频 | 日韩亚洲在线视频 | 久久国产经典视频 | 国产麻豆精品久久一二三 | 日韩极品在线 | 亚洲一二区视频 | 久久久不卡影院 | 欧洲精品亚洲精品 | 狠狠干电影 | 中文字幕xxxx | 成人在线观看免费视频 | 色999视频 | 在线有码中文字幕 | 午夜视频在线观看一区二区三区 | 国产伦理久久精品久久久久_ | 成人在线视频免费看 | 四虎国产精 | 在线观看亚洲精品 | 99久久久| 91视频在线 | 中文字幕精品一区久久久久 | 成人污视频在线观看 | 成 人 免费 黄 色 视频 | 四虎国产精品免费 | 亚洲一区二区黄色 | 成人一区二区三区在线 | 久草在线免费新视频 | 日本高清中文字幕有码在线 | 亚洲免费国产视频 | 国产精品 欧美 日韩 | 国产亚洲成av片在线观看 | 五月婷婷六月丁香在线观看 | 精品国产1区二区 | 在线中文字幕观看 | 天天爽天天碰狠狠添 | 国产成人免费在线观看 | 天天做天天爱天天综合网 | 久草在线费播放视频 | 色视频网站免费观看 | 精品成人在线 | 国产视频一二区 | 黄色av免费 | 国产一区二区视频在线 | 国产一级片播放 | www免费黄色 | 综合在线亚洲 | 亚洲日韩精品欧美一区二区 | 色综合欧洲 | 青青色影院 | 99麻豆久久久国产精品免费 | 久久人人爽视频 | 国产精品观看视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 午夜三级福利 | 一区二区三区在线看 | 日韩午夜网站 | 成人在线视频免费看 | av中文字幕第一页 | 成人三级av| 日日干干夜夜 | 久久不射电影院 | 深爱五月网 | 欧美日韩国产精品一区二区 | 我爱av激情网 | 国产成人精品区 | 99久久99| 久久久久久久久电影 | 国产在线免费 | www.色婷婷.com| 国产成人一区二区三区久久精品 | 在线香蕉视频 | 午夜影院日本 | 国产成人99久久亚洲综合精品 | 久久精品99国产精品酒店日本 | 欧美激情亚洲综合 | 91在线入口| 久艹在线播放 | 免费裸体视频网 | 久久精品这里热有精品 | 国产 一区二区三区 在线 | 日韩久久久久久久久久久久 | 不卡的av | 99国产免费网址 | 久草精品视频在线观看 | 日本黄色特级片 | 在线a视频 | 日韩高清在线一区二区三区 | 在线免费高清视频 | 狂野欧美激情性xxxx | 国产色女 | 九九在线免费视频 | 国产不卡av在线 | 五月婷婷一区 | 国产小视频在线免费观看 | 欧美日韩高清在线 | 91精品国产91久久久久久三级 | 国产精品久久久精品 | 国产精品麻豆视频 | 成年人免费电影在线观看 | 亚洲人成人天堂h久久 | 久久久久久久久毛片精品 | 国产一区二区在线免费播放 | 在线看日韩av | 亚洲精品在线观看免费 | 天天操人人干 | 一区二区视频在线播放 | 久久黄色小说 | 欧美在线观看视频免费 | 日韩三级久久 | 成人精品福利 | 白丝av在线 | 中文 一区二区 | 成人小视频在线 | 美女天天操 | 激情网站五月天 | 五月激情五月激情 | 午夜精品一区二区三区可下载 | 成人午夜影院 | 69夜色精品国产69乱 | 美女视频黄是免费的 | 午夜在线观看一区 | 久草视频在线免费看 | 久久国产精品一国产精品 | 伊人中文在线 | 久久久久福利视频 | 日韩精品视频在线观看网址 | 婷婷丁香九月 | 欧美另类69 | 成人理论在线观看 | 亚洲美女久久 | 午夜电影一区 | 欧美日韩伦理在线 | 天堂久久电影网 | 日韩最新在线视频 | 五月激情在线 | 亚洲精品网址在线观看 | 日韩av免费一区 | 九九热在线精品视频 | 西西大胆免费视频 | 天堂av网在线| 97视频免费在线 | 色多多视频在线观看 | 日韩电影在线一区二区 | 久久久免费 | 嫩嫩影院理论片 | 午夜国产在线观看 | 91免费观看视频网站 | 日韩精品高清视频 | 久久精品亚洲一区二区三区观看模式 | 99综合电影在线视频 | 伊甸园av在线 | 亚洲欧美婷婷六月色综合 | 在线中文字幕电影 | 久久夜夜操 | 久久久久这里只有精品 | 最近中文字幕mv免费高清在线 | 27xxoo无遮挡动态视频 | 欧美性色xo影院 | 久久精品久久综合 | 伊人手机在线 | 国产麻豆果冻传媒在线观看 | www.福利视频 | 亚洲最新av在线网站 | 国产在线观看99 | 久草9视频 | 91激情小视频 | 插久久 | 日韩v欧美v日本v亚洲v国产v | 免费看一及片 | 色av资源网 | 日韩中文字幕91 | 综合色影院 | 丁香久久五月 | 国产视频一级 | 一区二区精品在线观看 | 亚洲综合视频在线观看 | 成人app在线播放 | а中文在线天堂 | www.久热 | 奇米777777| 91重口视频| 国产剧情一区二区在线观看 | av中文在线播放 | 日韩色爱 | 欧美极品裸体 | 成人污视频在线观看 | 欧美久久久一区二区三区 | 91丨九色丨高潮丰满 | 99精品视频免费观看视频 | 美女福利视频一区二区 | 欧美日韩精品免费观看视频 | av中文在线| 成人免费看电影 | 亚洲国产欧美在线人成大黄瓜 | 黄在线免费看 | 国产精品久久精品 | 免费视频99 | 亚洲国产影院 | 韩国一区二区三区在线观看 | 国产一区网 | 久久久免费精品国产一区二区 | 在线观看国产麻豆 | 精品国产欧美一区二区三区不卡 | 久久亚洲综合色 | 日韩视频一二三区 | 久久久福利 | 在线播放 日韩专区 | 东方av在线免费观看 | 国产成人福利在线 | 久久国色夜色精品国产 | 日韩精品久久久久 | 天天搞夜夜骑 | 欧美日韩1区 | 人人草在线观看 | 搡bbbb搡bbb视频 | 91精品在线播放 | 欧美小视频在线观看 | 99久久精品国产观看 | 五月婷婷,六月丁香 | 亚洲电影第一页av | 日韩精品不卡在线 | 日韩av免费在线看 | 国产在线91精品 | 天天色棕合合合合合合 | 午夜视频在线观看一区二区 | 亚洲国产欧美一区二区三区丁香婷 | 日韩av片免费在线观看 | 久久精品一二三区 | 国内少妇自拍视频一区 | 日韩激情网 | 青青草国产精品 | 337p欧美 | 激情黄色一级片 | 成人亚洲精品久久久久 | 国产色拍拍拍拍在线精品 | 国产黄色片免费 | 少妇bbbb揉bbbb日本 | 精品久操 | 91视频电影 | 国产精品国产三级国产不产一地 | 成人9ⅰ免费影视网站 | 成人综合婷婷国产精品久久免费 | 亚洲另类视频在线观看 | 午夜三级理论 | 99免费精品 | 日韩av不卡在线 | 在线观看免费av网站 | 国产精品9999久久久久仙踪林 | 人人射| 久久久高清视频 | 天天操天天干天天爱 | a视频在线看| 久久精品首页 | 天天操天 | 欧美一区二区三区四区夜夜大片 | 五月天电影免费在线观看一区 | 天天综合久久 | 色婷婷色 | 五月天视频网 | 亚洲理论在线 | 中文字幕在线播放第一页 | 人人干人人艹 | 亚洲最新视频在线播放 | 在线欧美中文字幕 | 色婷婷97 | 亚洲精品视频久久 | 韩国av免费观看 | 91视频xxxx| 久久久精品网 | 伊人成人精品 | 欧美国产一区二区 | 国产精品久久久久久久久久东京 | 成人黄在线 | 国产精久久 | 99热精品国产一区二区在线观看 | 久久免费国产精品 | 国产精品欧美在线 | 在线亚洲成人 | 人人澡人| 亚洲精品一区二区三区在线观看 | 国产免费激情久久 | 国产视频久久久久 | 久久综合五月天 | 美女免费网视频 | 日韩免费电影网 | 日本性生活免费看 | 成人理论电影 | 中文字幕在线资源 | 国产精品视频地址 | 黄色三级在线看 | 亚洲自拍偷拍色图 | 国产又粗又猛又爽又黄的视频先 | 日韩一二三 | 永久黄网站色视频免费观看w | 亚洲欧美va | 最新高清无码专区 | 九九九热视频 | 日韩av在线一区二区 | 丁香婷婷激情国产高清秒播 | 日韩欧美精品一区二区三区经典 | 天天干天天射天天操 | 亚洲免费不卡 | 成 人 黄 色 片 在线播放 | 香蕉视频导航 | 久久久久综合 | 国产精品久久久999 国产91九色视频 | 精品国产一区二区三区在线 | 五月婷婷国产 | 中文字幕丝袜制服 | 91香蕉视频色版 | 国产亚洲欧美精品久久久久久 | 四虎影视成人精品 | 伊人国产女 | 国产91在线观 | 偷拍福利视频一区二区三区 | 黄色特一级片 | 日韩在线中文字幕视频 | 精品一区二区久久久久久久网站 | 午夜视频免费在线观看 | 久久午夜精品视频 | 人人澡人人添人人爽一区二区 | 久久视频在线视频 | 色婷婷伊人 | 中文字幕在线视频第一页 | 五月亚洲综合 | 久久综合色8888 | 精品一二三四五区 | 日韩在线在线 | 免费看v片| 国产精品久久久久永久免费观看 | 天天激情在线 | 成人国产在线 | 日韩欧美一区二区三区黑寡妇 | 亚洲国产高清在线 | 精品二区久久 | 99福利片 | 亚洲一级免费观看 | 国产男女爽爽爽免费视频 | 日夜夜精品视频 | 91精品系列 | 午夜精品电影 | 最近久乱中文字幕 | 亚洲国产视频a | 天天操天天操天天操天天 | 91最新国产 | 青春草视频| 欧美日韩3p | 国产亚洲视频中文字幕视频 | 国产我不卡 | 在线视频1卡二卡三卡 | 国产午夜一级毛片 | 国产精品v欧美精品 | 国产日韩欧美精品在线观看 | 国产精成人品免费观看 | 五月的婷婷 | 久久电影日韩 | 玖玖爱国产在线 | 四虎国产精 | 成人在线观看资源 | 日韩av在线网站 | 久久久激情视频 | 天天综合色 | 精品国产a | 手机av电影在线观看 | 欧美疯狂性受xxxxx另类 | 欧美精品被 | 九色自拍视频 | 日韩高清免费无专码区 | 亚洲综合色激情五月 | 日日操操| 91天天操 | 国产在线欧美 | 日日干干夜夜 | 毛片随便看| 久久婷亚洲五月一区天天躁 | 天天色天天综合网 | 日韩av在线免费看 | 亚洲国产精品电影 | 成人午夜剧场在线观看 | 欧美一级片在线 | 免费欧美高清视频 | 久久视精品 | 免费日韩 | 蜜臀av性久久久久蜜臀av | 日韩乱码在线 | av青草| 亚一亚二国产专区 | 欧美久久久| 天天激情在线 | 久久久久久久久网站 | 亚洲国产成人av网 | 黄色三级在线 | 日本三级不卡视频 | 久久线视频 | 国产成人99av超碰超爽 | 亚洲va欧美| 亚洲精品免费在线播放 | 综合网色 | 国产精品一区二区久久国产 | 国产国产人免费人成免费视频 | 中文字幕专区高清在线观看 | 欧美亚洲国产精品久久高清浪潮 | 日韩欧三级| 国产又黄又硬又爽 | 4438全国亚洲精品在线观看视频 | 国产手机免费视频 | 亚洲综合涩 | 97成人资源站 | 久久久久黄色 | 亚洲午夜激情网 | 婷婷久久综合九色综合 | zzijzzij日本成熟少妇 | 麻豆传媒视频在线播放 | 国产精品久久久久久久久蜜臀 | 字幕网在线观看 | 亚洲视频,欧洲视频 | 久免费视频 | 91精品国产91久久久久福利 | 日本黄色免费网站 | 久操视频在线免费看 | 国产一区二区视频在线播放 | 久久国产精品视频观看 | 免费观看一级视频 | 美女在线免费观看视频 | 最近最新最好看中文视频 | 亚洲电影毛片 | 欧美福利网站 | 99久久婷婷国产一区二区三区 | 中文在线最新版天堂 | 天天操天天射天天插 | 人人搞人人爽 | 激情五月婷婷丁香 | 射射色| 国产精品毛片一区二区三区 | 国产 视频 高清 免费 | av黄色影院 | 插久久 | 久久艹精品| 国产精品久久99精品毛片三a | 日韩一区视频在线 | 日韩精品欧美专区 | 亚洲91网站 | 欧美精品免费在线 | 免费日韩一区二区三区 | 亚洲情影院 | 中文字幕免费观看 | 国产资源在线免费观看 | 日本乱码在线 | 成人在线电影观看 | 国产精品入口麻豆 | 亚洲精品欧美视频 | 又大又硬又黄又爽视频在线观看 | 亚洲中字幕 | 亚洲精品乱码 | 亚洲一区二区三区毛片 | 色综合天天做天天爱 | 在线观看亚洲免费视频 | 亚州欧美视频 | 综合网伊人 | 天无日天天操天天干 | 国产亚洲精品久久 | 亚洲国产精品99久久久久久久久 | 91精品国产自产在线观看 | av色影院 | 欧美一区二区三区在线 | 久久国产亚洲视频 | 免费观看91视频大全 | 中文字幕资源网在线观看 | 欧美在线视频不卡 | 久久精品www人人爽人人 | 97免费在线观看视频 | 久久高清免费 | 国产精品黄色 | 日本中文字幕一二区观 | 99热免费在线 | 黄色毛片在线观看 | 超碰人人在 | 999久久久免费视频 午夜国产在线观看 | 欧美福利网址 | 天天干天天爽 | 97视频在线免费 | av超碰免费在线 | 狠狠色丁香久久婷婷综合丁香 | 亚洲精品自在在线观看 | 伊人六月 | 亚洲第一av在线播放 | 天天插综合网 | 国产黄a三级三级三级三级三级 | 狠狠色噜噜狠狠 | 国模一二三区 | 国产精品av电影 | 91精品国产99久久久久久久 | 激情五月婷婷综合网 | 日本精品久久久一区二区三区 | 国产精品嫩草影视久久久 | 国产美女精彩久久 | 91麻豆视频网站 | 中文一区二区三区在线观看 | 最近中文字幕mv免费高清在线 | 免费观看av| 久久精美视频 | 国产日韩精品在线观看 | 久久激情综合网 | 伊人久久一区 | 激情开心站 | 亚洲色图激情文学 | 久久夜靖品 | 日韩欧美一区二区在线 | 黄色国产高清 | 亚洲午夜久久久久久久久电影网 | 久久手机免费观看 | 亚洲爱爱视频 | 美女性爽视频国产免费app | 国产少妇在线观看 | 99久久精品久久久久久清纯 | 免费欧美高清视频 | 国产在线精品一区二区三区 | 亚洲精品免费在线视频 | 欧美日本中文字幕 | 天天爱天天操 | 一区二区三区精品久久久 | 黄色av免费电影 | 国产精品第一 | 免费a视频在线观看 | www.五月婷| 婷婷在线色 | 综合国产在线观看 | 夜夜爽天天爽 | 91精品视频在线观看免费 | 成人精品国产免费网站 | 高清日韩一区二区 | 色av网站 | 一区二区视频在线播放 | 手机成人av在线 | 国产精品18久久久久久久网站 | 国产999精品久久久久久 | 亚洲精品美女久久久久 | 2019中文字幕第一页 | 国产综合91 | 狠狠色丁香婷综合久久 | 激情六月婷婷久久 | 2020天天干夜夜爽 | 久久精品麻豆 | 插久久| 81精品国产乱码久久久久久 | 国产一区av在线 | 国产香蕉视频在线观看 | 久久久国产精品久久久 | 久久精品国产精品亚洲 | 中文字幕丝袜制服 | 草在线视频| 日韩亚洲在线视频 | www久久精品| 免费看黄色小说的网站 | 一本一本久久a久久精品综合小说 | 久久免费精品一区二区三区 | 97色涩 | 国产免费久久久久 | 日韩欧美在线视频一区二区三区 | 色婷婷激情五月 | 亚洲精品视频中文字幕 | 99精品偷拍视频一区二区三区 | 久久高清免费视频 | 欧美日一级片 | 手机av观看| 成年人视频在线 | 国产高清视频在线播放一区 | 亚洲国产视频网站 | 97超碰超碰 | 五月婷婷视频在线观看 | 在线观看视频福利 | 在线视频app | 92中文资源在线 | 国产精品v欧美精品 | 探花视频免费观看 | 色欲综合视频天天天 | 激情影院在线观看 | 久久综合久久综合这里只有精品 | 91成人免费在线 | 激情开心 | 国产手机免费视频 | 天堂av免费 | 久草在线免费看视频 | 91在线入口| 欧美一级黄色视屏 | 久久精品视频网 | 天天干夜夜操视频 | 国产精品不卡 | 97超碰中文字幕 | 久久草 | av中文字幕在线看 | 九九热只有这里有精品 | 亚洲欧美日韩国产精品一区午夜 | 日韩最新在线 | 色视频在线观看 | 国产xxxx| 国产成人精品一区二区三区免费 | 狠狠干天天操 | 亚洲成人av电影在线 | 97在线精品国自产拍中文 | 就要色综合 | 国产精品视频永久免费播放 | 91看片网址 | www99精品| 91人人澡人人爽人人精品 | 在线观看视频你懂 | 一区免费视频 | 999电影免费在线观看 | 国产爽妇网 | 91精品蜜桃 | 国产在线探花 | 丁香av| 中文字幕第 | 久久综合久久八八 | 日日夜夜综合网 | 欧美国产视频在线 | 亚洲视频分类 | 91一区一区三区 | 日韩影片在线观看 | 在线视频 亚洲 | 99精彩视频在线观看免费 | 日韩在观看线 | 国产精品国产三级国产不产一地 | www.人人干| 在线国产一区二区三区 | 国产手机在线观看视频 | 成人免费视频播放 | 男女精品久久 | 亚洲午夜精品在线观看 | 成人免费xyz网站 | 日日插日日干 | www.亚洲精品 | 97超碰在线资源 | 天天爽天天碰狠狠添 | 天天艹天天爽 | 香蕉视频4aa | 91av电影在线观看 | 亚洲视频在线观看网站 | 美女天天操 | 国产精品久久久久久电影 | 国产精品9区 | 亚洲最快最全在线视频 | 超碰97人人干 | 日韩在线电影一区 | 最新国产中文字幕 | 久久精品一二区 | 91豆花在线 | 天天色影院 | 91精品视频免费 | 日日日爽爽爽 | 国产黄影院色大全免费 | 色综合天天做天天爱 | 一区二区视频免费在线观看 | 狠色在线 | 三级a毛片| 狠狠综合久久 | 99色婷婷 | 四虎www.| 久草线 | 在线视频1卡二卡三卡 | 二区三区精品 | 色婷婷激情电影 | 亚洲精品久久久久中文字幕二区 | 国产精品大片在线观看 | 免费观看国产成人 | 99久久久国产精品免费99 | 国产精品视频永久免费播放 | 韩国av电影在线观看 | 午夜av在线 | 色播六月天| 国产精品日韩在线 | 五月婷网站 | 国内外成人免费在线视频 | 在线观看免费版高清版 | 美女亚洲精品 | 国产亚洲亚洲 | 久久免费视频国产 | 麻豆视频免费在线 | 伊人久久一区 | 国产精品区一区 | 亚洲精品88欧美一区二区 | 国产一二区视频 | 亚洲视频专区在线 | 天天拍天天爽 | 久久精品一区二区三 | 亚洲高清精品在线 | 国产精品日韩高清 | 免费日韩一区二区三区 | 免费观看十分钟 | 天天插天天干 | 中文字幕一区二区三区精华液 | 久久99精品国产麻豆宅宅 | 九九综合九九 | 狠狠色噜噜狠狠狠狠 | 欧美国产在线看 | 久热色超碰| 婷婷在线免费观看 | 最新国产在线观看 | 69性欧美| 久草视频在线播放 | 97在线观看免费观看 | 最新极品jizzhd欧美 | 欧美中文字幕久久 | 亚洲无吗视频在线 | 毛片网站在线观看 | 欧美激情一区不卡 | 丝袜美腿在线播放 | 午夜视频黄 | 超碰成人网| 91成人精品 | 日韩在线第一区 | 国产精品久久久视频 | 黄色一级免费 | 色多视频在线观看 | 久久免费在线观看视频 | 精品亚洲免费 | 亚洲精品天天 | 91亚洲国产成人久久精品网站 | 亚洲美女精品视频 | 狠狠色免费 | 婷婷丁香在线视频 | 99久久久国产免费 | 午夜丁香视频在线观看 |