经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
【技术实战】Vue技术实战【四】
来源:cnblogs  作者:程序员天佑  时间:2023/7/28 8:48:55  对本文有异议

需求实战一

效果展示

代码展示

  1. <template>
  2. <ARow>
  3. <ACol>
  4. <a-statistic-countdown
  5. :value="deadline"
  6. format="HH:mm:ss:SSS"
  7. class="countdown"
  8. />
  9. </ACol>
  10. </ARow>
  11. </template>
  12. <script setup lang="ts">
  13. const deadline=Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30;
  14. </script>
  15. <style scoped>
  16. .countdown {
  17. font-size: 48px;
  18. color: #fff;
  19. padding: 10px;
  20. border-radius: 5px;
  21. box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
  22. }
  23. </style>

代码解读

这段代码是一个Vue组件,用于展示一个倒计时。代码中使用了Ant Design Vue库中的a-statistic-countdown组件来实现倒计时功能。
 
在模板部分,使用了<ARow>和<ACol>组件来创建一个行列布局,将倒计时组件放置在列中。倒计时组件的value属性绑定到deadline变量,表示倒计时的截止时间。format属性指定了倒计时的显示格式为"HH:mm:ss:SSS",即时、分、秒和毫秒。class属性设置了倒计时组件的样式为countdown。
 
在脚本部分,使用Date.now()获取当前时间戳,并通过加法运算计算出倒计时的截止时间。这里的计算是将当前时间加上2天(1000 * 60 * 60 * 24 * 2毫秒)和30秒(1000 * 30毫秒)。
 
在样式部分,使用了scoped关键字将样式限定在当前组件中。.countdown选择器设置了倒计时组件的样式,包括字体大小、颜色、内边距、边框圆角和阴影效果。
 
这段代码可以用于在Vue项目中展示一个带有倒计时功能的UI组件,可以根据需要进行修改和扩展。

需求实战二

效果展示

