92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

HBuilderX uni-app簡單實現靜態登錄頁面(實例)

2023-4-24    前端達人

本章用到......uni-app頁面跳轉uni.navigateTo方法、uni.navigateBack方法。uni-app簡單實現郵箱驗證碼發送點擊后讀秒樣式。登錄賬號、密碼正則表達式驗證等

適合剛入門的小伙伴,大佬就沒必要看了

靜態頁面!靜態頁面!沒有綁定后端數據接口

目錄

一、HBuilderX下載

二、創建uni-app項目

pages.json配置文件

三、登錄頁面

 login.vue頁面

login.css文件

四、手機短信驗證頁面

 phoneVerify.vue頁面

 phoneVerify.css文件

五、找回密碼頁面

findBack.vue頁面

findBack.css文件

六、郵箱找回密碼頁面

 mailFandBack.vue頁面

mailFandBack.css文件

七、郵箱發送驗證成功頁面

 emailFinish.vue頁面

emailFinish.css文件


一、HBuilderX下載

https://dcloud.io/hbuilderx.html

 官網直接下載解壓即可

二、創建uni-app項目

文件-新建-項目

 我這里直接選擇默認模板,Vue版本、uniCloud自行選擇即可

 創建完成后自動生成文件夾

 文件名這里自動生成原本是index,文件名自行定義即可

頁面文件自己新建Vue文件即可

pages.json配置文件

注意?。∵@個文件后續如果需要新添加新頁面時這個文件里一定要配置參數不然頁面出不來,代碼格式看下面代碼↓↓↓↓↓↓↓↓↓


  1. {
  2. // 設置單頁面
  3. "pages": [ //pages數組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages
  4. {
  5. "path": "pages/login/login",
  6. "style": {
  7. // 設置頂部導航欄
  8. "navigationBarTitleText": "",
  9. "navigationBarBackgroundColor": "#FFFFFF"
  10. }
  11. },
  12. {
  13. "path": "pages/login/findBack",
  14. "style": {
  15. "navigationBarTitleText": "找回密碼"
  16. }
  17. },
  18. {
  19. "path": "pages/login/mailFindBack",
  20. "style": {
  21. "navigationBarTitleText": "郵箱找回密碼"
  22. }
  23. },
  24. {
  25. "path": "pages/login/phoneVerify",
  26. "style": {
  27. "navigationBarTitleText": "",
  28. "navigationBarBackgroundColor": "#FFFFFF"
  29. }
  30. },
  31. {
  32. "path": "pages/login/emailFinish",
  33. "style": {
  34. "navigationBarTitleText": ""
  35. }
  36. }
  37. {
  38. //新添加的Vue頁面配置?。?!
  39. "path": "",
  40. "style": {
  41. "navigationBarTitleText": ""
  42. }
  43. }
  44. ],
  45. // 設置全部頁面
  46. "globalStyle": {
  47. "navigationBarTextStyle": "black",
  48. "navigationBarTitleText": "uni-app",
  49. "navigationBarBackgroundColor": "#F8F8F8",
  50. "backgroundColor": "#F8F8F8"
  51. },
  52. "uniIdRouter": {},
  53. // 設置底部導航欄
  54. "tabBar": {
  55. }
  56. }

類似navigationBarTitleText(導航欄text)、navigationBarBackgroundColor(導航欄背景色)等等屬性可以查看相關資料自行配置即可

pages里設置單頁面參數,每個頁面配置對應path路徑參數

globalStyle里設置全局頁面參數

js、josn、scss文件等等其他配置文件這里就不多說了自行研究吧?。?!因為我也還沒搞清楚到底怎么用哈哈哈

進入正題↓↓↓↓↓↓↓↓↓↓↓↓↓代碼看著有些亂........湊合看慢慢理解吧

代碼里的src圖片鏈接自行修改?。。。。ㄟ€有css里的URL)

三、登錄頁面

