1.基本目标

这是一个96%电量的电池图标,现需要 0%,10%,13%,15%,19%,21%,50%的电量图标,且电量会因大小不同有颜色变化,0%-10%红色,10%-50%黄色,50%以上绿色。

2.实现

实现了一个电量均匀递增的网页动画,且按空格可以暂停,方便截图。

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><title>电池图标</title>
</head>
<body><div class="batteryIcon"><span class="batteryIconBody"><span id="batteryIconProgress" class="batteryIconProgress"></span><span class="batteryIconHead"></span></span></div><div class="batteryIconContent" id="batteryIconContent"></div>
</body>
</html>
<style>body {text-align: center
}
.batteryIcon {margin: 200px auto 0 auto;width: 90px;
}
span {display: block;
}
.batteryIconBody {position: relative;width: 80px;height: 30px;border: 6px solid #333;border-radius: 2px;-webkit-border-radius: 2px;-moz-border-radius: 2px;
}
.batteryIconHead {position: relative;height: 15px;width: 8px;background: #333;display: block;position: absolute;top: 8px;left: 82px;
}
.batteryIconProgress {height: 30px;
}
.batteryIconContent {position: relative;
}
.beginButton {margin-top: 100px;
}</style>
<script>var percent = {value:0};var flag = 0;window.onload = function () {var timer = setInterval("testBegin()", 210);document.onkeydown=function(e){if(e.code == 'Space'){if(flag == 0){flag = 1;clearInterval(timer);}else{flag = 0;timer = setInterval("testBegin()", 210);}}}}
//测试开始
function testBegin() {if(percent.value > 100){return}var bcontent = document.getElementById("batteryIconProgress");var label = document.getElementById("batteryIconContent");if(percent.value <= 10){bcontent.style.setProperty('background', '#ff0000');}else if(percent.value > 10 && percent.value <=50){bcontent.style.setProperty('background', '#ffd800');}else{bcontent.style.setProperty('background', '#00ff21');}bcontent.style.setProperty('width', '' + 80 * percent.value / 100 + '');label.innerText = ((percent.value) + "%");percent.value++;
}</script>

3.进阶目标

现有100组电池数据,且需要保证截图的大小一致

