实验七 智能手机互联网程序设计(微信程序方向)实验报告

news/2024/5/9 23:38:01

               

  • 请编写一个用户登录界面,提示输入账号和密码进行登录,要求在输入后登陆框显示为绿色;

   

二、实验步骤与结果(给出对应的代码或运行结果截图)

index.wxml

<view class="content">

  <view class="account">

    <view class="title">账号</view> 

    <view class="num"><input bindinput="accountInputplaceholder="用户名/邮箱/手机号placeholder-style="color:#999999;"/></view>

    <view class="hr"></view>

  </view>

  <view class="account">

    <view class="title">密码</view> 

    <view class="num"><input bindblur="pwdBlurplaceholder="请输入密码password placeholder-style="color:#999999;"/></view>

    <view class="see">

      <image src="/images/see.jpgstyle="width:42px;height:30px;"></image>

    </view>

  </view>

  <view class="hr"></view>

  <button class="btndisabled="{{disabled}}" type="{{btnstate}}" bindtap="login">登录</button>

  <view class="operate">

    <view><navigator url="../mobile/mobile">手机快速注册</navigator></view>

    <view><navigator url="../company/company">企业用户注册</navigator></view>

    <view>找回密码</view>

  </view>

</view>

index.wxss

.content{

  margin-top: 40px;/* 设置内容区顶部外边距为40px,用于与上方元素的间隔 */

}

.account{

  display: block;/* 设置.account类的元素为块级元素,这意味着它会占据一整行 */

  padding-left: 20px;/* 设置.account类元素的左内边距为20px */

  padding-top: 20px;/* 设置.account类元素的顶部内边距为20px */

 padding-bottom: 10px; /* 设置.account类元素的底部内边距为10px */

  width: 90%;/* 设置.account类元素的宽度为其父容器宽度的90% */

}

.title{

  float: left;/* .title类的元素向左浮动,使其在水平方向上靠左排列 */

 margin-right: 30px; /* 设置.title类元素右侧的外边距为30px,用于与右侧元素的间隔 */

  font-weight: bold ;/* 设置.title类的文本为粗体 */

}

.hr{

  border: 1px solid #cccccc;/* 设置.hr类的边框为1px宽,实线,颜色为#cccccc */

  opacity: 0.2;/* 设置.hr类的不透明度为0.2,使边框显得更为透明 */

 width: 90%; /* 设置.hr类元素的宽度为其父容器宽度的90% */

  margin: auto;/* 设置.hr类元素的上下外边距为0,左右外边距自动,从而使其水平居中 */

}

.see{

 position: absolute; /* 设置.see类的定位为绝对定位,它将相对于最近的定位非static元素进行定位 */

  margin-right: 20px;/* 设置.see类元素相对于其父元素右侧的距离为20px */

}

.btn{

 width: 90%; /* 设置.btn类的按钮宽度为其父容器宽度的90% */

 margin-top: 40px; /* 设置.btn类的按钮顶部外边距为40px,用于与上方元素的间隔 */

  color: #999999;/* 设置.btn类的按钮文本颜色为#999999,这是一种灰色调 */

}

.operate{

 display: block; /* 设置.operate类的元素为块级元素,这意味着它会占据一整行 */

}

.operate view{

  display: inline-block;/* 设置.operate类中的view元素为内联块级元素,允许它们在一行内并排显示 */

  width: 33%;/* 设置每个view元素的宽度为其父容器宽度的33%,允许三个元素平分一行 */

  text-align: center;/* 设置文本在每个view元素内居中对齐 */

  margin-top: 40px;/* 设置每个view元素顶部的外边距为40px,用于与上方元素的间隔 */

  font-family: 14px;/* 设置字体大小为14px,适合阅读而不显得过大或过小 */

 color: #333333; /* 设置文本颜色为深灰色(#333333),提供良好的可读性 */

}

.login{

 display: block; /* 设置.login类的元素为块级元素,这意味着它会占据一整行 */

  margin-top: 150px;/* 设置.login类元素顶部外边距为150px,用于与上方元素的显著间隔 */

  text-align: center;/* 设置.login类的文本在元素内居中对齐 */

}

.login view{

  display: inline-block/* 设置.login类中的view元素为内联块级元素,允许它们在一行内并排显示 */

}

index.js

Page({

  data: {

    disabled: true, // 初始化登录按钮为禁用状态

    btnstate: "default", // 设置按钮的初始样式为默认

    account: "", // 初始化账户数据为空

    password: "" // 初始化密码数据为空

  },

  //判断输入框里是否有字,有内容则按更改按钮样式

  accountInput(e) {

    var content=e.detail.value;

    // 获取输入框内的值

    console.log(content);

     // 在控制台输出当前输入的内容

      if (content != ''{

        this.setData({disabled:false,btnstate:"primary",account:content});// 如果输入不为空,设置按钮为启用状态,更改按钮样式为"primary",并更新账户数据

      } else {

        this.setData({disabled:true,btnstate:"default"});// 如果输入为空,重置按钮为禁用状态和默认样式

      }

  },

  //失去焦点后获取密码框的值,进行更新

  pwdBlur(e) {

    var password =e.detail.value;// 获取密码输入框内的值

      if (password != ''{

        this.setData({password:password});// 如果密码输入不为空,更新密码数据

      }

  },

  //模拟登录成功界面

  login(){

    console.log("账号:"+this.data.account)//将登陆成功后的账号输出至控制台

    console.log("密码:"+this.data.password)//将登陆成功后的密码输出至控制台

    wx.showToast({

      title: '完成登录', //可视化

    })

  }

})

思路

1.WXML
1.1 定义登录表单视图
页面的主体内容被一个名为“content”的view组件包含,作为容器包括所有子组件,包括账号输入框、密码输入框以及登录按钮。
<view class="content">

1.2 添加账号输入部分
在“content”视图内,首先添加了一个“account”类的view组件,用于用户输入账号信息:

标题:包含一个静态文本“账号”,显示在输入框的左侧。
输入框:使用input组件,提供了输入反馈的绑定事件bindinput="accountInput",并设置了灰色的占位文字。<view class="account">


  <view class="title">账号</view>
  <view class="num"><input bindinput="accountInput" placeholder="用户名/邮箱/手机号" placeholder-style="color:#999999;"/></view>
</view>


1.3 添加分割线
在账号输入框下方添加了一个名为“hr”的view组件,用作视觉上的分割线,增强布局的分区效果。
<view class="hr"></view>


1.4 添加密码输入部分
紧接着,为密码输入设置了一个与账号输入类似的布局:

标题:同样包含一个静态文本“密码”。
输入框:input组件用于密码输入,绑定了失焦事件bindblur="pwdBlur",并设置密码隐藏。
查看密码:通过一个image组件实现,点击后可以查看或隐藏密码。

<view class="account">
  <view class="title">密码</view>
  <view class="num"><input bindblur="pwdBlur" placeholder="请输入密码" password placeholder-style="color:#999999;"/></view>
  <view class="see">
    <image src="/images/see.jpg" style="width:42px;height:30px;"></image>
  </view>
</view>


1.5 再次添加分割线
为了在视觉上区分密码输入和后续的操作按钮,再次插入一个“hr”类的分割线。
<view class="hr"></view>


1.6 添加登录按钮
在表单下方提供了一个登录按钮,其可用状态和类型通过数据绑定实现,响应用户点击事件bindtap="login"。
<button class="btn" disabled="{{disabled}}" type="{{btnstate}}" bindtap="login">登录</button>

1.7 设置附加操作链接
最后,在登录表单下方设置了一个“operate”类的view组件,包含三个视图,每个视图都使用navigator组件,分别指向手机快速注册、企业用户注册和找回密码的页面。
<view class="operate">
  <view><navigator url="../mobile/mobile">手机快速注册</navigator></view>
  <view><navigator url="../company/company">企业用户注册</navigator></view>
  <view>找回密码</view>
</view>


2.WXSS
.content{
  /* 设置内容区顶部外边距为40px,用于与上方元素的间隔 */
}

.account{
  /* 设置.account类的元素为块级元素,这意味着它会占据一整行 */
  /* 设置.account类元素的左内边距为20px */
  /* 设置.account类元素的顶部内边距为20px */
  /* 设置.account类元素的底部内边距为10px */
  /* 设置.account类元素的宽度为其父容器宽度的90% */
}

.title{
  /* 将.title类的元素向左浮动,使其在水平方向上靠左排列 */
  /* 设置.title类元素右侧的外边距为30px,用于与右侧元素的间隔 */
  /* 设置.title类的文本为粗体 */
}

.hr{
  /* 设置.hr类的边框为1px宽,实线,颜色为#cccccc */
  /* 设置.hr类的不透明度为0.2,使边框显得更为透明 */
  /* 设置.hr类元素的宽度为其父容器宽度的90% */
  /* 设置.hr类元素的上下外边距为0,左右外边距自动,从而使其水平居中 */
}

.see{
  /* 设置.see类的定位为绝对定位,它将相对于最近的定位非static元素进行定位 */
  /* 设置.see类元素相对于其父元素右侧的距离为20px */
}

.btn{
  /* 设置.btn类的按钮宽度为其父容器宽度的90% */
  /* 设置.btn类的按钮顶部外边距为40px,用于与上方元素的间隔 */
  /* 设置.btn类的按钮文本颜色为#999999,这是一种灰色调 */
}

.operate{
  /* 设置.operate类的元素为块级元素,这意味着它会占据一整行 */
}

.operate view{
  /* 设置.operate类中的view元素为内联块级元素,允许它们在一行内并排显示 */
  /* 设置每个view元素的宽度为其父容器宽度的33%,允许三个元素平分一行 */
  /* 设置文本在每个view元素内居中对齐 */
  /* 设置每个view元素顶部的外边距为40px,用于与上方元素的间隔 */
  /* 设置字体大小为14px,适合阅读而不显得过大或过小 */
  /* 设置文本颜色为深灰色(#333333),提供良好的可读性 */
}

.login{
  /* 设置.login类的元素为块级元素,这意味着它会占据一整行 */
  /* 设置.login类元素顶部外边距为150px,用于与上方元素的显著间隔 */
  /* 设置.login类的文本在元素内居中对齐 */
}

.login view{
  /* 设置.login类中的view元素为内联块级元素,允许它们在一行内并排显示 */
}


3.JS
Page({
  data: {
    disabled: true, // 初始化登录按钮为禁用状态
    btnstate: "default", // 设置按钮的初始样式为默认
    account: "", // 初始化账户数据为空
    password: "" // 初始化密码数据为空
  },

  //判断输入框里是否有字,有内容则按更改按钮样式
  accountInput(e) {
      // 获取输入框内的值
     // 在控制台输出当前输入的内容
      if (content != '') {
         // 如果输入不为空,设置按钮为启用状态,更改按钮样式为"primary",并更新账户数据
      } else {
         // 如果输入为空,重置按钮为禁用状态和默认样式
      }
  },
  //失去焦点后获取密码框的值,进行更新
  pwdBlur(e) {
      // 获取密码输入框内的值
      if (password != '') {
         // 如果密码输入不为空,更新密码数据
      }
  },
  //模拟登录成功界面
  login(){
   //将登陆成功后的账号输出至控制台
   //将登陆成功后的密码输出至控制台
    wx.showToast({
      title: '完成登录', //可视化
    })
  }
})


 


http://www.mrgr.cn/p/80458082

相关文章

02. x86处理器运行方式

【CPU指令】 CPU控制器通过读取存储器中的指令确定要执行的功能,CPU运行需要不停的读取指令,计算机启动后CPU会从固定地址处开始读取指令,首先读取 NOR Flash 存储器中的固件,固件执行完毕后引导操作系统执行。 指令是一个二进制数据,主要由如下两部分组成:1.操作码,设置…

hadoop安装记录

目录 零、版本说明一、环境准备1.1.规划1.2.准备 二、安装配置hadoop 三、启动 零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)jdk [rootnode1 ~]# java -version java version "1.8.0_311" Java(TM) SE Run…

Hadoop集群模式的搭建之二:配置Hadoop平台基础环境

在进行Hadoop集群的安装部署之前,需要对虚拟机进行一些基础环境配置。例如,为了在集群中识别主机,需要配置主机和IP地址的映射关系;为了使用Web相关的服务和访问连接,需要在集群中关闭并禁用防火墙功能;为了减少节点之间访问时人工输入用户密码,需要配置SSH免密登录;为…

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片&#xff0c;比较了一下&#xff0c;选择Arduino IDE并添加ESP32支持库的方式来开发&#xff0c;下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包&#xff08;非常推荐&#xff0…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

ICESat-2 从ATL08中获取ATL03分类结果

ICESat-2 ATL03数据和ATL08数据的分段距离不一致,ATL08在ATL03的基础上重新分段,并对分段内的数据做处理得到一系列的结果,详情见数据字典: ATL08 Product Data Dictionary (nsidc.org) ATL08使用DRAGANN算法对ATL03数据做了去噪处理,并使用分类算法对每个光子进行分类标志…

【C++打怪之路Lv3】-- 类和对象(上)

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分82)&#…

Fastbin attackDouble free和Unsortbin leak的综合使用

Fastbin attack&&Double free和Unsortbin leak的综合使用✅ 今天做一个综合题目,包括利用Fastbin attack实现多指针指向一个地址,以及利用Unsortbin leak泄露libc基地址和修改__malloc_hook地址为one_gadget 题目是buuctf上面的一道题目,题目链接 https://buuoj.cn/…

C语言Linux vim shell命令

无论是在插入模式或者是其他模式下对于文件的修改都是对于内存缓冲区进行修改&#xff0c;只有当点击w进行保存以后才会将数据写入到一个新的文件中的&#xff0c;将源文件删除&#xff0c;并且新文件改为文件的名字 1. actionmotion dG删到文件尾 ggdG先到开头再删除到末尾…

Java中的接口

package day38; ​ public interface Test1 {void say();int add(int a,int b); ​ } ​ package day38; ​ public interface Test2 {void printhelllo();double add(double a,double b); } ​ package day38; ​ public class Implementall implements Test1,Test2 {Overri…

AJAX——案例

1.商品分类 需求&#xff1a;尽可能同时展示所有商品分类到页面上 步骤&#xff1a; 获取所有的一级分类数据遍历id&#xff0c;创建获取二级分类请求合并所有二级分类Promise对象等待同时成功后&#xff0c;渲染页面 index.html代码 <!DOCTYPE html> <html lang&qu…

Java web应用性能分析之【sysbench基准测试】

Java web应用性能分析之【CPU飙高分析之MySQL】-CSDN博客 Java web应用性能分析之【Linux服务器性能监控分析概叙】-CSDN博客 Java web应用性能分析概叙-CSDN博客 Java web应用性能分析之【基准测试】-CSDN博客 上面基本科普了一下基准测试&#xff0c;这里我们将从sysbench…

gpu机器没有开启ipv6

参考: https://blog.csdn.net/asdfaa/article/details/137884414检查系统是否支持 IPv6,查看被禁用了 在启用 IPv6 之前,首先要确保您的系统支持 IPv6。要检查内核是否启用了 IPv6,可以运行以下命令: cat /proc/sys/net/ipv6/conf/all/disable_ipv6 如果返回的结果为 0,…

TCP相关问题总结

文章目录 TCP连接建立过程1. TCP三次握手2. TCP四次挥手3. TCP为什么是三次握手4. TCP为什么是四次挥手 TCP流量控制TCP拥塞控制1. 为什么需要拥塞控制2. 控制手段 TCP连接建立过程中出现丢包 TCP连接建立过程 1. TCP三次握手 首先client端发出连接请求&#xff0c;并且请求同…

Git和Github绑定

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

11 c++版本的贪吃蛇

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 最近 因为想要 在单片机上面移植一下 贪吃蛇, 所以 重新拿出了一下 这份代码 然后 将它更新为 c 版本, 还是 用了一些时间 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用…

python库使用总结

python库的使用 1:print(补充)2:math 2.1:math库包括的4个数学常数2.2math库中的函数幂对数函数三角曲线函数3:字符串处理函数补充:sorted(str) 对字符串中的元素进行排序,返回排序后的列表,而不是字符串 ​ reversed(str) 对字符串中的元素反向输出 3.1 字符串…

python学习思维导图分享

python 本文包含了我的一些python学习的笔记和思维导图 第一部分:python基础导图下载链接 第二部分:函数及其他文件操作导图下载链接 第三部分:类及网络编程导图下载链接 第四部分:mysql导图下载链接

linux中如何挂载yum云仓库进行软件的安装

1.首先在根目录下建立文件&#xff0c;用来挂载镜像文件 [rootclient ~]# mkdir /rhel9 2.挂载镜像文件&#xff1a; [rootclient ~]# mount /dev/cdrom /rhel9 3.切换到 /etc/yum.repos.d 下的目录并查看 &#xff0c;创建 rhel9.repo文件&#xff0c;并编辑云仓库域名&am…