前端angular 实现验证码 输入+展示(大框+加粗内容 )

参考用原生方在手机上此效果 如何实现一个4位验证码输入框效果

  • 输入使用的任旧是html的input元素,只是让它看不到了
  • 只是把输入到input元素里的内容取到的内容放在改过样式的div里
  • 不需要dom操作,直接用双向绑定就拿到数据;使用动态样式 设置了激活的样式
  1. input输入框
    1. html 
    <input
      class="code-input"
      type="text"//文本输入框
      autoComplete="one-time-code"//验证码
      maxLength="6"//限制输入6位
      inputMode="numeric"//唤起手机上的数字输入键盘
      pattern="[0-9]*"
      [(ngModel)]="code"//angular的数据双向绑定
      (focus)="onInputFocus()"//聚焦事件
      (blur)="onInputBlur()"//失焦事件
    />

                2.css

.code-input{
  opacity: 0;//隐藏输入框
  position: absolute;//确保可以被点到
  width: 100%;
  height: 100%;
}

2.展示的验证码

        1.单个div的html 

 <!-- 在 TypeScript 或 JavaScript 中,可以使用方括号 [] 访问字符串索引例如,要获取字符串 code 的第一位 code[0]即可-->
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 0 && isInputFocused }"
    >
      {{ code[0] }}
    </div>

 完整的html 

<div class="code-box">
    <!-- 在 TypeScript 或 JavaScript 中,可以使用方括号 [] 访问字符串索引例如,要获取字符串 code 的第一位 code[0]即可-->
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 0 && isInputFocused }"
    >
      {{ code[0] }}
    </div>
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 1 && isInputFocused }"
    >
      {{ code[1] }}
    </div>
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 2 && isInputFocused }"
    >
      {{ code[2] }}
    </div>
    <div class="divider"></div>
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 3 && isInputFocused }"
    >
      {{ code[3] }}
    </div>
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 4 && isInputFocused }"
    >
      {{ code[4] }}
    </div>
    <div
      class="code-item"
      [ngClass]="{ active: code.length === 5 && isInputFocused }"
    >
      {{ code[5] }}
    </div>

2.css

.code-box {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  position: relative;
}
// 分割线
.divider {
  border-top: 1px solid black;
  width: 1rem;
}
.code-item {
  width: 3rem;
  height: 3rem;
  border: 1px solid #e5e6eb;
  border-radius: 5px;

  text-align: center;
  line-height: 2.8rem;
  font-size: 1.5rem;
  color: #000;
  font-weight: bold;
  transition: border 0.3s;
  box-sizing: border-box;
}
.active {
  border: 3px solid #1e68fc !important;
}

3.ts

  code: string = "";

这样就完成了一个验证码 输入+展示(大框+加粗内容 )的效果

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值