先看一下效果圖

 login.vue頁面


  1. <!-- 登錄頁面 -->
  2. <template>
  3. <view class="flex-col flex-auto group">
  4. <text class="self-center text_2" v-if="type==1000">手機號登錄</text>
  5. <text class="self-center text_2" v-if="type==2000">賬號登錄</text>
  6. <!-- 手機號登錄 -->
  7. <view class="" v-if="type==1000">
  8. <view class="flex-col justify-start items-start text-wrapper">
  9. <input type="text" class="font_1" @input="onInput" placeholder="請輸入手機號" v-model="phoneNumber">
  10. </view>
  11. <!-- svg畫線 -->
  12. <view style="height: 1px;">
  13. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  14. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  15. </svg>
  16. </view>
  17. <view class="flex-col justify-start items-start text-wrapper_2">
  18. <input type="text" password="true" class="font_1" @input="onInput" placeholder="請輸入密碼" v-model="phonePassword">
  19. </view>
  20. <!-- svg畫線 -->
  21. <view style="height: 1px;">
  22. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  23. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  24. </svg>
  25. </view>
  26. </view>
  27. <!-- 賬號登錄 -->
  28. <view class="" v-if="type==2000">
  29. <view class="flex-col justify-start items-start text-wrapper">
  30. <input type="text" class="font_1" @input="onInput" placeholder="請輸入用戶名" v-model="idNumber">
  31. </view>
  32. <!-- svg畫線 -->
  33. <view style="height: 1px;">
  34. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  35. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  36. </svg>
  37. </view>
  38. <view class="flex-col justify-start items-start text-wrapper_2">
  39. <input type="text" password="true" class="font_1" @input="onInput" placeholder="請輸入用戶密碼" v-model="idPassword">
  40. </view>
  41. <!-- svg畫線 -->
  42. <view style="height: 1px;">
  43. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  44. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  45. </svg>
  46. </view>
  47. </view>
  48. <view class="self-start font_1 text_3" @click="type=2000" v-if="type==1000">用賬號登錄</view>
  49. <view class="self-start font_1 text_3" @click="type=1000" v-if="type==2000">用手機號登錄</view>
  50. <!-- 登錄按鈕1 -->
  51. <view class="flex-col justify-start items-center button" v-if="btnShow">
  52. <button class="font_1 text_4" @click="onSubmit">登 錄</button>
  53. </view>
  54. <!-- 登錄按鈕2 -->
  55. <view class="flex-col justify-start items-center button2" v-else>
  56. <button class="font_1 text_66">登 錄</button>
  57. </view>
  58. <view class="flex-row justify-between group_2" v-if="type==1000">
  59. <text class="font_2" @click="onPageJump('/pages/login/phoneVerify')">短信驗證碼登錄</text>
  60. <text class="font_2" @click="onPageJump('/pages/login/findBack')">找回密碼</text>
  61. </view>
  62. <view class="flex-row justify-between group_3" v-else>
  63. <text class="font_2" @click="onPageJump('/pages/login/findBack')">找回密碼</text>
  64. </view>
  65. </view>
  66. </template>
  67. <script>
  68. export default {
  69. components:{
  70. },
  71. data() {
  72. return {
  73. type: 1000, //判斷登錄類型手機登錄或賬號登錄
  74. phoneNumber:'', //手機賬號
  75. phonePassword:'', //手機密碼
  76. idNumber:'', //賬號
  77. idPassword:'', //賬號密碼
  78. btnShow:false, //判斷登錄按鈕顯示隱藏
  79. timeOut:null, //添加定時器
  80. }
  81. },
  82. onLoad() {
  83. },
  84. created() {
  85. },
  86. // 方法
  87. methods: {
  88. // 找回密碼跳轉頁面
  89. onPageJump(url) {
  90. uni.navigateTo({
  91. url: url
  92. });
  93. },
  94. // 判斷顯示登錄按鈕
  95. onInput() {
  96. this.timeOut && clearTimeout(this.timeOut)
  97. this.timeOut = setTimeout(() => {
  98. if (this.type == 1000) {
  99. if (this.phoneNumber && this.phonePassword) {
  100. this.btnShow = true;
  101. } else {
  102. this.btnShow = false;
  103. }
  104. } else {
  105. if (this.idNumber && this.idPassword) {
  106. this.btnShow = true;
  107. } else {
  108. this.btnShow = false;
  109. }
  110. }
  111. }, 100);
  112. },
  113. // 點擊登錄
  114. onSubmit(){
  115. // 判斷登錄方式為手機號登錄
  116. if(this.type==1000){
  117. // 判斷驗證手機號
  118. if(!this.phoneNumber){
  119. uni.showToast({
  120. title: '請輸入手機號',
  121. icon: 'none',
  122. });
  123. return;
  124. }
  125. const phoneNumber= /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;
  126. if(!phoneNumber.test(this.phoneNumber)){
  127. uni.showToast({
  128. title: '手機號輸入不正確',
  129. icon: 'none',
  130. });
  131. return;
  132. }
  133. // 判斷驗證手機密碼
  134. if(!this.phonePassword){
  135. uni.showToast({
  136. title: '請輸入密碼',
  137. icon: 'none',
  138. });
  139. return;
  140. }
  141. uni.showToast({
  142. title: '正在登錄',
  143. icon: 'loading',
  144. });
  145. }else{
  146. // 判斷驗證賬號
  147. if(!this.idNumber){
  148. uni.showToast({
  149. title: '請輸入賬號',
  150. icon: 'none',
  151. });
  152. return;
  153. }
  154. // 判斷驗證賬號密碼
  155. if(!this.idPassword){
  156. uni.showToast({
  157. title: '請輸入賬號密碼',
  158. icon: 'none',
  159. });
  160. return;
  161. }
  162. uni.showToast({
  163. title: '正在登錄',
  164. icon: 'loading',
  165. });
  166. }
  167. },
  168. }
  169. }
  170. </script>
  171. <style>
  172. @import"../../style/css/login.css";
  173. </style>

一個小tips:

先說一下這個頁面↑↑↑↑↑↑↑↑↑↑↑↑↑↑

svg因為我這里賬號、密碼input輸入框的border邊框要設置成小數1px以下0.1px、0.2px、0.3px等等,所以這里用了svg的畫圖,如果有小伙伴碰到同樣問題可以參考一下,不需要的直接style里直接設置border參數即可

uni.showToast是uni-app彈出框的方法直接用就行,參數么。。自己研究研究就行   (例:icon圖標參數有四種類型none、loading、success、error)

style外部引用css樣式直接用@import相對路徑即可

login.css文件

