Show newer
王小美 boosted

一个分块input组件

<template>
  <view class="line">
    <view class="wrapper" v-for="(item, index) in inputBox" :key="index">
      <input
        class="input"
        v-model="item.value"
        type="text"
        :focus="item.focus"
        @input="onInput(index)"
        maxlength="1"
      />
    </view>
  </view>
</template>

<script>
  export default {
    name: 'SplitInputBox',
    model: {
      prop: 'value',
      event: 'change',
    },
    props: {
      digit: {
        type: Number,
        default: 4,
      },
    },
    data() {
      return {
        inputBox: [{ value: '', focus: true }],
      }
    },
    methods: {
      onInput(index) {
        const value = this.inputBox[index].value
        if (value.length === 1 && index < this.$props.digit - 1) {
          this.inputBox[index].focus = false
          this.inputBox[index + 1].focus = true
        } else if (value.length === 0 && index > 0) {
          this.inputBox[index].focus = false
          this.inputBox[index - 1].focus = true
        } else {
          this.inputBox[index].focus = false
          return
        }
      },
    },
    computed: {
      fullValue: {
        get: function () {
          let value = ''
          this.inputBox.forEach((item) => {
            value += item.value
          })
          return value
        },
        set: function (newValue) {
          const values = newValue.split('')
          if (values.length !== this.$props.digit) {
            console.warn(`Error: new value should be at least ${this.$props.digit} digits`)
            return
          }
          for (let i = 0; i < values.length; i++) {
            this.inputBox[i] = values[i]
          }
        },
      },
    },
    watch: {
      fullValue(nv) {
        this.$emit('change', nv)
      },
    },
    created() {
      if (this.$props.digit < 1) console.warn('Error: digit should be at least 1')
      const unit = { value: '', focus: false }
      for (let i = 0; i < this.$props.digit - 1; i++) {
        this.inputBox.push(JSON.parse(JSON.stringify(unit)))
      }
    },
  }
</script>

<style lang="less" scoped>
  .line {
    width: 100%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    .wrapper {
      padding: 0 24rpx;
      .input {
        width: 80rpx;
        height: 80rpx;
        border: 2rpx solid #333333;
        border-radius: 16rpx;
        background: #ffffff;
        text-align: center;
      }
    }
  }
</style>

王小美 boosted

《明日方舟》x《彩虹六号:围攻》联动结束纪念

我跟着你的战术走过,你看透了一切。
辛苦了,干得漂亮。

:sys_video: api.2heng.xin/bilibili/og.php?
:sys_bilibili: t.bilibili.com/505201579803310

曾亦可这种过气人渣也能上热搜 :ac_classic02:

好是好看,可是就没几个人玩瑶啊,为什么不出个阿古朵皮肤 :catcry:


QT: [hello.2heng.xin/@pvp/105920990]
王者荣耀  

王者荣耀携手 @Burberry 皮肤主题设计灵感解析来了[打call]

传说皮肤:

被自然守护着的瑶也守护着自然,她就是“自然之灵”的具象表达。镜光掠影间,演绎着对人与自然关系的多面反思。

星传说皮肤:

森林到海洋,生命循环的步伐从未停止,这是对自然的颂歌。以海洋蓝为灵感铺展开,多元新生理念的新意表达。

:icon_weibo: weibo.com/5698023579/K74jDARTt

王小美 boosted
王小美 boosted

Happy Birthday curl 🎉
Daniel Stenberg: This day 23 years ago, I uploaded the first ever curl release. Happy birthday to all of us who use and appreciate curl. I love you all.
daniel.haxx.se/blog/2021/03/20

:sys_twitter: twitter.com/github/status/1373

王小美 boosted
王小美 boosted
王小美 boosted

I always find tomorrow, but tomorrow is not a place. Tomorrow is you.
我终其一生去寻找一个名叫明天的地方,却发现明天不是一个地方,而是你。

王小美 boosted

关注了 :bili_emoji_xijierqi:
//转发自: @银大友: 【彩虹六号】整活! 小葵成名录 15【VOICEROID实况】
更新啦更新啦!小葵成名录15来力来力~
顺便求个三连~

:sys_video: api.2heng.xin/bilibili/og.php?
:sys_bilibili: t.bilibili.com/504068838017867

太强了。。。前段时间看了一遍svg文档结果回头来都没记住 :catcry:

codepen.io/sdras/pen/YZBGNp

洗完热水澡热的一批,不用睡了 :pio_die:

ES2021 Logical assignment operators

Assignment operator Equivalent to Only assigns if a is
a ||= b a || (a = b) Falsy
a &&= b a && (a = b) Truthy
a ??= b a ?? (a = b) Nullish
Show older
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。