技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营
卡卡网是专业的网站测速平台,网速测试,测试网站速度,就来卡卡网 ~
问题反馈网络日志

【DiyVM】沙田机房/香港云/回国CN2线路/AMD EPYC/39元一月5M/CN2海外云主机 24元/月BGP+CN2海外云 低至25元/月海外主机 低至$2/月

DiyVM:香港VPS惊爆价36元一月
★站长变现★特色悬浮小图标广告
5M CN2 GIA云主机 24元起
【转化好产品,官方高价收量】
一一一云主机 26元起一一一
官方高价收量,每日稳定结算

一一云主机 24元 3折起一一
AWS核心代理U充值 免注册开户
海外CN2云 低至$2.5/月
海外云低至2折 298/年
免费测试★APK免杀 谷歌过保护
官方收量CPA/CPS长期稳定

海外主机 5M CN2 低至$2/月
恒创科技 一 海外服务器 ● 高速稳定
★解决安装报毒★谷歌过保护机制
CN2 GIA/1000Mbps $111/月
超级签★免杀★加固★满意付款
全球云主机 3天试用再买

【菠萝云】香港4G内存99元,马上开通
亿人互联-津/京BGP托管租用/VPS
苹果签名/APP封装/远控免杀
10M CN2海外云VPS 53元/月
一一站长/主播好变现一一有流量就来
站长变现 特色悬浮小图标广告

实力产品变现
实力产品变现
实力产品变现
实力产品变现
实力产品变现
实力产品变现

赞助商

分类目录

赞助商

最新文章

字体单位是相对测量单位,是根据其他一些值计算的,可以动态变化。与字体相关的测量单...
stroke-width设置形状的描边粗细,如果在 HTML 中,框架是从外边缘...
本文给大家介绍10款用SVG蒙版制作的图片转场/过渡动画,并分析如何实现它们。
CSS 数据类型<filter-function>代表可以改变输入图...
CSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个...
drop-shadow() 是一个CSS 过滤器函数,其将投影效果应用于输入图像...
本文给大家介绍一个SVG实现的网页气泡动画效果。 

搜索

CSS+JS实现的下载按钮动画(滚动数字+进度条动画)

作者:admin    时间:2023-4-11 21:41:35    浏览:509

当点击下载按钮时,如果想在下载过程中,显示一下进程动画,或许本文介绍的实例会满足要求。

效果如图

 

demodownload

实例介绍

本实例的按钮由CSS创建,需要JavaScript实现交互。当点击“Download”按钮时,按钮里显示从0%到100%的向上滚动数字,同时按钮底部出现一条从左向右延长的进度条,按钮左侧是一个下载动画图标。

HTML代码

该实例的HTML代码较多,不过结构还是很清晰的。

下载按钮是一个div,外部为一个a标签,其class值为dl-button

class="icon"div是一个图标容器,该下载图标是用SVG画出。

class="counter"div是滚动百分比容器。

class="progress"div是进度条动画容器。

  1. <a class="dl-button" href="">
  2.   <div>
  3.     <div class="icon">
  4.       <div>
  5.         <svg class="arrow" viewBox="0 0 20 18" fill="currentColor">
  6.           <polygon points="8 0 12 0 12 9 15 9 10 14 5 9 8 9"></polygon>
  7.         </svg>
  8.         <svg class="shape" viewBox="0 0 20 18" fill="currentColor">
  9.           <path d="M4.82668561,0 L15.1733144,0 C16.0590479,...,0 4.82668561,0 Z"></path>
  10.         </svg>
  11.       </div><span></span>
  12.     </div>
  13.     <div class="label">
  14.       <div class="show default"> Download</div>
  15.       <div class="state">
  16.         <div class="counter">
  17.           <ul>
  18.             <li></li>
  19.             <li>1</li>
  20.           </ul>
  21.           <ul>
  22.             <li>0</li>
  23.             <li>1</li>
  24.             <li>2</li>
  25.             <li>3</li>
  26.             <li>4</li>
  27.             <li>5</li>
  28.             <li>6</li>
  29.             <li>7</li>
  30.             <li>8</li>
  31.             <li>9</li>
  32.             <li>0</li>
  33.           </ul>
  34.           <ul>
  35.             <li>0</li>
  36.             <li>1</li>
  37.             <li>2</li>
  38.             <li>3</li>
  39.             <li>4</li>
  40.             <li>5</li>
  41.             <li>6</li>
  42.             <li>7</li>
  43.             <li>8</li>
  44.             <li>9</li>
  45.             <li>0</li>
  46.             <li>1</li>
  47.             <li>2</li>
  48.             <li>3</li>
  49.             <li>4</li>
  50.             <li>5</li>
  51.             <li>6</li>
  52.             <li>7</li>
  53.             <li>8</li>
  54.             <li>9</li>
  55.             <li>0</li>
  56.             <li>1</li>
  57.             <li>2</li>
  58.             <li>3</li>
  59.             <li>4</li>
  60.             <li>5</li>
  61.             <li>6</li>
  62.             <li>7</li>
  63.             <li>8</li>
  64.             <li>9</li>
  65.             <li>0</li>
  66.           </ul><span>%</span>
  67.         </div><span>Done</span>
  68.       </div>
  69.     </div>
  70.     <div class="progress"></div>
  71.   </div>
  72. </a>
