9.登入页面

登入页面

在pages中新建页面login

修改代码

<template>
  <view>
    
  </view>
</template>

<script setup>

</script>

<style lang="scss">

</style>

添加头像组件

官网
https://vkuviewdoc.fsq.pub/components/avatar.html

<template>
  <view class="u-p-t-40 u-p-r-60 u-p-b-30 u-p-l-60">
    <!-- circle 圆形头像 -->
    <u-avatar :src="/static/user.jpg" mode="circle"></u-avatar>
  </view>
</template>

查看登入页面

在pages.json中将登入页面放置第一个

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
  {
    "path" : "pages/login/login",
    "style" : 
    {
      "navigationBarTitleText" : "登入",
      "enablePullDownRefresh" : false
    }
  },
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "首页"
			}
		},
		{
		  "path" : "pages/write/write",
		  "style" : 
		  {
		    "navigationBarTitleText" : "发布",
		    "enablePullDownRefresh" : false
		  }
		},
		{
		  "path" : "pages/unused/unused",
		  "style" : 
		  {
		    "navigationBarTitleText" : "闲置",
		    "enablePullDownRefresh" : false
		  }
		},
		{
		  "path" : "pages/buy/buy",
		  "style" : 
		  {
		    "navigationBarTitleText" : "求购",
		    "enablePullDownRefresh" : false
		  }
		},
		{
		  "path" : "pages/mine/mine",
		  "style" : 
		  {
		    "navigationBarTitleText" : "我的",
		    "enablePullDownRefresh" : false
		  }
		}
	],
	"globalStyle": {
    //导航字体颜色,仅支持black和white
		"navigationBarTextStyle": "white",
    //导航全局标题,当前页面没有配置时生效
		"navigationBarTitleText": "简易二手交易",
    //导航颜色
		"navigationBarBackgroundColor": "#79b2f8",
    //下拉显示出来的窗口的背景色
		"backgroundColor": "#F8F8F8"
	},
  "tabBar": {
    	"color": "#7A7E83",
      //默认文字颜色
    	"selectedColor": "#376199",
      //选中文字颜色
    	"borderStyle": "black",
      //上边框颜色
    	"backgroundColor": "#ffffff",
    	"list": [{
    		"pagePath": "pages/index/index",
    		"iconPath": "static/home.png",
        //默认图片
    		"selectedIconPath": "static/home_select.png",
        //选中后图片
    		"text": "首页"
    	}, {
    		"pagePath": "pages/unused/unused",
    		"iconPath": "static/unused.png",
    		"selectedIconPath": "static/unused_select.png",
    		"text": "闲置"
    	}, {
    		"pagePath": "pages/write/write",
    		"iconPath": "static/write.png",
    		"selectedIconPath": "static/write_select.png",
    		"text": "发布"
    	}, {
    		"pagePath": "pages/buy/buy",
    		"iconPath": "static/buy.png",
    		"selectedIconPath": "static/buy_select.png",
    		"text": "求购"
    	}, {
    		"pagePath": "pages/mine/mine",
    		"iconPath": "static/mine.png",
    		"selectedIconPath": "static/mine_select.png",
    		"text": "我的"
    	}]
    }
}

修改样式

<template>
  <view class="u-p-t-40 u-p-r-60 u-p-b-30 u-p-l-60 logincontaine">
    <!-- circle 圆形头像 -->
    <u-avatar size="150" src="/static/user.jpg" mode="circle"></u-avatar>
  </view>
</template>

<script setup>

</script>

<style lang="scss">
  .logincontaine{
    height: 100%;
    display: flex;
    align-items: center;
    flex-direction: column;
    // 垂直方向布局
  }
</style>

设置表单

表单官网
https://vkuviewdoc.fsq.pub/components/form.html

图标官网
https://vkuviewdoc.fsq.pub/components/icon.html

<template>
  <view class="u-p-t-40 u-p-r-60 u-p-b-30 u-p-l-60 logincontaine">
    <!-- circle 圆形头像 -->
    <u-avatar size="150" src="/static/user.jpg" mode="circle"></u-avatar>
    <!-- model 中是绑定对象 -->
    <!-- left-icon	左侧自定义字体图标(限uView内置图标)或图片地址 
    left-icon-style	左侧图标的样式,对象形式-->
    <u-form class="forms" :model="loginModel" ref="form1">
      <u-form-item left-icon="account" left-icon-style="font-size:26px;color:#77aeff"><u-input placeholder="请输入账号" v-model="loginModel.username" /></u-form-item>
      <u-form-item left-icon="lock" left-icon-style="font-size:26px;color:#77aeff"><u-input placeholder="请输入密码" v-model="loginModel.possword" /></u-form-item>
    </u-form>
  </view>
