数据大屏之列表滚动

实现效果

主要代码

/* 列表部分的代码封装成组件 */
<script setup lang="ts">
import { ref, reactive } from "vue";
const props = defineProps({
  hotListData: {
    type: Array,
    require: true,
  },
});
</script>
<template>
  <ul>
    <li
      class="list-item"
      v-for="(item, index) in props.hotListData"
      :key="item.id"
    >
      <span>
        {{ item.torur }}
      </span>
      <span>{{ item.count }}</span>
      <el-progress
        :text-inside="true"
        :stroke-width="16"
        :percentage="item.percent"
        :color="item.color"
        class="list-item-progress"
      />
    </li>
  </ul>
</template>
<style scoped lang="scss">
.list-item {
  display: flex;
  justify-content: space-around;
  margin-top: 10px;
  span {
    display: inline-block;
    width: 100px;
    white-space: nowrap; /* 确保文本在一行内显示 */
    overflow: hidden; /* 隐藏溢出的内容 */
    text-overflow: ellipsis; /* 使用省略号表示溢出的文本 */
  }
  .list-item-progress {
    width: 120px;
  }
}
</style>
<script setup lang="ts">
import { ref, reactive, onMounted, computed } from "vue";
/* 将封装好的组件引入 */
import hotList from "@/components/hotList/index.vue";
/* 定义传入的数据 一般此数据是接口返回的,此处我们自己定义了一个数据 */
const hotListData = ref([
  {
    id: 1,
    torur: "峨眉山",
    percent: 80,
    count: "8.00w",
    color: "rgb(51, 133, 234)",
  },
  {
    id: 2,
    torur: "稻城亚丁",
    percent: 60,
    count: "6.00w",
    color: "rgb(239, 134, 117)",
  },
  {
    id: 3,
    torur: "九寨沟",
    percent: 50,
    count: "5.00w",
    color: "rgb(106, 196, 226)",
  },
  {
    id: 4,
    torur: "万里长城",
    percent: 40,
    count: "4.00w",
    color: "rgb(243, 181, 86)",
  },
  {
    id: 5,
    torur: "玉泉山",
    percent: 37.8,
    count: "3777",
    color: "rgb(135, 130, 245)",
  },
  {
    id: 6,
    torur: "北京故宫",
    percent: 30,
    count: "3.00w",
    color: "rgb(135, 130, 245)",
  },
  {
    id: 7,
    torur: "北京故宫1",
    percent: 30,
    count: "3.00w",
    color: "rgb(135, 130, 245)",
  },
  {
    id: 8,
    torur: "北京故宫2",
    percent: 30,
    count: "3.00w",
    color: "rgb(135, 130, 245)",
  },
  {
    id: 9,
    torur: "北京故宫3",
    percent: 30,
    count: "3.00w",
    color: "rgb(135, 130, 245)",
  },
  {
    id: 10,
    torur: "北京故宫4",
    percent: 30,
    count: "3.00w",
    color: "rgb(135, 130, 245)",
  },
]);
/* 定义 通过ref获取dom元素的变量 */
const hotlistRef = ref();
/* 定义滚动时间的变量 方便后续计算 */
const scrollTime = ref(10);
/* 通过计算属性进行拼接值(css中animation的持续时间的值) */
const animationTime = computed(() => `${scrollTime.value}ms`);
/* 是否需要第二个列表 */
const isNeedScroll = ref(true);
/* 动态获取列表的高度及计算animation的持续时间*/
const setScroll = () => {
  const height = hotlistRef.value.$el.clientHeight;
  scrollTime.value = height * 50;
  //5000s 5000ms
};
/* 一进入页面调用 setScroll方法*/
onMounted(() => {
  setScroll();
});
</script>
<template>
  <div class="screen-right-hot-list">
    <div :class="{ 'scroll-box': isNeedScroll }">
      <hotList :hotListData="hotListData" ref="hotlistRef"></hotList>
      <hotList :hotListData="hotListData" v-if="isNeedScroll"></hotList>
    </div>
  </div>
</template>

