HTML5 SVG带圆形进度条动画的提交按钮特效
时间:2016-03-08
简要教程 这是一款非常实用的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;
- }
复制代码 然后在为提交按钮提供一些基本样式,并设置过渡动画效果。
- Undo
- Redo全屏常用
- 纯文本
- 微软雅黑3 Hr
- B I U Color BgColor Url Unlink
- Table
- Removeformat
- AutotypesetLeftCenterRight
- FloatLeftFloatRightOrderedlistUnorderedlist表情图片附件引用代码
复制代码 在鼠标滑过提交按钮的时候,修改按钮的背景颜色和文字颜色。
- .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代码请参考下载文件。
本文版权属于jQuery之家,转载请注明出处:http://www.htmleaf.com/html5/SVG/201507172244.html