style樣式最好還是用自己寫的就別直接復制了,我這里用的是平臺自動生成的所以比較亂隨便看看就行了看多了頭疼(僅供參考全局樣式可以直接略過)


  1. /************************************************************
  2. ** 全局樣式 ** **
  3. ************************************************************/
  4. html {
  5. font-size: 16px;
  6. }
  7. body {
  8. margin: 0;
  9. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
  10. 'Droid Sans', 'Helvetica Neue', 'Microsoft Yahei', sans-serif;
  11. -webkit-font-smoothing: antialiased;
  12. -moz-osx-font-smoothing: grayscale;
  13. }
  14. view,
  15. image,
  16. text {
  17. box-sizing: border-box;
  18. flex-shrink: 0;
  19. }
  20. #app {
  21. width: 100vw;
  22. height: 100vh;
  23. }
  24. .flex-row {
  25. display: flex;
  26. flex-direction: row;
  27. }
  28. .flex-col {
  29. display: flex;
  30. flex-direction: column;
  31. }
  32. .justify-start {
  33. justify-content: flex-start;
  34. }
  35. .justify-end {
  36. justify-content: flex-end;
  37. }
  38. .justify-center {
  39. justify-content: center;
  40. }
  41. .justify-between {
  42. justify-content: space-between;
  43. }
  44. .justify-around {
  45. justify-content: space-around;
  46. }
  47. .justify-evenly {
  48. justify-content: space-evenly;
  49. }
  50. .items-start {
  51. align-items: flex-start;
  52. }
  53. .items-end {
  54. align-items: flex-end;
  55. }
  56. .items-center {
  57. align-items: center;
  58. }
  59. .items-baseline {
  60. align-items: baseline;
  61. }
  62. .items-stretch {
  63. align-items: stretch;
  64. }
  65. .self-start {
  66. align-self: flex-start;
  67. }
  68. .self-end {
  69. align-self: flex-end;
  70. }
  71. .self-center {
  72. align-self: center;
  73. }
  74. .self-baseline {
  75. align-self: baseline;
  76. }
  77. .self-stretch {
  78. align-self: stretch;
  79. }
  80. .flex-1 {
  81. flex: 1 1 0%;
  82. }
  83. .flex-auto {
  84. flex: 1 1 auto;
  85. }
  86. .grow {
  87. flex-grow: 1;
  88. }
  89. .grow-0 {
  90. flex-grow: 0;
  91. }
  92. .shrink {
  93. flex-shrink: 1;
  94. }
  95. .shrink-0 {
  96. flex-shrink: 0;
  97. }
  98. .relative {
  99. position: relative;
  100. }
  101. /* ---------------------------------------------------------------------- */
  102. .group {
  103. padding: 20px 40px 10px;
  104. overflow-y: auto;
  105. }
  106. .text_2 {
  107. color: #020202;
  108. font-size: 20px;
  109. font-family: 'PingFang SC';
  110. line-height: 28px;
  111. text-align: center;
  112. }
  113. .text-wrapper {
  114. margin-top: 42px;
  115. padding-bottom: 12px;
  116. /* border-bottom: solid 1px #888888; */
  117. }
  118. .font_1 {
  119. width: 100%;
  120. font-size: 15px;
  121. font-family: 'PingFang SC';
  122. line-height: 21px;
  123. color: #00000;
  124. }
  125. .text-wrapper_2 {
  126. padding: 20px 0 12px;
  127. /* border-bottom: solid 1px #888888; */
  128. }
  129. .text_3 {
  130. margin-top: 22px;
  131. color: #166bf8;
  132. }
  133. /* 登錄按鈕1 */
  134. .button button {
  135. margin-top: 324px;
  136. padding: 8px 0 11px;
  137. /* background-color: #166bf880; */
  138. background-image: url('。。。。。。。。。。。。。。。。。。。。');
  139. background-size: 100% 100%;
  140. background-repeat: no-repeat;
  141. border-radius: 5px;
  142. width: 100%;
  143. }
  144. .text_4 {
  145. color: #ffffff;
  146. }
  147. .group_2 {
  148. padding: 50px 62px;
  149. }
  150. .group_3 {
  151. padding: 50px 42%;
  152. }
  153. .font_2 {
  154. font-size: 12px;
  155. font-family: 'PingFang SC';
  156. line-height: 17px;
  157. color: #555555;
  158. }
  159. /* 登錄按鈕2*/
  160. .button2 button{
  161. width: 100%;
  162. margin-top: 324px;
  163. padding: 8px 0 11px;
  164. background-color: #166bf880;
  165. border-radius: 5px;
  166. line-height: 21px;
  167. font-size: 15px;
  168. }
  169. .text_66 {
  170. color: #ffffff;
  171. }

四、手機短信驗證頁面

點擊登錄頁面上的短信驗證碼登錄后跳轉到此頁,跳轉方法會用到uni.navigateTo方法在登錄頁面看代碼自行理解吧↑↑↑↑↑↑↑↑↑↑↑

跳轉、返回的方法參考文檔:

https://www.bookstack.cn/read/uniapp-api/spilt.5.ead34267bd06d88a.mdhttps://www.bookstack.cn/read/uniapp-api/spilt.5.ead34267bd06d88a.md

注意?。√砑有马撁娴臅r候上面的↑↑↑↑↑↑↑↑↑↑↑pages.json配置文件也需要添加對應的頁面配置才行不然頁面出不來