<style scoped lang="scss">
.screen-right-hot-list {
  height: 200px;
  width: 300px;
  margin: 100px auto;
  overflow: hidden;
  background-color: #fff;
  padding-right: 10px;
  .scroll-box {
    /* animation:动画名称 持续时间 匀速 循环 */
    /* css中使用v-bind是vue3的语法 */
    animation: scrolltop v-bind(animationTime) linear infinite;
  }
/* 定义动画怎么动(关键帧)*/
  @keyframes scrolltop {
    /* 0% 开始位置 */
    0% {
      transform: translateY(0);
    }
    /* 100% 结束位置 沿着y轴向上平移50% 正值向下 负值向上 */
    100% {
      transform: translateY(-50%);
    }
  }
}
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现HTML数据大屏数字滚动增加的方法有很多种,以下是其中一种常见的实现方式: 1. 首先,在HTML中创建一个用于展示数字的容器,使用div标签,并设置一个唯一的id,例如:<div id="numberContainer"></div>。 2. 在CSS中设置数字容器的样式,如字体大小、对齐方式等。 3. 使用JavaScript获取到要展示的数字,并存储在一个变量中。 4. 使用JavaScript编写一个函数来实现数字滚动效果。该函数需要通过间隔时间逐渐增加数字的值,并将值更新到数字容器中。可以使用setInterval函数和innerHTML属性实现这一功能。 5. 在页面加载完成后,调用该函数,以实现数字滚动增加效果。 具体的代码示例如下: ```html <!DOCTYPE html> <html> <head> <style> #numberContainer { font-size: 36px; text-align: center; } </style> </head> <body> <div id="numberContainer"></div> <script> var targetNumber = 0; // 要展示的目标数字 var currentNumber = 0; // 当前数字 function increaseNumber() { var container = document.getElementById("numberContainer"); currentNumber++; // 每次增加1 container.innerHTML = currentNumber; // 更新数字容器的内容 if (currentNumber >= targetNumber) { clearInterval(intervalId); // 达到目标数字停止滚动 } } // 设置目标数字 targetNumber = 100; // 假设目标数字是100 // 每隔200毫秒调用一次increaseNumber函数 var intervalId = setInterval(increaseNumber, 200); </script> </body> </html> ``` 通过以上的代码,可以在页面上看到数字从0逐渐增加到目标数字100的滚动效果。可以根据实际需求调整目标数字、滚动速度和样式等参数。 ### 回答2: 在HTML中,可以使用JavaScript来实现数据大屏数字的滚动增加效果。以下是实现该效果的步骤: 1. Html结构 首先,在HTML文件中创建一个容器元素来显示数字,例如使用一个div元素来包裹数字。 ```html <div id="number-container"></div> ``` 2. JavaScript代码 然后,在JavaScript中编写代码来实现数字滚动增加的效果。可以使用定时器(setInterval)来不断更新数字的值,并将其显示在容器中。 ```javascript var numberContainer = document.getElementById('number-container'); var startNumber = 0; var endNumber = 1000; var duration = 3000; // 动画持续时间(毫秒) var interval = 20; // 更新数字的时间间隔(毫秒) var step = (endNumber - startNumber) / (duration / interval); var currentNumber = startNumber; var updateNumber = setInterval(function() { currentNumber += step; if (currentNumber >= endNumber) { clearInterval(updateNumber); currentNumber = endNumber; // 确保数字最终到达目标值 } numberContainer.innerHTML = currentNumber.toFixed(0); // 使用toFixed方法保留整数显示 }, interval); ``` 以上代码中,我们设定了起始数字(startNumber)和目标数字(endNumber),并指定了动画持续时间(duration)和更新数字的时间间隔(interval)。通过计算每一步的增量(step),在定时器中逐步更新当前数字(currentNumber),并将其显示在容器元素(numberContainer)中。 3. 样式设置 为了使数字显示更加美观,可以通过CSS样式对容器元素进行设置,例如设置字体大小、颜色等。 ```css #number-container { font-size: 48px; color: red; } ``` 通过以上步骤,我们可以实现数字滚动增加的效果。可以根据实际需求调整起始数字、目标数字、动画持续时间和更新时间间隔等参数,来满足不同的需求。 ### 回答3: HTML数据大屏数字滚动增加可以通过以下步骤实现。首先,我们需要在HTML中创建一个元素来显示要滚动的数字。 ```html <div id="counter">0</div> ``` 然后,我们可以使用JavaScript来控制数字的增加和滚动效果。首先,我们需要获取要滚动的数字的元素。 ```javascript var counter = document.getElementById('counter'); ``` 接下来,我们可以使用一个计时器来控制数字的自增。我们可以使用`setInterval`函数每隔一定时间增加数字并更新显示。 ```javascript var count = 0; var increment = 1; // 增加的步长 var interval = 100; // 每隔100毫秒增加一次 function scrollNumber() { count += increment; counter.innerText = count; } setInterval(scrollNumber, interval); ``` 在上面的代码中,我们创建了一个变量`count`来存储当前的数字,`increment`表示每次增加的步长,`interval`表示每次增加的时间间隔。 最后,我们需要在CSS中添加一些样式来控制数字的显示效果。我们可以使用`text-align`属性来控制数字的对齐方式,使用`font-family`和`font-size`属性来控制数字的字体和大小。 ```css #counter { text-align: center; font-family: Arial, sans-serif; font-size: 48px; } ``` 通过以上步骤,我们就可以实现HTML数据大屏数字滚动增加的效果。每隔一定时间,数字会以指定的步长自增并滚动显示在页面中的指定元素上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值