主要是用JavaScript和css做出来的简单效果
优点:简洁、显示清楚……算了编不下去了
缺点:需要刷新进行电池的更新 21-9-28更新已解决
测试结果:
谷歌浏览器 完美运行
火狐浏览器 不兼容
Microsoft Edge 浏览器 完美运行
其他浏览器 未测试
效果图
效果图如下:
充电中:
未在充电效果:
话不多说 上代码
源码HTML
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!--主题-->
<section class="sec">
<!--主题方格-->
<div class="box">
<!-- 方格中央-->
<div class="content">
<h3>电池</h3>
<!-- 电池外方格-->
<div class="batteryShape">
<!-- 电池内部阴影-->
<div class="level">
<!-- 电池显示效果-->
<div class="percentage">
</div>
</div>
</div>
<!-- 电池电量显示-->
<div class="percent">
50%
</div>
<!-- 是否在充电-->
<p class="batteryTime">充电状态</p>
</div>
</div>
</section>
<script type="text/javascript">
<!-- 获取电池显示效果与电池电量显示-->
var pt = document.querySelector('.percentage');
var p = document.querySelector('.percent');
//获取电池状态
navigator.getBattery().then(function(battery) {
// 是否正在充电,yes-充电
console.log("Battery charging? " + (battery.charging ? "yes" : "no"));
// 当前剩余电量
console.log("Battery level: " + battery.level * 100 + "%");
pt.style.width = battery.level * 100 + "%";
p.innerHTML = battery.level * 100 + "%"
var charging = battery.charging ? "yes" : "no";
if (charging === "yes"){
document.getElementsByClassName('batteryTime')[0].innerHTML = '正在充电';
}else {
document.getElementsByClassName('batteryTime')[0].innerHTML = '未在充电';
}
});
</script>
</body>
</html>
源码CSS
CSS
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
section{
position: relative;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
section::before{
content: '';
position: absolute;
width: 240px;
height: 240px;
background: linear-gradient(#f3f3f3,#9c27b0);
border-radius: 50%;
transform: translate(-150px,-100px);
}
section::after{
content: '';
position: absolute;
width: 251px;
height: 251px;
background: linear-gradient(#fd2c72, rgba(243, 243, 243, 0.51));
border-radius: 50%;
transform: translate(160px,180px);
}
.box{
position: relative;
width: 240px;
height: 300px;
background: rgba(255, 255, 255, 0.1);
z-index: 1;
box-shadow: 0 25px 45px rgba(0,0,0,.25);
border: 1px solid rgba(255,255,255,.25);
border-right: 1px solid rgba(255,255,255,.1);
border-bottom: 1px solid rgba(255,255,255,.1);
backdrop-filter: blur(25px);
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
}
.content{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.box h3{
color: #9c27b0;
font-weight: 500;
font-size: 1.3em;
letter-spacing: 3px;
}
.box .batteryShape{
position: relative;
width: 140px;
height: 65px;
margin: 20px 0;
border: 3px solid #333;
border-radius: 10px;
}
.batteryShape::before{
content: '';
position: absolute;
top: 50%;
right: -12px;
margin-left: 2px;
transform: translateY(-50%);
width: 7px;
height: 16px;
background: #333;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.batteryShape::after{
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 50%;
background: rgba(255,255,255,.1);
}
.level{
position: absolute;
top: 4px;
right: 4px;
bottom: 4px;
left: 4px;
border-radius: 4px;
overflow: hidden;
}
.percentage{
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 50%;
background: linear-gradient(90deg,#9c27b0,#fd2c72);
}
.batteryTime{
font-size: 0.6em;
color: #333333;
letter-spacing: -0.6px;
}
21-9-28更新
主要增加了监听事件,电池有变化就进行更新,不用刷新页面来进行更新电池状态
<script type="text/javascript">
<!-- 获取电池显示效果与电池电量显示-->
var pt = document.querySelector('.percentage');
var p = document.querySelector('.percent');
//获取电池状态
navigator.getBattery().then(function(battery) {
// 是否正在充电,yes-充电
console.log("Battery charging? " + (battery.charging ? "yes" : "no"));
// 当前剩余电量
console.log("Battery level: " + battery.level * 100 + "%");
//初始化电量
pt.style.width = battery.level * 100 + "%";
p.innerHTML = battery.level * 100 + "%"
//监听电量变化
battery.addEventListener("levelchange", function (e) {
console.log("电量水平变化: ", battery.level);
pt.style.width = battery.level * 100 + "%";
p.innerHTML = battery.level * 100 + "%"
}, false);
//初始化电池状态变化
var charging = battery.charging ? "yes" : "no";
if (charging === "yes"){
document.querySelector('.batteryTime').innerHTML = '正在充电';
}else {
document.querySelector('.batteryTime').innerHTML = '未在充电';
}
//监听电池充电状态变化
battery.addEventListener("chargingchange", function (e) {
console.warn("电池充电状态变化: ", battery.charging);
var cd = battery.charging?'yes':'no';
if (cd == 'yes'){
document.getElementsByClassName('batteryTime')[0].innerHTML = '正在充电';
}else {
document.getElementsByClassName('batteryTime')[0].innerHTML = '未在充电';
}
}, false);
});
</script>
//监听电量变化
battery.addEventListener("levelchange", function (e) {
console.log("电量水平变化: ", battery.level);
pt.style.width = battery.level * 100 + "%";
p.innerHTML = battery.level * 100 + "%"
}, false);
//监听电池充电状态变化
battery.addEventListener("chargingchange", function (e) {
console.warn("电池充电状态变化: ", battery.charging);
var cd = battery.charging?'yes':'no';
if (cd == 'yes'){
document.getElementsByClassName('batteryTime')[0].innerHTML = '正在充电';
}else {
document.getElementsByClassName('batteryTime')[0].innerHTML = '未在充电';
}
}, false);
好的,这就是所有代码了
参考:
bilibili :编程大大怪 https://www.bilibili.com/video/BV1kM4y1g7B9