效果圖:

 phoneVerify.vue頁面


  1. <!-- 手機驗證找回密碼 -->
  2. <template>
  3. <view class="flex-col flex-auto group">
  4. <text class="self-center text_2">手機號+短信驗證碼登錄</text>
  5. <view class="flex-col group_2 space-y-10">
  6. <input type="number" class="self-start font_1" @input="onInput" placeholder="請輸入手機號碼" v-model="phoneNumber">
  7. <!-- svg畫線 -->
  8. <view style="height: 1px;">
  9. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  10. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  11. </svg>
  12. </view>
  13. <view class="flex-row justify-between group_3">
  14. <input type="number" class="self-start font_1 text_4" maxlength="6" @input="onInput" placeholder="請輸入驗證碼" v-model="code">
  15. <view class="flex-col justify-start items-center self-center text-wrapper">
  16. <!-- <text class="font_1 text_3" @click="onSetCode()">獲取驗證碼</text> -->
  17. <text v-bind:class="{acquire:isGrey,again:!isGrey}"
  18. v-bind:disabled="dis" type="primary"
  19. @click="onSetCode">
  20. <span v-if="show">獲取驗證碼</span>
  21. <span v-else>重新發送({{count}}s)</span>
  22. </text>
  23. </view>
  24. </view>
  25. <!-- svg畫線 -->
  26. <view style="height: 1px;">
  27. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  28. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  29. </svg>
  30. </view>
  31. </view>
  32. <view class="self-start font_1 text_5" @click="onPageJump('/pages/login/login')">用密碼登錄</view>
  33. <view class="flex-col justify-start items-center button" v-if="btnShow">
  34. <button class="font_1 text_6" @click="onSubmit()">登 錄</button>
  35. </view>
  36. <!-- 登錄按鈕2 -->
  37. <view class="flex-col justify-start items-center button2" v-else>
  38. <button class="font_1 text_66">登 錄</button>
  39. </view>
  40. <text class="self-center text_7" @click="onPageJump('/pages/login/findBack')">找回密碼</text>
  41. </view>
  42. </template>
  43. <script>
  44. export default {
  45. components: {
  46. },
  47. data() {
  48. return {
  49. phoneNumber:'', //手機號驗證
  50. code:'', //驗證碼
  51. dis: false, //判斷是否禁用狀態
  52. show: true, //判斷顯示為發送還是重新發送
  53. isGrey: false, //class判斷按鈕樣式
  54. timer: null, //設置計時器,
  55. count: "", //定義常量
  56. num:'', //判斷是否為第一次點擊
  57. btnShow:false, //判斷登錄按鈕顯示隱藏
  58. timeOut:null, //添加定時器
  59. };
  60. },
  61. // 方法
  62. methods: {
  63. // 找回密碼跳轉頁面
  64. onPageJump(url) {
  65. uni.navigateTo({
  66. url: url
  67. });
  68. },
  69. // 發送驗證碼
  70. onSetCode() {
  71. let TIME_COUNT = 60;
  72. if (!this.timer) {
  73. uni.showToast({
  74. title: '已發送驗證碼',
  75. icon: 'success',
  76. });
  77. this.count = TIME_COUNT;
  78. this.isGrey = true;
  79. this.show = false;
  80. this.dis = true;
  81. this.timer = setInterval(() => {
  82. if (this.count > 0 && this.count <= TIME_COUNT) {
  83. this.count--;
  84. } else {
  85. this.dis = false;
  86. this.isGrey = false;
  87. this.show = true;
  88. clearInterval(this.timer);
  89. this.timer = null;
  90. }
  91. }, 1000);
  92. }
  93. },
  94. // 判斷顯示登錄按鈕
  95. onInput() {
  96. this.timeOut && clearTimeout(this.timeOut)
  97. this.timeOut = setTimeout(() => {
  98. if (this.phoneNumber && this.code) {
  99. this.btnShow = true;
  100. } else {
  101. this.btnShow = false;
  102. }
  103. }, 100);
  104. },
  105. //點擊登錄
  106. onSubmit(){
  107. // 判斷驗證手機號
  108. if(!this.phoneNumber){
  109. uni.showToast({
  110. title: '請輸入手機號',
  111. icon: 'none',
  112. });
  113. return;
  114. }
  115. const phoneNumber= /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;
  116. if(!phoneNumber.test(this.phoneNumber)){
  117. uni.showToast({
  118. title: '手機號輸入不正確',
  119. icon: 'none',
  120. });
  121. return;
  122. }
  123. // 判斷驗證碼
  124. if(!this.code){
  125. uni.showToast({
  126. title: '請輸入驗證碼',
  127. icon: 'none',
  128. });
  129. return;
  130. }
  131. uni.showToast({
  132. title: '請稍后...',
  133. icon: 'loading',
  134. });
  135. },
  136. },
  137. };
  138. </script>
  139. <style>
  140. @import"../../style/css/phoneVerify.css";
  141. /* 驗證碼按鈕樣式 */
  142. .acquire{
  143. padding: 3px 0px;
  144. background-color: #eeeeee;
  145. border-radius: 5px;
  146. width: 92px;
  147. height: 29px;
  148. color: #666;
  149. font-size: 14px;
  150. line-height: 20px;
  151. text-align: center;
  152. }
  153. .again{
  154. padding: 3px 0px;
  155. background-color: #eeeeee;
  156. border-radius: 5px;
  157. width: 92px;
  158. height: 29px;
  159. color: #000000;
  160. font-size: 14px;
  161. line-height: 20px;
  162. text-align: center;
  163. }
  164. </style>

這個頁面因為是靜態的沒有后端接口只是做的樣式,所以驗證碼讀秒這塊內容刷新頁面時會重置重新開始讀秒這里注意一下就行,如果接后端接口實現的話原理也差不多自己慢慢理解就行

大概就長這樣:

至于左上角這個返回鍵的小鈕鈕是uni-app創建項目時自帶的 pages.json配置文件可以配置關閉 用("navigationStyle":"custom")這個參數就能關閉,單頁面關閉在pages里配置,全部關閉在globalStyle里配置。

大概長這樣:

也可以在Vue頁面的方法里用uni.navigateBack方法自己寫一個返回的方法。uni.navigateBack返回頁面的方法具體怎么用↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓后面的頁面會有用到

 phoneVerify.css文件


  1. /************************************************************
  2. ** 全局樣式 **
  3. ************************************************************/
  4. html {
  5. font-size: 16px;
  6. }
  7. body {
  8. margin: 0;
  9. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
  10. 'Droid Sans', 'Helvetica Neue', 'Microsoft Yahei', sans-serif;
  11. -webkit-font-smoothing: antialiased;
  12. -moz-osx-font-smoothing: grayscale;
  13. }
  14. view,
  15. image,
  16. text {
  17. box-sizing: border-box;
  18. flex-shrink: 0;
  19. }
  20. #app {
  21. width: 100vw;
  22. height: 100vh;
  23. }
  24. .flex-row {
  25. display: flex;
  26. flex-direction: row;
  27. }
  28. .flex-col {
  29. display: flex;
  30. flex-direction: column;
  31. }
  32. .justify-start {
  33. justify-content: flex-start;
  34. }
  35. .justify-end {
  36. justify-content: flex-end;
  37. }
  38. .justify-center {
  39. justify-content: center;
  40. }
  41. .justify-between {
  42. justify-content: space-between;
  43. }
  44. .justify-around {
  45. justify-content: space-around;
  46. }
  47. .justify-evenly {
  48. justify-content: space-evenly;
  49. }
  50. .items-start {
  51. align-items: flex-start;
  52. }
  53. .items-end {
  54. align-items: flex-end;
  55. }
  56. .items-center {
  57. align-items: center;
  58. }
  59. .items-baseline {
  60. align-items: baseline;
  61. }
  62. .items-stretch {
  63. align-items: stretch;
  64. }
  65. .self-start {
  66. align-self: flex-start;
  67. }
  68. .self-end {
  69. align-self: flex-end;
  70. }
  71. .self-center {
  72. align-self: center;
  73. }
  74. .self-baseline {
  75. align-self: baseline;
  76. }
  77. .self-stretch {
  78. align-self: stretch;
  79. }
  80. .flex-1 {
  81. flex: 1 1 0%;
  82. }
  83. .flex-auto {
  84. flex: 1 1 auto;
  85. }
  86. .grow {
  87. flex-grow: 1;
  88. }
  89. .grow-0 {
  90. flex-grow: 0;
  91. }
  92. .shrink {
  93. flex-shrink: 1;
  94. }
  95. .shrink-0 {
  96. flex-shrink: 0;
  97. }
  98. .relative {
  99. position: relative;
  100. }
  101. /* ------------------------------------------------ */
  102. .group {
  103. padding: 30px 40px 60px;
  104. overflow-y: auto;
  105. }
  106. .text_2 {
  107. color: #020202;
  108. font-size: 20px;
  109. font-family: 'PingFang SC';
  110. line-height: 28px;
  111. }
  112. .group_2 {
  113. margin-top: 42px;
  114. /* border-bottom: solid 1px #888888; */
  115. }
  116. .space-y-10 > view:not(:first-child),
  117. .space-y-10 > text:not(:first-child),
  118. .space-y-10 > image:not(:first-child) {
  119. margin-top: 10px;
  120. }
  121. .font_1 {
  122. font-size: 15px;
  123. font-family: 'PingFang SC';
  124. line-height: 21px;
  125. color: #000000;
  126. }
  127. .group_3 {
  128. padding: 5px 0;
  129. /* border-top: solid 1px #888888; */
  130. }
  131. .text_4 {
  132. margin-top: 8px;
  133. }
  134. .text-wrapper {
  135. padding: 4px 0;
  136. background-color: #eeeeee;
  137. border-radius: 5px;
  138. width: 92px;
  139. height: 29px;
  140. }
  141. .text_3 {
  142. color: #000000;
  143. font-size: 14px;
  144. line-height: 20px;
  145. }
  146. .text_5 {
  147. margin-top: 22px;
  148. color: #166bf8;
  149. }
  150. .button button{
  151. margin-top: 324px;
  152. padding: 8px 0 11px;
  153. /* background-color: #166bf880; */
  154. background-image: url('。。。。。。。。。。。。。。。。。。。。。。');
  155. background-size: 100% 100%;
  156. background-repeat: no-repeat;
  157. border-radius: 5px;
  158. width: 100%;
  159. }
  160. .text_6 {
  161. color: #ffffff;
  162. }
  163. .text_7 {
  164. margin-top: 50px;
  165. color: #555555;
  166. font-size: 12px;
  167. font-family: 'PingFang SC';
  168. line-height: 17px;
  169. }
  170. /* 登錄按鈕2*/
  171. .button2 button{
  172. width: 100%;
  173. margin-top: 324px;
  174. padding: 8px 0 11px;
  175. background-color: #166bf880;
  176. border-radius: 5px;
  177. line-height: 21px;
  178. font-size: 15px;
  179. }
  180. .text_66 {
  181. color: #ffffff;
  182. }

