亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3.0翻牌數字組件怎么使用

發布時間:2022-04-20 15:18:59 來源:億速云 閱讀:247 作者:iii 欄目:開發技術

這篇“vue3.0翻牌數字組件怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue3.0翻牌數字組件怎么使用”文章吧。

效果:

vue3.0翻牌數字組件怎么使用

代碼:

<template>
  <div class="number-count-wrap" :class="numberSize">
    <!-- 標題 start -->
    <div class="number-title" :>{{title}}</div>
    <!-- 標題 end -->
    <div class="number-count" :class="numberAlign">
      <!-- 計數器 start -->
      <ul class="number-content">
        <template v-for="(item,index) in orderNum"
          :key="index">
        <li class="number-item" v-if="!isNaN(item)">
          <span>
            <ul class="number-list" :ref="numberItem">
              <li>0</li>
              <li>1</li>
              <li>2</li>
              <li>3</li>
              <li>4</li>
              <li>5</li>
              <li>6</li>
              <li>7</li>
              <li>8</li>
              <li>9</li>
            </ul>
          </span>
        </li>
        <li class="separator" v-else>
          {{item}}
        </li>
        </template>
      </ul>
      <!-- 計數器 end -->
      <!-- 單位 start -->
      <div class="number-unit" v-if="unit">{{unit}}</div>
      <!-- 單位 end -->
    </div>
  </div>
</template>

<script>
import { onMounted, watch, ref, reactive, toRefs } from 'vue'
export default {
  name: "numberCount",
  props: {
    numberSize: { // 字號大小 middle 中號 small 小號
      type: String,
      default: ''
    },
    title: { // 標題
      type: String,
      default: ""
    },
    titleAlign: { // 標題對齊方式
      type: String,
      default: ''
    },
    numberAlign: { //數字對齊方式
      type: String, // center 居中對齊
      default: ''
    },
    unit: { // 單位
      type: String,
      default: ""
    },
    countNum: { // 數值
      type: Number,
    },
    initDelay: { // 首次加載延時
      type: Number,
    }
  },
  setup(props) {
    const numberItemList = ref([]);
    const numberItem = (el) => {
      numberItemList.value.push(el);
    };
    var locarCountNum = props.countNum.toLocaleString()
    locarCountNum = locarCountNum.split('')
    const data = reactive({
      orderNum: locarCountNum, // 默認訂單總數
    });
    watch(props, (nval, oval) => {
      if (nval) {
        toOrderNum(nval.countNum)
      }
    })
    onMounted(() => {
      setTimeout(() => {
        toOrderNum(props.countNum) // 這里輸入數字即可調用
      }, props.initDelay);
    })
    function setNumberTransform () {
      const numberItems = numberItemList.value // 拿到數字的ref,計算元素數量
      const numberArr = data.orderNum.filter(item => !isNaN(item))
      // 結合CSS 對數字字符進行滾動,顯示訂單數量
      for (let index = 0; index < numberItems.length; index++) {
        const elem = numberItems[index]
        elem.style.transform = `translate(0%, -${numberArr[index] * 10}%)`
      }
    }
    // 處理總訂單數字
    function toOrderNum(num) {
      // console.log('num',num)
      // num = num.toString()
      // 把訂單數變成字符串
      // if (num.length < 7) {
      //   num = '0' + num // 如未滿八位數,添加"0"補位
      //   toOrderNum(num) // 遞歸添加"0"補位
      // } else if (num.length === 7) {
      //   // 訂單數中加入逗號
      //   // num = num.slice(0, 2) + ',' + num.slice(2, 5) + ',' + num.slice(5, 8)
      //   data.orderNum = num.split('') // 將其便變成數據,渲染至滾動數組
      // } else {
      //   // 訂單總量數字超過八位顯示異常
      //   // _this.$message.warning('總量數字過大')
      // }
      setNumberTransform()
    }
    return {
      setNumberTransform,
      toOrderNum,
      numberItem,
      ...toRefs(data)
    }
  }
};
</script>
<style scoped lang="less">
.number-count-wrap {
  .number-title {
    font-size: .18rem;
    color: #FFFFFF;
    line-height: 1;
    margin-bottom: .15rem;
    font-weight: bold;
  }
  .number-count {
    display: flex;
    justify-content: flex-start;
    align-items: flex-end;
    .number-content {
      display: flex;
      justify-content: flex-start;
      align-items: center;
        /*文字禁止編輯*/
      -moz-user-select: none; /*火狐*/
      -webkit-user-select: none; /*webkit瀏覽器*/
      -ms-user-select: none; /*IE10*/
      -khtml-user-select: none; /*早期瀏覽器*/
      user-select: none;
      .number-item {
        width: 0.32rem;
        // height: 1.8rem;
        display: flex;
        justify-content: center;
        align-items: center;
        margin: 0 0.02rem;
        &>span {
          position: relative;
          display: inline-block;
          width: 100%;
          height: 0.4rem;
          overflow: hidden;
          background: linear-gradient(180deg, #2167D0 0%, #164D8F 100%);
          box-shadow: 0 .04rem 0 0 #176ED6;
          border-radius: .06rem;
          border: 1px solid white;
          padding-bottom: .04rem;
          box-sizing: border-box;
          .number-list{
            transition: transform 1s ease-in-out;
            text-align: center;
            font-weight: 600;
            li {
              height: 0.4rem;
              display: flex;
              justify-content: center;
              align-items: center;
              font-size: .3rem;
              font-weight:400;
              color: white;
              padding-bottom: .04rem;
              box-sizing: border-box;
            }
          }
        }
      }
      .separator {
        font-size: .3rem;
        font-weight: normal;
        color: #FFFFFF;
        line-height: 1;
        margin: 0 0.025rem;
      }
    }
    .number-unit {
      margin-left: .1rem;
      font-size: .18rem;
      font-weight: normal;
      color: #B1B7BC;
    }
  }
  .center {
    justify-content: center;
  }
}

// middle start
.middle {
  .number-title {
    font-size: .12rem;
    margin-bottom: .10rem;
  }
  .number-count {
    .number-content {
      .number-item {
        width: 0.2rem;
        margin: 0 0.0175rem;
        &>span {
          height: 0.25rem;
          box-shadow: 0 .025rem 0 0 #176ED6;
          border-radius: .04rem;
          padding-bottom: .025rem;
          .number-list{
            li {
              height: 0.25rem;
              font-size: .2rem;
              font-weight:400;
              color: white;
              box-sizing: border-box;
            }
          }
        }
      }
      .separator {
        font-size: .2rem;
        margin: 0 0.025rem;
      }
    }
    .number-unit {
      margin-left: .06rem;
      font-size: .12rem;
    }
  }
}
// middle end
</style>

以上就是關于“vue3.0翻牌數字組件怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

南投市| 河源市| 曲周县| 丰顺县| 岢岚县| 吉林市| 疏勒县| 安塞县| 夏邑县| 宣恩县| 长泰县| 高雄市| 阳谷县| 马公市| 阜宁县| 都安| 清新县| 新竹市| 嘉祥县| 霸州市| 信阳市| 洛宁县| 武定县| 盐源县| 遵义市| 绵竹市| 浏阳市| 涡阳县| 丰台区| 板桥市| 五华县| 西乌珠穆沁旗| 株洲市| 莆田市| 昌平区| 柯坪县| 荣昌县| 丰城市| 甘泉县| 青阳县| 公安县|