</template>

<script setup>
import { reactive } from 'vue';
  const loginModel = reactive({
    username: '',
    possword: ''
  })
</script>

<style lang="scss">
  .logincontaine {
    height: 100%;
    display: flex;
    align-items: center;
    flex-direction: column;
    // 垂直方向布局
  }
  .forms{
    width: 100%;
    margin-top: 30px;
  }
</style>

效果图

在这里插入图片描述

登入按钮与忘记密码

<view class="passtext">
        忘记密码
</view>
<view class="button">
    <u-button class="left-b" :custom-style="customStyle1">登入</u-button>
    <u-button class="right-b" :custom-style="customStyle2">注册</u-button>
</view>

login.vue代码

<template>
  <view class="u-p-t-60 u-p-r-60 u-p-b-30 u-p-l-60 logincontaine">
    <!-- circle 圆形头像 -->
    <u-avatar size="170" src="/static/user.jpg" mode="circle"></u-avatar>
    <!-- model 中是绑定对象 -->
    <!-- left-icon	左侧自定义字体图标(限uView内置图标)或图片地址 
    left-icon-style	左侧图标的样式,对象形式-->
    <u-form class="forms" :model="loginModel" ref="form1">
      <u-form-item left-icon="account" left-icon-style="font-size:26px;color:#77aeff"><u-input placeholder="请输入账号" v-model="loginModel.username" /></u-form-item>
      <u-form-item left-icon="lock" left-icon-style="font-size:26px;color:#77aeff"><u-input placeholder="请输入密码" v-model="loginModel.possword" /></u-form-item>
      <view class="passtext">
        忘记密码
      </view>
      <view class="button">
        <u-button class="left-b" :custom-style="customStyle1">登入</u-button>
        <u-button class="right-b" :custom-style="customStyle2">注册</u-button>
      </view>
    </u-form>
  </view>
</template>

<script setup>
import { reactive } from 'vue';
  const loginModel = reactive({
    username: '',
    possword: ''
  })
  const customStyle1 = reactive({
    marginTop: '80px',
    background: '#3773d4',
    color: '#fff',
    width:'130px'
  })
  const customStyle2 = reactive({
    marginTop: '80px',
    background: '#3773d4',
    color: '#fff',
    width:'130px'
  })
</script>

<style lang="scss">
  .logincontaine {
    height: 100%;
    display: flex;
    align-items: center;
    flex-direction: column;
    // 垂直方向布局
  }
  .forms{
    width: 100%;
    margin-top: 40px;
  }
  .button{
    display: flex;
    justify-content: space-between;
    // 水平分布
  }
  .passtext{
    display: flex;
    justify-content: flex-end;
    color: #0d7adf;
    margin-top: 30px;
  }
</style>

效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471832.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue:功能【xlsx】动态行内合并

场景&#xff1a;纯前端导出excel数据&#xff0c;涉及到列合并、行合并。 注&#xff09;当前数据表头固定&#xff0c;行内数据不固定。以第一列WM为判断条件&#xff0c;相同名字的那几行数据合并单元格。合并的那几行数据&#xff0c;后面的列按需求进行合并。 注&#x…

github 如何关闭 2FA

一开始按照各种教程都找不到&#xff0c;新版的太小了&#xff0c; https://github.com/settings/security

HTML实现卷轴动画完整源码附注释

动画效果截图 页面的html结构代码 <!DOCTYPE html> <html> <head lang=

【Maven入门篇】(3)依赖配置,依赖传递,依赖范围,生命周期

&#x1f38a;专栏【Maven入门篇】 &#xfeff;> &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#xfeff;> &#x1f386;音乐分享【The truth that you leave】 &#xfeff;> &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &…

(四)Android布局类型(线性布局LinearLayout)

线性布局&#xff08;LinearLayout&#xff09;&#xff1a;按照一定的方向排列组件&#xff0c;方向主要分为水平方向和垂直方向。方向的设置通过属性android:orientation设置 android:orientation 其取值有两种 水平方向&#xff1a;android:orientation"horizontal&…

【精品】递归查询数据库 获取树形结构数据 通用方法