五、找回密碼頁面

在登錄頁面點擊找回密碼后跳轉到此頁面

同樣在pages.json文件里配置對應頁面參數↑↑↑↑↑↑↑↑↑

效果圖:

 點擊通過手機號跳轉到手機短信驗證頁面 也就是第四步的頁面點擊通過郵箱驗證跳轉到郵箱驗證頁面 也就是第六步的頁面

findBack.vue頁面


  1. <!-- 找回密碼 -->
  2. <template>
  3. <view class="flex-col justify-start flex-auto group_3">
  4. <view class="flex-col section">
  5. <view class="flex-row justify-between items-center group_4" @click="onPageJump('/pages/login/phoneVerify')">
  6. <text class="font_1">通過已綁定手機號,用短信驗證登錄</text>
  7. <image
  8. class="image_5"
  9. src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/637d8bf95a7e3f031010c80e/63e351ec66570000128a304a/16758423632990405565.png"
  10. />
  11. </view>
  12. <view class="flex-row justify-between items-center group_4" @click="onPageJump('/pages/login/mailFindBack')">
  13. <text class="font_1">通過已綁定郵箱重設密碼</text>
  14. <image
  15. class="image_5"
  16. src="。。。。。。。。。。。。。。。"
  17. />
  18. </view>
  19. </view>
  20. </view>
  21. </template>
  22. <script>
  23. export default {
  24. components: {},
  25. data() {
  26. return {
  27. };
  28. },
  29. methods: {
  30. onPageJump(url) {
  31. uni.navigateTo({
  32. url:url
  33. })
  34. },
  35. },
  36. };
  37. </script>
  38. <style>
  39. @import"../../style/css/findBack.css";
  40. </style>

findBack.css文件


  1. /************************************************************
  2. ** 全局樣式 **
  3. ************************************************************/
  4. html {
  5. font-size: 16px;
  6. }
  7. body {
  8. margin: 0;
  9. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
  10. 'Droid Sans', 'Helvetica Neue', 'Microsoft Yahei', sans-serif;
  11. -webkit-font-smoothing: antialiased;
  12. -moz-osx-font-smoothing: grayscale;
  13. }
  14. view,
  15. image,
  16. text {
  17. box-sizing: border-box;
  18. flex-shrink: 0;
  19. }
  20. #app {
  21. width: 100vw;
  22. height: 100vh;
  23. }
  24. .flex-row {
  25. display: flex;
  26. flex-direction: row;
  27. }
  28. .flex-col {
  29. display: flex;
  30. flex-direction: column;
  31. }
  32. .justify-start {
  33. justify-content: flex-start;
  34. }
  35. .justify-end {
  36. justify-content: flex-end;
  37. }
  38. .justify-center {
  39. justify-content: center;
  40. }
  41. .justify-between {
  42. justify-content: space-between;
  43. }
  44. .justify-around {
  45. justify-content: space-around;
  46. }
  47. .justify-evenly {
  48. justify-content: space-evenly;
  49. }
  50. .items-start {
  51. align-items: flex-start;
  52. }
  53. .items-end {
  54. align-items: flex-end;
  55. }
  56. .items-center {
  57. align-items: center;
  58. }
  59. .items-baseline {
  60. align-items: baseline;
  61. }
  62. .items-stretch {
  63. align-items: stretch;
  64. }
  65. .self-start {
  66. align-self: flex-start;
  67. }
  68. .self-end {
  69. align-self: flex-end;
  70. }
  71. .self-center {
  72. align-self: center;
  73. }
  74. .self-baseline {
  75. align-self: baseline;
  76. }
  77. .self-stretch {
  78. align-self: stretch;
  79. }
  80. .flex-1 {
  81. flex: 1 1 0%;
  82. }
  83. .flex-auto {
  84. flex: 1 1 auto;
  85. }
  86. .grow {
  87. flex-grow: 1;
  88. }
  89. .grow-0 {
  90. flex-grow: 0;
  91. }
  92. .shrink {
  93. flex-shrink: 1;
  94. }
  95. .shrink-0 {
  96. flex-shrink: 0;
  97. }
  98. .relative {
  99. position: relative;
  100. }
  101. .font_1 {
  102. font-size: 16px;
  103. font-family: 'PingFang SC';
  104. line-height: 22px;
  105. color: #020202;
  106. }
  107. .group_3 {
  108. padding: 10px 0 586px;
  109. overflow-y: auto;
  110. }
  111. .section {
  112. padding: 0px 16px;
  113. background-color: #ffffff;
  114. }
  115. .group_4 {
  116. padding: 18px 0;
  117. border-bottom: solid 1px #979797;
  118. }
  119. .image_5 {
  120. margin-right: 14px;
  121. width: 12px;
  122. height: 12px;
  123. }

