Vue3——动态input边框效果实现

36 篇文章 3 订阅
21 篇文章 2 订阅

因为这里使用的是Vant移动端写的,所以不好给自带的input框添加foucs样式,所以我这里就给他一个hover代替点击焦点样式,效果是一致的。

<template>
  <div>
    <div class="border">
      <van-field v-model="value" placeholder="请输入用户名" autocomplete="off" />
      <span class="bottom"></span>
      <span class="right"></span>
      <span class="top"></span>
      <span class="left"></span>
    </div>
  </div>
</template>

<script lang='ts' setup>
import { ref, onMounted, reactive } from "vue";
const value = ref("");
</script>
<style scoped lang='less'>
.border {
  width: 325px;
  position: relative;
}
.border:hover .bottom {
  transform: scaleX(1);
  transform-origin: left center;
}
.border:hover .top {
  transform: scaleX(1);
  transform-origin: right center;
}
.border:hover .right {
  transform: scaleY(1);
  transform-origin: bottom center;
}
.border:hover .left {
  transform: scaleY(1);
  transform-origin: top center;
}
span {
  display: block;
}
.bottom,
.top,
.left,
.right {
  position: absolute;
  background: linear-gradient(to right, #8f41e9, #578aef);
  transition: transform 0.1s ease-in-out;
}
.bottom,
.top {
  left: 0;
  right: 0;
  height: 1px;
  transform: scaleX(0);
}

.left,
.right {
  top: 0;
  bottom: 0;
  width: 1px;
  transform: scaleY(0);
}
.bottom {
  bottom: 0;
  transform-origin: right center;
}
.top {
  top: 0;
  transform-origin: left center;
  transition-delay: 0.2s;
}
.right {
  transform-origin: top center;
  right: 0;
  transition-delay: 0.1s;
}
.left {
  left: 0;
  transform-origin: bottom center;
  transition-delay: 0.3s;
}
</style>

最后看一下实现效果:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Southern Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值