数据库表结构 实体类基类 Getter Setter ToString public class RecursionBean {/*** 编号*/private Long id;/*** 父权限ID&#xff0c;根节点的父权限为空*/JsonIgnoreprivate Long pid;private List<? extends RecursionBean> children;/*** 递归查询子节点** param…

申请双软认证需要哪些材料?软件功能测试报告怎么获取?

“双软认证”是指软件产品评估和软件企业评估&#xff0c;其中需要软件测试报告。 企业申请双软认证除了获得软件企业和软件产品的认证资质&#xff0c;同时也是对企业知识产权的一种保护方式&#xff0c;更可以让企业享受国家提供给软件行业的税收优惠政策。 那么&#xff0c;…

奇舞周刊第522期:“Vite 又开始搞事情了!!!”

奇舞推荐 ■ ■ ■ Vite 又开始搞事情了&#xff01;&#xff01;&#xff01; Vite 的最新版本将引入一种名为 Rolldown 的新型打包工具。 unocss 究竟比 tailwindcss 快多少&#xff1f; 我们知道 unocss 很快&#xff0c;也许是目前最快的原子化 CSS 引擎 (没有之一)。 巧用…

Flink:使用 Faker 和 DataGen 生成测试数据

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

Linux 发布项目到OpenEuler虚拟机

后端&#xff1a;SpringBoot 前端&#xff1a;VUE3 操作系统&#xff1a;Linux 虚拟机&#xff1a;OpenEuler 发布项目是需要先关闭虚拟机上的防火墙 systemctl stop firewalld 一、运行后端项目到虚拟机 1、安装JDK软件包 查询Jdk是否已安装 dnf list installed | grep jd…

力扣每日一题 好子数组的最大分数 单调栈 双指针

Problem: 1793. 好子数组的最大分数 &#x1f496; 单调栈 思路 &#x1f468;‍&#x1f3eb; 参考题解 以当前高度为基准&#xff0c;寻找最大的宽度组成最大的矩形面积那就是要找左边第一个小于当前高度的下标left&#xff0c;再找右边第一个小于当前高度的下标right那宽…

Linux 磁盘的一生

注意&#xff1a;实验环境都是使用VMware模拟 ​ 磁盘接口类型这里vm中是SCSI&#xff0c;扩展sata,ide(有时间可以看看或者磁盘的历史) ​ 总结&#xff1a;磁盘从有到无—类似于建房子到可以住 ————————————————————————————————————…

【PHP + 代码审计】函数详解2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

【计算机网络篇】物理层(4)信道的极限容量,信道复用技术

文章目录 &#x1f354;信道的极限容量&#x1f6f8;造成信号失真的主要因素⭐码元的传输速率 &#x1f6f8;奈氏准则&#x1f6f8;香农公式&#x1f388;练习 &#x1f5d2;️小结 &#x1f354;信道复用技术⭐常见的信道复用技术&#x1f388;频分复用FDM&#x1f388;时分复…

Python之进程池、阻塞模式、非阻塞模式、进程间的通信、queue

非阻塞模式 # 当需要创建的子进程数量不多时&#xff0c;可以直接利用multiprocessing中的Process动态成生多个进程 # 但如果是上百甚至上千个目标&#xff0c;手动的去创建进程的工作量巨大&#xff0c;此时就可以用到multiprocessing模块提供的Pool方法. # 初始化Poo1时&…

分享5款专注于实用简洁的工具软件

​ 有时候一些小工具&#xff0c;能给你带来一些意想不到的效果&#xff0c;我们来看看下面这5款工具&#xff0c;你又用过其中几款呢&#xff1f; 1. 高效操作利器——Quicker ​ Quicker是一款旨在提高操作效率的强大工具。通过简单的自定义设置&#xff0c;用户能够创建个…

幼儿教育管理系统|基于jsp 技术+ Mysql+Java的幼儿教育管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

C++中的Union: 内存与类型转换技巧

在C中&#xff0c;union是一种特殊的数据类型&#xff0c;允许在相同的内存位置存储不同类型的数据。union提供了一种高效地利用内存的方式&#xff0c;但同时也要求开发者更加小心地处理数据以避免类型错误。 1. 基本定义 union定义了一个可以存储多种类型但任意时刻只能存储…

未来国家的希望在实体经济 民众的希望在投资理财

2024年经济的车轮已经滚滚而来&#xff0c;在阳春三月这个希望无限的季节&#xff0c;香港贵金属交易商、香港金银贸易场AA类147号行员金田金业认为&#xff0c;我们国家的希望在于实体经济发展&#xff0c;而民众要实现个人财务自由&#xff0c;仅仅靠打工还不够&#xff0c;更…

C++ Qt开发:QUdpSocket实现组播通信

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QUdpSocket组件实现基于UDP的组播通信…