JSFiddle - React, Tailwind, and code Playground
by Dhanck
HTML
<link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet">
<div id="pila">
<div class="pila-display">
<div class="pila-top"></div>
<div class="pila-body">
<span id="charging">🗲</span>
<span class="pila-charge"></span>
</div>
</div>
<div class="pila-info">
<div class="level-cont">
<span id="level">(battery level unknown)</span>%
</div>
<div class="discharge-cont">
<span id="dischargingTime">(discharging time unknown)</span>
Minutes Left
</div>
</div>
</div>
CSS
*{
font-family: 'Montserrat', sans-serif;
}
#pila {
display: flex;
align-items: center;
}
.pila-display {
display: flex;
flex-direction: column;
align-items: center;
}
.pila-top {
height: 6px;
width: 22px;
background: #aaa;
border: 2px solid #aaa;
border-bottom: none;
}
.pila-body {
width: 80px;
height: 125px;
border: 2px solid #aaa;
border-radius: 8px;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.pila-charge {
width: calc(100% - 4px);
background: #378bce;
display: block;
position: relative;
border: 2px solid #fff;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
border-radius: 8px;
}
#charging {
position: absolute;
z-index: 1;
color: #ccc;
font-size: 75px;
transform: rotate(120deg);
padding: 10px;
}
.level-cont {
font-size: 70px;
font-weight: 600;
}
.pila-info {
color: #737171;
padding: 20px;
}
.discharge-cont {
font-size: 20px;
}
JavaScript
window.onload = function () {
function updateBatteryStatus(battery) {
document.querySelector('#charging').textContent = battery.charging ? '🗲' : '';
document.querySelector('#level').textContent = battery.level * 100;
document.querySelector('#dischargingTime').textContent = battery.dischargingTime / 60;
}
navigator.getBattery().then(function(battery) {
// Update the battery status initially when the promise resolves ...
updateBatteryStatus(battery);
// .. and for any subsequent updates.
battery.onchargingchange = function () {
updateBatteryStatus(battery);
};
battery.onlevelchange = function () {
updateBatteryStatus(battery);
};
battery.dischargingTime = function () {
updateBatteryStatus(battery);
};
var charge_load = $('.pila-body').height() / 100;
var actual_load = $('#level').text();
$('.pila-charge').height(actual_load * charge_load );
});
};