六、郵箱找回密碼頁面

效果圖:

 mailFandBack.vue頁面


  1. <!-- 郵件找回密碼 -->
  2. <template>
  3. <view class="flex-col flex-auto group">
  4. <text class="self-center text_2">通過郵箱找回密碼</text>
  5. <input type="text" class="self-start font_1 text_3" @input="onInput" placeholder="請輸入您綁定的郵箱地址" v-model="email">
  6. <!-- svg畫線 -->
  7. <view style="height: 1px;">
  8. <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  9. <line x1="0" y1="0" x2="400" y2="0" style="stroke:rgb(0,0,0);stroke-width:0.2" />
  10. </svg>
  11. </view>
  12. <view class="flex-col justify-start items-center button" v-if="btnShow">
  13. <text class="font_1 text_4" @click="onSubmit()">下一步</text>
  14. </view>
  15. <!-- 下一步按鈕2 -->
  16. <view class="flex-col justify-start items-center button2" v-else>
  17. <button class="font_1 text_66">下一步</button>
  18. </view>
  19. </view>
  20. </template>
  21. <script>
  22. export default {
  23. components: {
  24. },
  25. data() {
  26. return {
  27. email:'', //郵箱
  28. btnShow:false, //判斷登錄按鈕顯示隱藏
  29. timeOut:null, //添加定時器
  30. };
  31. },
  32. methods: {
  33. // 判斷顯示下一步按鈕
  34. onInput() {
  35. this.timeOut && clearTimeout(this.timeOut)
  36. this.timeOut = setTimeout(() => {
  37. if (this.email) {
  38. this.btnShow = true;
  39. } else {
  40. this.btnShow = false;
  41. }
  42. }, 100);
  43. },
  44. // 點擊下一步
  45. onSubmit(){
  46. if(!this.email){
  47. uni.showToast({
  48. title: '請輸入郵箱',
  49. icon: 'none',
  50. });
  51. return;
  52. }
  53. const email= /^\w{3,}@\w{2,}\.(com|cn|net|com\.cn)$/;
  54. if(!email.test(this.email)){
  55. uni.showToast({
  56. title: '郵箱輸入不正確',
  57. icon: 'none',
  58. });
  59. return;
  60. }
  61. uni.showToast({
  62. title: '請稍后...',
  63. icon: 'loading',
  64. });
  65. // 添加定時器延時跳轉頁面
  66. setTimeout(function(){
  67. uni.navigateTo({
  68. url: '/pages/login/emailFinish'
  69. });
  70. },2000)
  71. }
  72. },
  73. };
  74. </script>
  75. <style>
  76. @import"../../style/css/mailFindBack.css";
  77. </style>

mailFandBack.css文件


  1. /************************************************************
  2. ** 全局樣式 **
  3. ************************************************************/
  4. html {
  5. font-size: 16px;
  6. }
  7. body {
  8. margin: 0;
  9. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
  10. 'Droid Sans', 'Helvetica Neue', 'Microsoft Yahei', sans-serif;
  11. -webkit-font-smoothing: antialiased;
  12. -moz-osx-font-smoothing: grayscale;
  13. }
  14. view,
  15. image,
  16. text {
  17. box-sizing: border-box;
  18. flex-shrink: 0;
  19. }
  20. #app {
  21. width: 100vw;
  22. height: 100vh;
  23. }
  24. .flex-row {
  25. display: flex;
  26. flex-direction: row;
  27. }
  28. .flex-col {
  29. display: flex;
  30. flex-direction: column;
  31. }
  32. .justify-start {
  33. justify-content: flex-start;
  34. }
  35. .justify-end {
  36. justify-content: flex-end;
  37. }
  38. .justify-center {
  39. justify-content: center;
  40. }
  41. .justify-between {
  42. justify-content: space-between;
  43. }
  44. .justify-around {
  45. justify-content: space-around;
  46. }
  47. .justify-evenly {
  48. justify-content: space-evenly;
  49. }
  50. .items-start {
  51. align-items: flex-start;
  52. }
  53. .items-end {
  54. align-items: flex-end;
  55. }
  56. .items-center {
  57. align-items: center;
  58. }
  59. .items-baseline {
  60. align-items: baseline;
  61. }
  62. .items-stretch {
  63. align-items: stretch;
  64. }
  65. .self-start {
  66. align-self: flex-start;
  67. }
  68. .self-end {
  69. align-self: flex-end;
  70. }
  71. .self-center {
  72. align-self: center;
  73. }
  74. .self-baseline {
  75. align-self: baseline;
  76. }
  77. .self-stretch {
  78. align-self: stretch;
  79. }
  80. .flex-1 {
  81. flex: 1 1 0%;
  82. }
  83. .flex-auto {
  84. flex: 1 1 auto;
  85. }
  86. .grow {
  87. flex-grow: 1;
  88. }
  89. .grow-0 {
  90. flex-grow: 0;
  91. }
  92. .shrink {
  93. flex-shrink: 1;
  94. }
  95. .shrink-0 {
  96. flex-shrink: 0;
  97. }
  98. .relative {
  99. position: relative;
  100. }
  101. /* ------------------------------------------------------------------------------ */
  102. .group {
  103. padding: 25px 40px 127px;
  104. overflow-y: auto;
  105. }
  106. .text_2 {
  107. color: #020202;
  108. font-size: 20px;
  109. font-family: 'PingFang SC';
  110. line-height: 28px;
  111. }
  112. .font_1 {
  113. font-size: 15px;
  114. font-family: 'PingFang SC';
  115. line-height: 21px;
  116. }
  117. .text_3 {
  118. margin-top: 42px;
  119. margin-bottom: 12px;
  120. color: #999999;
  121. }
  122. /* .section {
  123. margin-top: 12px;
  124. background-color: #888888;
  125. height: 1px;
  126. } */
  127. .button {
  128. margin-top: 324px;
  129. padding: 8px 0 11px;
  130. /* background-color: #166bf880; */
  131. background-image: url('。。。。。。。。。。。。');
  132. background-size: 100% 100%;
  133. background-repeat: no-repeat;
  134. border-radius: 5px;
  135. }
  136. .text_4 {
  137. color: #ffffff;
  138. }
  139. /* 下一步按鈕2*/
  140. .button2 button{
  141. width: 100%;
  142. margin-top: 324px;
  143. padding: 8px 0 11px;
  144. background-color: #166bf880;
  145. border-radius: 5px;
  146. line-height: 21px;
  147. font-size: 15px;
  148. }
  149. .text_66 {
  150. color: #ffffff;
  151. }

七、郵箱發送驗證成功頁面

效果圖:

 emailFinish.vue頁面


  1. <template>
  2. <view class="flex-col flex-auto group">
  3. <view class="flex-col group_2">
  4. <image
  5. class="self-center image_5"
  6. src="。。。。。。。。。。。。。。"
  7. />
  8. <text class="self-center text_2">請訪問郵件中給出的網頁鏈接地址,根據頁面提示完成密碼重設。</text>
  9. <view class="flex-col justify-start items-center button">
  10. <button class="text_3" @click="Back">確定</button>
  11. </view>
  12. </view>
  13. </view>
  14. </template>
  15. <script>
  16. export default {
  17. components: {
  18. },
  19. data() {
  20. return {
  21. };
  22. },
  23. methods: {
  24. // 點擊確定返回上一頁
  25. Back(){
  26. // 返回到上一個頁面
  27. uni.navigateBack({
  28. delta:1,//返回層數,2則上上頁,默認delta:1
  29. })
  30. },
  31. },
  32. };
  33. </script>
  34. <style>
  35. @import"../../style/css/emailFinish.css";
  36. </style>

點擊返回上一頁面可以用uni.navigateBack方法

點擊跳轉到指定頁面可以用uni.navigateTo方法(因為都屬于跳轉頁面也可以用這個方法返回上一頁自行理解吧)

大概長這樣:

emailFinish.css文件


  1. /************************************************************
  2. ** 全局樣式 **
  3. ************************************************************/
  4. html {
  5. font-size: 16px;
  6. }
  7. body {
  8. margin: 0;
  9. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
  10. 'Droid Sans', 'Helvetica Neue', 'Microsoft Yahei', sans-serif;
  11. -webkit-font-smoothing: antialiased;
  12. -moz-osx-font-smoothing: grayscale;
  13. }
  14. view,
  15. image,
  16. text {
  17. box-sizing: border-box;
  18. flex-shrink: 0;
  19. }
  20. #app {
  21. width: 100vw;
  22. height: 100vh;
  23. }
  24. .flex-row {
  25. display: flex;
  26. flex-direction: row;
  27. }
  28. .flex-col {
  29. display: flex;
  30. flex-direction: column;
  31. }
  32. .justify-start {
  33. justify-content: flex-start;
  34. }
  35. .justify-end {
  36. justify-content: flex-end;
  37. }
  38. .justify-center {
  39. justify-content: center;
  40. }
  41. .justify-between {
  42. justify-content: space-between;
  43. }
  44. .justify-around {
  45. justify-content: space-around;
  46. }
  47. .justify-evenly {
  48. justify-content: space-evenly;
  49. }
  50. .items-start {
  51. align-items: flex-start;
  52. }
  53. .items-end {
  54. align-items: flex-end;
  55. }
  56. .items-center {
  57. align-items: center;
  58. }
  59. .items-baseline {
  60. align-items: baseline;
  61. }
  62. .items-stretch {
  63. align-items: stretch;
  64. }
  65. .self-start {
  66. align-self: flex-start;
  67. }
  68. .self-end {
  69. align-self: flex-end;
  70. }
  71. .self-center {
  72. align-self: center;
  73. }
  74. .self-baseline {
  75. align-self: baseline;
  76. }
  77. .self-stretch {
  78. align-self: stretch;
  79. }
  80. .flex-1 {
  81. flex: 1 1 0%;
  82. }
  83. .flex-auto {
  84. flex: 1 1 auto;
  85. }
  86. .grow {
  87. flex-grow: 1;
  88. }
  89. .grow-0 {
  90. flex-grow: 0;
  91. }
  92. .shrink {
  93. flex-shrink: 1;
  94. }
  95. .shrink-0 {
  96. flex-shrink: 0;
  97. }
  98. .relative {
  99. position: relative;
  100. }
  101. /* ------------------------------------------------------------------------------ */
  102. .group {
  103. padding: 25px 40px 127px;
  104. overflow-y: auto;
  105. }
  106. .text_2 {
  107. color: #020202;
  108. font-size: 20px;
  109. font-family: 'PingFang SC';
  110. line-height: 28px;
  111. }
  112. .font_1 {
  113. font-size: 15px;
  114. font-family: 'PingFang SC';
  115. line-height: 21px;
  116. }
  117. .text_3 {
  118. margin-top: 42px;
  119. margin-bottom: 12px;
  120. color: #999999;
  121. }
  122. /* .section {
  123. margin-top: 12px;
  124. background-color: #888888;
  125. height: 1px;
  126. } */
  127. .button {
  128. margin-top: 324px;
  129. padding: 8px 0 11px;
  130. /* background-color: #166bf880; */
  131. background-image: url('。。。。。。。。。。。。。。。');
  132. background-size: 100% 100%;
  133. background-repeat: no-repeat;
  134. border-radius: 5px;
  135. }
  136. .text_4 {
  137. color: #ffffff;
  138. }
  139. /* 下一步按鈕2*/
  140. .button2 button{
  141. width: 100%;
  142. margin-top: 324px;
  143. padding: 8px 0 11px;
  144. background-color: #166bf880;
  145. border-radius: 5px;
  146. line-height: 21px;
  147. font-size: 15px;
  148. }
  149. .text_66 {
  150. color: #ffffff;
  151. }

本章也是自己參考相關資料和各位大佬的文章自行整理僅供參考,希望可以幫助到和我一樣菜雞的小伙伴

參考資料:

https://blog.csdn.net/weixin_40614372/article/details/101537653

uni-app官網:

https://uniapp.dcloud.net.cn/component/

登錄頁面完成后我用的是Strophe.js對接Openfire的接口,然后把Strophe.js的用法加到↑本文的登錄頁里使用

藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
色综合一本到久久亚洲91| 日韩欧美亚洲v片| 精品国产一区二区三区小蝌蚪| 中文字幕日韩高清在线| bestiality新另类大全| 日韩免费成人网| 日韩精品五月天| 欧美人与禽性xxxxx杂性| 久久精品夜色噜噜亚洲aⅴ| 性色av一区二区咪爱| 欧美人成在线| www.爱久久.com| 日韩一级黄色av| 久久婷婷国产综合国色天香| 国产原创精品| 婷婷精品国产一区二区三区日韩| 一本久道久久综合狠狠爱| 久久亚洲精选| 欧美精品激情| 日韩欧美不卡一区| 色狠狠久久av综合| 欧美精品一区二区三区蜜臀| 欧美理论片在线播放| 国产成人综合亚洲| 欧美激情啪啪| 亚欧成人精品| 亚洲一区二区三区三| 欧美激情不卡| 激情欧美日韩一区| 国产视频一区免费看| 亚洲综合图色| 欧美黄色大片在线观看| 999久久久亚洲| 99久久99久久综合| 国产日产欧美a一级在线| 精品国产一区二| 色哦色哦哦色天天综合| 亚洲mv大片欧洲mv大片精品| 亚洲一区二区免费在线观看| 午夜精品一区二区三区国产| 在线精品国精品国产尤物884a| 日av在线播放中文不卡| 99蜜月精品久久91| 国产sm精品调教视频网站| 好看的中文字幕在线播放| 香蕉久久一区| 欧美激情自拍| 色婷婷一区二区三区| 成人av中文字幕| 日韩黄色三级在线观看| 91精品国产综合久久香蕉麻豆| 在线观看免费成人| 热久久免费国产视频| 欧美jizz18hd性欧美| 国产精品一国产精品| 日韩一级大片在线| 91美女片黄在线观看游戏| 欧美性高跟鞋xxxxhd| 黄色一区二区在线观看| 欧美韩国一区| 久久久精品2019中文字幕神马| 69久久夜色精品国产7777| 手机av在线| 国产亚洲精品中文字幕| 91视频观看视频| 奇米777国产一区国产二区| 国产精品自拍三区| 国产精品色悠悠| 古典武侠综合av第一页| 欧美一卡二卡三卡| 欧美成人女星排行榜| 麻豆精品一区二区综合av| **日韩最新| 国产亚洲综合色| 国产精品69毛片高清亚洲| 色88888久久久久久影院按摩| 欧美午夜精品久久久久久超碰| 亚洲综合免费观看高清在线观看| 欧美激情久久久久久久久久久| 性欧美1819sex性高清| 日韩一区二区在线观看视频播放| 7878成人国产在线观看| 国内精品久久久久久野外| 欧美性猛交视频| 日韩成人av网址| 亚洲国产精华液网站w| 亚洲美女视频在线免费观看| 欧美在线观看日本一区| 日韩一区二区三区高清在线观看| 欧美国产日产图区| 91精品丝袜国产高跟在线| 东方aⅴ免费观看久久av| 97超级在线观看免费高清完整版电视剧| 久久国产精品黑丝| 樱花草国产18久久久久| 国内精品久久久久久中文字幕| 不卡av一区二区| 国产精品免费一区二区三区在线观看| 欧美高清www午色夜在线视频| 久久中国妇女中文字幕| 亚洲男男av| 婷婷激情图片久久| 亚洲视频在线视频| 国产精品一区二区三区久久久| 日韩精品在线观看一区二区| 久久久久久久电影一区| 韩国三级在线一区| 日韩欧美在线一区二区三区| 久久亚洲天堂| 欧美成人三级电影在线| 国产z一区二区三区| 亚洲人高潮女人毛茸茸| 久久亚洲一区二区三区四区| 欧美成人在线免费视频| 台湾天天综合人成在线| 激情综合网五月| 国产成人8x视频一区二区| 最新国产露脸在线观看| 国产精品日本一区二区不卡视频| 欧美日韩在线视频一区二区| 美女国产在线| 亚洲国产成人精品一区二区| 中文一区一区三区高中清不卡免费| ●精品国产综合乱码久久久久| 亚洲国产精品成人va在线观看| 国产精品一区二区久久精品爱涩| 国产亚洲综合久久| 日本不卡的三区四区五区| av中文字幕一区| 一区二区三区四区精品视频| 欧美精品videosex牲欧美| 亚洲天堂日韩电影| 亚洲综合一区二区精品导航| 欧美日韩国产区一| 国产精品99蜜臀久久不卡二区| 国产富婆一区二区三区| 91在线你懂得| 国产精品美女免费看| 精品国产欧美一区二区五十路| www.av精品| 欧美毛片免费观看| 精品乱色一区二区中文字幕| 神马影院午夜我不卡| 韩国视频理论视频久久| 清纯唯美日韩制服另类| 国产资源在线一区| 亚洲自拍欧美精品| 国产自摸综合网| 久久精品国产亚洲一区二区| 成人在线小视频| 欧美猛交ⅹxxx乱大交视频| 久久超碰99| 翔田千里一区二区| 亚洲深夜视频| 国产91精品视频在线观看| 2020国产精品极品色在线观看| 超碰在线网址| 日韩一区二区影院| 亚洲大胆人体大胆做受1| 精品亚洲一区二区三区四区五区高| 成人在线观看一区| 亚洲激情中文| 午夜精品视频| 精品国产一区二区三区久久狼黑人|