Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
Creating health bar that increases in value based on users level

Hello I am trying to create a healthbar that scales in max value based on the users level.

But I am kinda stuck with it because everytime the healthbar ends up in not having the right length based on the users level and it's health. The system works like this: the user starts at level 1 with a health value of 150 and increases + 10 everytime the user levels up, the max level that exists is 32.

Now I know this might be possible to do with a loop but I am not sure on how do this correctly:

This is the code for the health bar. The user_level is the users level and I am trying to change the element style based on his health, but at the same time that it would match with the current level of the user.

for (let i = 0; i < user_level.value; i++) {
playerhealthbar.style.width = user_health // Something here but I dont know how to.
}

This is the CSS code if it helps. What happens is that the greenbar should shrink so that the red bar underneath becomes visible.

#playerhealth {
position: absolute;
bottom: 0;
left: 0;
height: 45px;
width: 325px;
background: lightgreen;
}

#playerhealthbar {
position: absolute;
height: 50px;
width: 330px;
border: rgb(255, 255, 255) 3px solid;
border-radius: 3px;
margin-right: 20px;
display: inline-block;
margin-top: 442px;
margin-left: 70px;
background: rgb(158, 31, 31);
}


#playerhealthvalue{
position: absolute;
margin-top: 500px;
margin-left: 220px;
font-size: 30px;
color: black;
}

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

The complete outerbar stays the same. But the greenbar thats inside the whole frame shrinks in size when the health goes down.

So the first thing you have to calculate is what the current maximum health value is. This is given by currentMaxHealth = 150 + 10 * (level-1).

The percent of the green bar is playerHealth / currentMaxHealth * 100.

The whole logic can be done with just custom properties calc and var.

So the CSS could look like this:

function setCurrentHealth(val) {
  let root = document.documentElement;
  root.style.setProperty('--curr-health', val);
}

function setUserLevel(level) {
  let root = document.documentElement;
  root.style.setProperty('--user-level', level);
}

document.querySelector('#level').addEventListener('input', (evt) => {
  setUserLevel(evt.target.value)
})

document.querySelector('#health').addEventListener('input', (evt) => {
  setCurrentHealth(evt.target.value)
})
:root {
  --user-level: 1;
  --curr-health: 10;
  --base-health-level: 150;
  --additional-health-per-level: 10;
}

.current-health {
  width: calc(var(--curr-health) / (var(--base-health-level) + var(--additional-health-per-level) * (var(--user-level) - 1)) * 100%);
  height: 100%;
  background-color: green;
}

.health-bar {
  border: 1px solid black;
  width: 300px;
  height: 20px;
}
<div class="health-bar">
  <div class="current-health">
  </div>
</div>

Level:  <input value="1" id="level"><br>
Health: <input value="10" id="health">

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda