前端工作小结85-小程序学习3开始布局页面3

简介: 前端工作小结85-小程序学习3开始布局页面3
<template>
  <view class="box u-p-l-35 u-p-r-35">
    <u-image class="head_img" shape="circle" width="120rpx" height="120rpx" src="../../static/head.png"></u-image>
    <view class="title">
      <text>苏州华开农创智慧科技管</text>
    </view>
    <u-form>
      <u-form-item>
        <u-input v-model="account" placeholder="请输入账号"></u-input>
      </u-form-item>
      <u-form-item>
        <u-input class="inp" v-model="password" type="password" placeholder="请输入密码"></u-input>
      </u-form-item>
      <u-form-item>
        <u-input class="inp" type="text" v-model="code" placeholder="请输入验证码"></u-input>
        <canvas :style="{width:width+'px',height:height+'px'}" canvas-id="canvas" @click="changeCode" @error="canvasIdErrorCallback"></canvas>
      </u-form-item>
      <view class="option">
        <u-icon @click="getMore" :name="arrow" :index="arrow" color="#666666"></u-icon><text>网络配置</text>
      </view>
      <view v-if="arrow  == 'arrow-up-fill'">
        <u-form-item>
          <u-input v-model="ip_adress" placeholder="请输入IP地址"></u-input>
        </u-form-item>
        <u-form-item>
          <u-input v-model="port_number" placeholder="请输入端口号"></u-input>
        </u-form-item>
      </view>
    </u-form>
    <u-image v-if="sub_show" class="sub" src="../../static/login.png" width="100rpx" height="100rpx" mode="widthFix"></u-image>
    <u-image v-else class="sub" @click.native="sub" src="../../static/login_show.png" width="100rpx" height="100rpx" mode="widthFix"></u-image>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        //头像
        headimg: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606985171381&di=db5845b1115851ca0d934f0b7619ec47&imgtype=0&src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201910%2F26%2F20191026201534_xotym.thumb.700_0.jpg',
        //表单数据
        account: '',
        password: '',
        code: '',
        ip_adress: '',
        port_number: '',
        //验证码size
        width: 120,
        height: 45,
        //下拉状态
        arrow: 'arrow-down-fill',
        //按钮显示状态
        sub_show: true
      }
    },
    methods: {
      //提交
      sub: function() {
        if (this.account == '') {
          uni.showToast({
            icon: 'none',
            position: 'center',
            title: '请填写账号'
          });
          return false;
        }
        if (this.password == '') {
          uni.showToast({
            icon: 'none',
            position: 'center',
            title: '请填写密码'
          });
          return false;
        }
        if (this.code.toLowerCase() != uni.getStorageSync('imgcode').toLowerCase()) {
          uni.showToast({
            icon: 'none',
            position: 'bottom',
            title: '验证码不正确'
          });
          return false;
        }
      },
      //切换
      getMore: function(e) {
        console.log(e)
        console.log(666)
        if (e == 'arrow-down-fill') {
          this.arrow = 'arrow-up-fill'
        } else {
          this.arrow = 'arrow-down-fill'
        }
      },
      //验证码换一张
      changeCode: function() {
        this.init();
      },
      // 初始化验证码
      init: function() {
        console.log('start');
        var context = uni.createCanvasContext('canvas', this),
          w = this.width,
          h = this.height;
        context.setFillStyle("white");
        context.setLineWidth(5);
        context.fillRect(0, 0, w, h);
        var pool = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "I", "M", "N", "O", "P", "Q", "R", "S",
            "T", "U", "V", "W", "S", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
          ],
          str = '';
        for (var i = 0; i < 4; i++) {
          var c = pool[this.rn(0, pool.length - 1)];
          var deg = this.rn(-30, 30);
          context.setFontSize(18);
          context.setTextBaseline("top");
          context.setFillStyle(this.rc(80, 150));
          context.save();
          context.translate(30 * i + 15, parseInt(h / 1.5));
          context.rotate(deg * Math.PI / 180);
          context.fillText(c, -15 + 5, -15);
          context.restore();
          str += c;
        }
        uni.setStorage({
          key: 'imgcode',
          data: str,
        });
        for (var i = 0; i < 40; i++) {
          context.beginPath();
          context.arc(this.rn(0, w), this.rn(0, h), 1, 0, 2 * Math.PI);
          context.closePath();
          context.setFillStyle(this.rc(150, 200));
          context.fill();
        }
        context.draw();
        console.log('end');
      },
      rc: function(min, max) {
        var r = this.rn(min, max);
        var g = this.rn(min, max);
        var b = this.rn(min, max);
        return "rgb(" + r + "," + g + "," + b + ")";
      },
      rn: function(max, min) {
        return parseInt(Math.random() * (max - min)) + min;
      },
      canvasIdErrorCallback: function(e) {
        console.error(e.detail.errMsg)
      },
    },
    updated: function() {
      console.log('updated')
      if (this.code != '' || this.account != '' || this.password != '') {
        this.sub_show = false;
        console.log(6)
      }else{
        this.sub_show = true;
      }
    },
    onShow() {
      var _this = this;
      setTimeout(function() {
        _this.init();
      }, 1000)
    }
  }
</script>
<style lang="scss">
  .box {
    background-color: white;
    .head_img {
      margin: auto;
      margin-top: 88rpx;
      margin-bottom: 22rpx;
      text-align: center;
    }
    .title {
      font-size: 36rpx;
      text-align: center;
      margin-bottom: 70rpx;
    }
    .sub {
      margin: auto;
      margin-top: 226rpx;
    }
    canvas {
      width: 180rpx;
      height: 56rpx;
      border-radius: 28rpx;
      float: left;
      margin-top: 22rpx;
    }
    .option {
      margin-top: 29rpx;
      text {
        color: #666666;
        font-size: 26rpx;
        margin-left: 12rpx;
      }
    }
  }
</style>

image.png

相关文章
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
705 2
|
6月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
341 1
|
6月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
324 0
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
438 0
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
1158 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
10月前
|
IDE 前端开发 开发工具
用通义灵码IDE做产品高保真原型和前端页面
通义灵码IDE助力高效开发,告别传统Axure原型图的繁琐沟通。通过该工具可直接生成高保真产品原型与前端页面,大幅提升客户确认效率及满意度。现已将相关演示发布至B站(https://www.bilibili.com/video/BV18qT7ziEb7/?vd_source=dc6a6864c895818db6ce4170d50b3557),欢迎体验!用直观操作代替反复说明,让交付更流畅。
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
906 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
825 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
707 0

热门文章

最新文章

下一篇
开通oss服务