思路:为保证截图一致,肯定不能使用手动截图,且100组数据,排序后也需要反复暂停100次,故采用自动下载的方式

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><title>电池图标</title><script src="html2canvas.js"></script>
</head>
<body><div  style="width: 120px;" ><div class="batteryIcon" id="battery" style="width: 96px;"><span class="batteryIconBody"><span id="batteryIconProgress" class="batteryIconProgress"></span><span class="batteryIconHead"></span></span></div><div class="batteryIconContent" id="batteryIconContent"></div></div></body>
</html>
<style>body {text-align: center
}
.batteryIcon {margin: 200px auto 0 auto;width: 90px;
}
span {display: block;
}
.batteryIconBody {position: relative;width: 80px;height: 30px;border: 6px solid #333;border-radius: 2px;-webkit-border-radius: 2px;-moz-border-radius: 2px;
}
.batteryIconHead {position: relative;height: 15px;width: 8px;background: #333;display: block;position: absolute;top: 8px;left: 82px;
}
.batteryIconProgress {height: 30px;
}
.batteryIconContent {position: relative;
}
.beginButton {margin-top: 100px;
}</style>
<script>let arr = [0, 10, 13, 15, 19, 21, 50]var percent = {value:0};var flag = 0;let index = 0;let x = setInterval(() => {if(index >= arr.length){clearInterval(x);}else{percent.value = arr[index];var bcontent = document.getElementById("batteryIconProgress");var label = document.getElementById("batteryIconContent");if(percent.value <= 10){bcontent.style.setProperty('background', '#ff0000');}else if(percent.value > 10 && percent.value <=50){bcontent.style.setProperty('background', '#ffd800');}else{bcontent.style.setProperty('background', '#00ff21');}bcontent.style.setProperty('width', '' + 80 * percent.value / 100 + '');label.innerText = ((percent.value) + "%");html2canvas(document.getElementById('battery')).then(function(canvas) {let img = convertCanvasToImage(canvas);downloadIamge(img)});index++;}},1000)function convertCanvasToImage(canvas) {var image = new Image();image.src = canvas.toDataURL("image/png");return image;
}function downloadIamge(img) {var a = document.createElement('a');a.download = percent.value - 1 || '下载图片名称';//这边是文件名,可以自定义a.href = img.src;document.body.appendChild(a);a.click();document.body.removeChild(a);}</script>

把代码保存到1.html,将所需的电池电量数据存放到arr数组中,保存文件后双击运行后即可实现批量下载。批量下载需要额外的html2canvas.js

代码下载链接

基于JavaScript的电池图标批量下载相关推荐

  1. C#实现图标批量下载

    本文略微有些长,花了好几晚时间编辑修改,若在措辞排版上有问题,请谅解.本文共分为四篇,下面是主要内容,也是软件开发基本流程. 阶段 描述 需求分析 主要描述实现本程序的目的及对需求进行分析,即为什么要 ...

  2. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  3. 爬虫小案例:基于Bing关键词批量下载图片(第二版)

    一.需求: 基于Bing网站,输入关键词,批量下载图片保存到本地 二.代码展示: import requests from lxml import etree import os from multi ...

  4. 爬虫小案例:基于Bing关键词批量下载图片

    一.需求: 基于Bing网站,输入关键词,批量下载图片保存到本地 二.演示: 三.直接上代码 import os import urllib.request import urllib.parse f ...

  5. JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载

    JavaScript 多文件下载 HTML5中 a 标签新增了一个属性 download,一般情况下,用户点击a链接浏览器会打开对应的链接地址,如果链接地址是一个文件如(xxx.rar.xxx.jpg ...

  6. 阿里巴巴矢量图标库批量下载图标

    阿里巴巴矢量图标库是前端工程师常用到的一个网站.网址:阿里巴巴矢量图标库 但是每次下载图标都要挨个点击一下下载按钮,页面不提供批量下载. 操作起来很不方便. 后来我在网上查询,总算找到批量下载的方法, ...

  7. 超棒的免费电池图标下载

    免费的各种电池矢量图标效果,相信有你需要的一款! 阅读原文:超棒的免费电池图标下载

  8. JavaScript前端:与PDF.js结合,实现网页PDF内容批量下载

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JavaScript前端:与PDF.js结合,实现网页PDF内容批量下载 前言 一.PDF.js是什么? 二.PDF.js单个PDF文 ...

  9. 基于 java 的批量下载压缩包的实现

    controller 代码 @ApiOperation(value = "系统文件批量下载接口", produces = "application/octet-strea ...

最新文章

  1. 16、设计模式-行为型模式-命令模式
  2. 要上进总会有时间的,要放松也总会有理由的——记录2年出版2本书带给我的改变,同时分享写书和写博客的技巧...
  3. 修改ie9默认的quirk模式
  4. AngularJS $q
  5. 机器学习之tensorflow出现的一些问题
  6. 我是如何使用laydate日历插件更换掉老项目不好用的日历插件datepicker的
  7. Docker04-镜像
  8. 《Effective C#》Item 20:区分接口实现与虚函数重载
  9. const 修饰的对象属性可以修改,但是修饰的常量就不可以修改
  10. 华夏基金:养老是基金业下一个20年最大风口
  11. linux命令、vi编辑器常用命令
  12. csp-s2020 T1儒略日
  13. I.MX6UL主板TF卡启动Linux的实现(一)-TF卡的简要介绍及供电的实现
  14. CSS全局样式,震撼来袭免费下载!
  15. 人脸识别(一)调用face++实现人脸检测
  16. Mysql如何实现隔离级别 - 可重复读和读提交 源码分析
  17. firefox添加搜狗搜索引擎搜索时乱码
  18. Linux虚拟文件系统vfs及proc详解
  19. python怎么设置为中文-python设置中文界面
  20. 使用Fiddler定位前后端问题

热门文章

  1. win10系统镜像Hash值验证
  2. vue基于Blob.js和Export2Excel.js做前端导出excel兼容ie
  3. 咸鱼ZTMR实例—土壤湿度计检测模块
  4. Conway常数是怎么得来的
  5. Java大数据BigInteger和BigDecimal
  6. 《天池精准医疗大赛-人工智能辅助糖尿病遗传风险预测》模型复现和数据挖掘-企业科研_论文作业
  7. python输出print(x+y)_Python 输出 运算 调用
  8. android网络 gps定位失败,android 网络定位失败 location为null的真正原因
  9. 如何高效阅读PDF外文文献,这一篇文章全搞定!
  10. 计算机无法查看共享的打印机,共享电脑找到了,但看不到打印机,这是为什么?如何解决?...