• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > HTML5 SVG带圆形进度条动画的提交按钮特效

HTML5 SVG带圆形进度条动画的提交按钮特效

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5,SVG,圆形进度条等相关知识,匿名希望在学习及工作中可以帮助到您
简要教程

这是一款非常实用的HTML5 SVG带圆形进度条动画的提交按钮特效。该提交按钮在被点击之后,按钮变形为一个圆形的进度条,当进度条运行一周之后,可以设置提交成功和提交失败的两种按钮状态。

制作方法

HTML结构

制作这个提交按钮特效的HTML结构需要一个包裹容器,里面有一个提交按钮和三个<svg>元素。

<div id="progress-button" class="progress-button">
  <!-- 提交按钮 -->
  <button><span>Submit</span></button>
 
  <!-- svg 圆形进度条 -->
  <svg class="progress-circle" width="70" height="70">
    <path d="m35,2.5c17.955803,0 32.5,14.544199 32.5,32.5c0,17.955803 -14.544197,32.5 -32.5,32.5c-17.955803,
    0 -32.5,-14.544197 -32.5,-32.5c0,-17.955801 14.544197,-32.5 32.5,-32.5z"/>
  </svg>
 
  <!-- 提交成功的标记 -->
  <svg class="checkmark" width="70" height="70">
    <path d="m31.5,46.5l15.3,-23.2"/>
    <path d="m31.5,46.5l-8.5,-7.1"/>
  </svg>
 
  <!-- 提交失败的标记 -->
  <svg class="cross" width="70" height="70">
    <path d="m35,35l-9.3,-9.3"/>
    <path d="m35,35l9.3,9.3"/>
    <path d="m35,35l-9.3,9.3"/>
    <path d="m35,35l9.3,-9.3"/>
  </svg>
</div>

CSS样式

首先提交按钮容器需要设置为inline-block样式。

.progress-button {
  position: relative;
  display: inline-block;
  text-align: center;
}

然后在为提交按钮提供一些基本样式,并设置过渡动画效果。

.progress-button button {
  display: block;
  margin: 0 auto;
  padding: 0;
  width: 250px;
  height: 70px;
  border: 2px solid #1ECD97;
  border-radius: 40px;
  background: transparent;
  color: #1ECD97;
  letter-spacing: 1px;
  font-size: 18px;
  font-family: 'Montserrat', sans-serif;
  -webkit-transition: background-color 0.3s, 
                      color 0.3s, width 0.3s, 
                      border-width 0.3s, 
                      border-color 0.3s;
  transition: background-color 0.3s, 
              color 0.3s, width 0.3s, 
              border-width 0.3s, 
              border-color 0.3s;
}

在鼠标滑过提交按钮的时候,修改按钮的背景颜色和文字颜色。

.progress-button button:hover {
  background-color: #1ECD97;
  color: #fff;
}

所有的SVG元素都采用绝对定位方式来居中对齐,并且不允许有任何的pointer-events。

.progress-button svg {
  position: absolute;
  top: 0;
  left: 50%;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  pointer-events: none;
}

SVG的路径没有任何的填充色,只有描边。开始的时候它们是被隐藏起来的,透明度被设置为0。

.progress-button svg path {
  opacity: 0;
  fill: none;
}

圆形进度条通过设置描边为5个单位来创建。

.progress-button svg.progress-circle path {
  stroke: #1ECD97;
  stroke-width: 5;
}

当开始loading线程的时候,按钮会变形为圆形,和圆形进度条相同的大小。

.loading.progress-button button {
  width: 70px; /* 制作一个圆形 */
  border-width: 5px;
  border-color: #ddd;
  background-color: transparent;
  color: #fff;
}

变为圆形后,调教按钮上的文字要快速隐藏起来。

.loading.progress-button span {
  -webkit-transition: opacity 0.15s;
  transition: opacity 0.15s;
}
.loading.progress-button span,
.success.progress-button span,
.error.progress-button span {
  opacity: 0; /* keep it hidden in all states */
}

JAVASCRIPT

在javascript代码中,button是HTML元素,progressEl是SVG元素,它是代表圆形的进度条。successEl和errorEl分别代表提交成功和失败的标记,也是SVG元素。js代码中通过UIProgressButton()方法来初始化这个提交按钮特效。

function UIProgressButton( el, options ) {
  this.el = el;
  this.options = extend( {}, this.options );
  extend( this.options, options );
  this._init();
}
 
UIProgressButton.prototype._init = function() {
  this.button = this.el.querySelector( 'button' );
  this.progressEl = new SVGEl( this.el.querySelector( 'svg.progress-circle' ) );
  this.successEl = new SVGEl( this.el.querySelector( 'svg.checkmark' ) );
  this.errorEl = new SVGEl( this.el.querySelector( 'svg.cross' ) );
  // init events
  this._initEvents();
  // enable button
  this._enable();
}

其它js代码请参考下载文件。

以上就是HTML5 SVG带圆形进度条动画的提交按钮特效的内容,更多相关内容请关注微课江湖()!

您可能想查找下面的文章:

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03HTML5 的新的表单元素(datalist/keygen/output)使用介绍_html5教程技巧
  • 2017-08-06HTML5验证以及日期显示的实现详解
  • 2018-12-03小强的HTML5移动开发之路(45)——汇率计算器【1】
  • 2017-08-06HTML5无刷新改变当前url的代码
  • 2018-12-03用html5 js实现浏览器全屏
  • 2018-12-03HTML 5 应用的用户体验能达到本地应用那么好吗?
  • 2017-08-06html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
  • 2018-12-03HTML5之pushstate和popstate操作history无刷新改变当前url的详细介绍
  • 2018-12-03HBuilder 编辑器有什么故事?
  • 2017-08-06HTML5 Canvas绘制圆点虚线实例

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5语音识别标签写法附图
    • HTML5 会不会使 Linux 比 Windows 更受欢迎?
    • 用仿ActionScript的语法来编写html5——第二篇,利用Sprite来实现动画
    • html5+css3进度条倒计时动画特效代码【推荐】
    • HTML5中drawImage用法分析_html5教程技巧
    • Vue.jS的ul-li标签仿select标签
    • 前端HTML5几种存储方式的总结
    • 使用canvas绘制贝塞尔曲线_html5教程技巧
    • 关于html5中的section标签与div标签的区别(内有实例)
    • 大一计算机学生,如何自学成为一名前端开发工程师?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有