代码展示

  1. <template>
  2. <ARow>
  3. <ACol>
  4. <a-statistic-countdown
  5. :value="deadline"
  6. format="HH:mm:ss:SSS"
  7. style="
  8. margin-right: 50px;
  9. font-size: 48px;
  10. color: #00aaff;
  11. text-shadow: 0 0 10px #00aaff, 0 0 20px #00aaff, 0 0 30px #00aaff;
  12. animation: heartbeat 1s infinite;
  13. background: linear-gradient(45deg, #000000, #000000);
  14. background-clip: text;
  15. -webkit-background-clip: text;
  16. -webkit-text-fill-color: transparent;
  17. border: 2px solid #00aaff;
  18. border-radius: 10px;
  19. padding: 10px;
  20. box-shadow: 0 0 10px rgba(0, 0, 0, 0.5), 0 0 10px rgba(0, 170, 255, 0.5);
  21. "
  22. />
  23. </ACol>
  24. </ARow>
  25. </template>
  26. <script setup lang="ts">
  27. const deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30;
  28. </script>
  29. <style scoped>
  30. @keyframes heartbeat {
  31. 0% {
  32. transform: scale(1);
  33. }
  34. 50% {
  35. transform: scale(1.1);
  36. }
  37. 100% {
  38. transform: scale(1);
  39. }
  40. }
  41. </style>

代码解读

这段代码是一个Vue组件模板,用于展示一个倒计时的统计数字。具体解读如下:
 
1. 在模板中,使用了<a-statistic-countdown>组件来展示倒计时。:value="deadline"表示将deadline变量的值作为倒计时的截止时间。format="HH:mm:ss:SSS"表示倒计时的显示格式为时:分:秒:毫秒。
 
2. 在样式中,设置了一系列样式属性来美化倒计时的显示效果。其中包括字体大小、颜色、文本阴影、动画效果、背景渐变、边框、圆角、内边距和阴影等。
 
3. 在脚本中,定义了一个deadline变量,表示倒计时的截止时间。这里使用了Date.now()获取当前时间戳,并加上2天和30秒的时间作为截止时间。
 
4. 在样式中,定义了一个名为heartbeat的关键帧动画,实现了一个心跳效果。动画从初始状态开始,通过transform: scale()属性来改变元素的大小,从而实现心跳效果。
 
总体来说,这段代码实现了一个带有动态倒计时效果的统计数字展示组件,并通过一系列样式属性和动画效果来增强其视觉效果。

需求实战三

样式展示

代码展示

  1. <template>
  2. <div class="countdown-container">
  3. <ARow>
  4. <ACol>
  5. <a-statistic-countdown
  6. :value="deadline"
  7. format="HH:mm:ss:SSS"
  8. class="countdown"
  9. />
  10. </ACol>
  11. </ARow>
  12. </div>
  13. </template>
  14. <script setup lang="ts">
  15. const deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30;
  16. </script>
  17. <style scoped>
  18. .countdown-container {
  19. display: flex;
  20. justify-content: center;
  21. align-items: center;
  22. width:200px;
  23. height:200px;
  24. overflow: hidden;
  25. }
  26. .countdown {
  27. font-size: 48px;
  28. color: #00aaff;
  29. text-shadow: 0 0 10px #00aaff, 0 0 20px #00aaff, 0 0 30px #00aaff;
  30. animation: heartbeat 1s infinite;
  31. background-clip: text;
  32. border: 2px solid #00aaff;
  33. border-radius: 10px;
  34. padding: 10px;
  35. box-shadow: 0 0 10px rgba(0, 0, 0, 0.5), 0 0 10px rgba(0, 170, 255, 0.5);
  36. }
  37. @keyframes heartbeat {
  38. 0% {
  39. transform: scale(1);
  40. }
  41. 50% {
  42. transform: scale(1.1);
  43. }
  44. 100% {
  45. transform: scale(1);
  46. }
  47. }
  48. </style>

代码解读

这段代码是一个 Vue 组件,用于展示一个倒计时的效果。具体解读如下:
 
1. 在 HTML 模板中,使用了 a-statistic-countdown 组件来展示倒计时的数值。:value="deadline" 绑定了 deadline 变量作为倒计时的截止时间,format="HH:mm:ss:SSS" 设置了倒计时的数值格式为小时、分钟、秒和毫秒。
 
2. 在 <script> 标签中,使用 const 定义了一个 deadline 变量,它的值为当前时间加上两天和三十秒的时间间隔。
 
3. 在 <style> 标签中,使用了 CSS 样式来设置倒计时的样式。.countdown-container 类用于设置倒计时的容器样式,其中使用了 display: flex; 和其他属性来实现居中对齐。.countdown 类设置了倒计时数字的样式,包括字体大小、颜色、文本阴影等效果。@keyframes heartbeat 是一个动画样式,用于实现倒计时数字的心跳效果。

需求实战四

效果展示

代码展示

  1. <template>
  2. <div class="countdown-container">
  3. <ARow>
  4. <ACol span="6">
  5. <div class="countdown-wrapper">
  6. <div class="countdown-digit">{{ days }}</div>
  7. <div class="countdown-label">Days</div>
  8. </div>
  9. </ACol>
  10. <ACol span="6">
  11. <div class="countdown-wrapper">
  12. <div class="countdown-digit">{{ hours }}</div>
  13. <div class="countdown-label">Hours</div>
  14. </div>
  15. </ACol>
  16. <ACol span="6">
  17. <div class="countdown-wrapper">
  18. <div class="countdown-digit">{{ minutes }}</div>
  19. <div class="countdown-label">Minutes</div>
  20. </div>
  21. </ACol>
  22. <ACol span="6">
  23. <div class="countdown-wrapper">
  24. <div class="countdown-digit">{{ seconds }}</div>
  25. <div class="countdown-label">Seconds</div>
  26. </div>
  27. </ACol>
  28. </ARow>
  29. </div>
  30. </template>
  31. <script setup lang="ts">
  32. import { ref, watch, onMounted } from 'vue';
  33. const deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30;
  34. const days = ref(0);
  35. const hours = ref(0);
  36. const minutes = ref(0);
  37. const seconds = ref(0);
  38. const updateCountdown = () => {
  39. const remainingTime = Math.max(deadline - Date.now(), 0);
  40. days.value = Math.floor(remainingTime / (1000 * 60 * 60 * 24));
  41. hours.value = Math.floor((remainingTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  42. minutes.value = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60));
  43. seconds.value = Math.floor((remainingTime % (1000 * 60)) / 1000);
  44. };
  45. onMounted(() => {
  46. updateCountdown();
  47. setInterval(updateCountdown, 1000);
  48. });
  49. </script>
  50. <style scoped>
  51. .countdown-container {
  52. display: flex;
  53. justify-content: center;
  54. align-items: center;
  55. border: 3px solid #00aaff; /* 设置边框宽度和颜色 */
  56. border-radius: 10px; /* 设置圆角半径 */
  57. overflow: hidden;
  58. }
  59. .countdown-wrapper {
  60. display: flex;
  61. flex-direction: column;
  62. align-items: center;
  63. padding: 10px;
  64. }
  65. .countdown-digit {
  66. font-size: 48px;
  67. color: #00aaff;
  68. text-shadow: 0 0 10px #00aaff, 0 0 20px #00aaff, 0 0 30px #00aaff;
  69. animation: heartbeat 1s infinite;
  70. background-clip: text;
  71. }
  72. .countdown-label {
  73. font-size: 14px;
  74. color: #00aaff;
  75. margin-top: 5px;
  76. }
  77. @keyframes heartbeat {
  78. 0% {
  79. transform: scale(1);
  80. }
  81. 50% {
  82. transform: scale(1.1);
  83. }
  84. 100% {
  85. transform: scale(1);
  86. }
  87. }
  88. </style>

代码解读

这段代码是一个倒计时组件,用于显示距离指定截止时间还有多少天、小时、分钟和秒数。
 
在模板部分,使用了一个容器元素<div class="countdown-container">来包裹倒计时显示区域。倒计时区域被分为四个列,每个列使用<ACol>组件来布局,占据6个网格的宽度。每个列内部有一个倒计时数字和一个标签,分别使用<div class="countdown-digit">和<div class="countdown-label">来显示。
 
在脚本部分,首先定义了一个截止时间deadline,表示倒计时的结束时间。然后使用ref函数创建了四个响应式变量days、hours、minutes和seconds,用于存储倒计时的天数、小时数、分钟数和秒数。
 
接下来定义了一个updateCountdown函数,用于更新倒计时的数值。在该函数内部,通过计算当前时间与截止时间的差值,得到剩余时间。然后将剩余时间转换为天数、小时数、分钟数和秒数,并分别赋值给对应的变量。
 
在组件的生命周期钩子函数onMounted中,首先调用updateCountdown函数初始化倒计时数值,然后使用setInterval函数每隔一秒钟调用一次updateCountdown函数,实现倒计时的动态更新。
 
最后,在样式部分使用了一些CSS样式来美化倒计时组件。.countdown-container设置了边框和圆角,.countdown-digit设置了字体大小、颜色和动画效果,.countdown-label设置了字体大小和颜色。@keyframes heartbeat定义了一个心跳动画效果,使倒计时数字有一种跳动的效果。

原文链接:https://www.cnblogs.com/yyyyfly1/p/17586585.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号