x

CSS代码

该实例按钮由CSS创建,包含几个主要的类。

.dl-button设置下载按钮的样式。

 

  1. .dl-button {
  2.   --duration: 4000;
  3.   --success: #16BF78;
  4.   --grey-light: #99A3BA;
  5.   --grey: #6C7486;
  6.   --grey-dark: #3F4656;
  7.   --light: #CDD9ED;
  8.   --shadow: rgba(18, 22, 33, .6);
  9.   --shadow-dark: rgba(18, 22, 33, .85);
  10.   display: block;
  11.   text-decoration: none;
  12.   perspective: 500px;
  13. }

div .icon设置下载图标的样式。

 

  1. .dl-button > div .icon {
  2.   --color: var(--grey);
  3.   margin-right: 12px;
  4.   position: relative;
  5.   transform: translateZ(8px);
  6. }
  7. .dl-button > div .icon div {
  8.   overflow: hidden;
  9.   position: relative;
  10.   width: 20px;
  11.   height: 22px;
  12. }
  13. .dl-button > div .icon div:before, .dl-button > div .icon div:after {
  14.   content: "";
  15.   position: absolute;
  16.   width: 2px;
  17.   height: 2px;
  18.   top: 2px;
  19.   transition: opacity 0.3s ease;
  20. }

div .label设置按钮状态(文字)的样式。

 

  1. .dl-button > div .label {
  2.   --color: var(--grey-dark);
  3.   line-height: 22px;
  4.   font-size: 16px;
  5.   font-weight: 500;
  6.   color: var(--color);
  7.   position: relative;
  8.   transition: color 0.4s ease;
  9.   transform: translateZ(8px);
  10. }
  11. .dl-button > div .label > div {
  12.   display: flex;
  13.   transition: opacity 0.25s ease;
  14. }
  15. .dl-button > div .label > div:not(.show) {
  16.   position: absolute;
  17.   left: 0;
  18.   top: 0;
  19.   opacity: 0;
  20. }
  21. .dl-button > div .label > div.hide {
  22.   opacity: 0;
  23. }

此外,div .counter设置滚动百分比数字的样式,div .progress设置进度条的样式,相应CSS代码可在效果演示窗口或下载源码包里查看。

JavaScript

本实例点击按钮的动画交互使用JavaScript来实现,代码如下:

  1. $('.dl-button').on('click', e => {
  2.  
  3.   let btn = $(e.currentTarget),
  4.   label = btn.find('.label'),
  5.   counter = label.find('.counter');
  6.  
  7.   if (!btn.hasClass('active') && !btn.hasClass('done')) {
  8.  
  9.     btn.addClass('active');
  10.  
  11.     setLabel(label, label.find('.default'), label.find('.state'));
  12.  
  13.     setTimeout(() => {
  14.       counter.addClass('hide');
  15.       counter.animate({
  16.         width: 0 },
  17.       400, function () {
  18.         label.width(label.find('.state > span').width());
  19.         counter.removeAttr('style');
  20.       });
  21.       btn.removeClass('active').addClass('done');
  22.     }, getComputedStyle(btn[0]).getPropertyValue('--duration'));
  23.  
  24.   }
  25.  
  26.   return false;
  27.  
  28. });
  29.  
  30. function setLabel(div, oldD, newD, callback) {
  31.   oldD.addClass('hide');
  32.   div.animate({
  33.     width: newD.outerWidth() },
  34.   200, function () {
  35.     oldD.removeClass('show hide');
  36.     newD.addClass('show');
  37.     div.removeAttr('style');
  38.     if (typeof callback === 'function') {
  39.       callback();
  40.     }
  41.   });
  42. }

总结

本文介绍了如何使用CSS+JS实现下载按钮的动画效果,该下载动画包含三个部分:下载图标动画,滚动的数字和进度条动画。如果你喜欢这个效果,可直接下载源码使用。

相关文章

x
广告: 【限时】云主机 24元/月