Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
Obtener una variable CSS calc () en JavaScript

Estoy tratando de obtener una variable CSS en Javascript. He leído los otros hilos de Stack pertinentes a este objetivo, pero todavía estoy perdido. Por favor, sálvame de mí mismo.

CSS:

 :root { --loaderSpeed: 100ms; --loaderDuration: calc(var(--loaderSpeed)*44); }

JavaScript

 setTimeout(() => { const box = document.getElementById('loaderWrapper'); box.style.display = 'none'; }, 4400);

"4400" debe reemplazarse con la variable --loaderDuration

La investigación indica que estos dos están involucrados:

 getComputedStyle(document.documentElement) .getPropertyValue('--my-variable-name');

... pero no he podido implementar con éxito.

¿Alguna idea, equipo? Gracias de antemano.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

  • El problema fue que accede a los valores raíz que devuelven una cadena.
  • y la función calc() no puede calcular la multiplicación de 100ms * 44, así que he cambiado --loaderSpeed:100 eliminado ms . y también creó un nuevo valor llamado loaderSecondsMultiplier .
  • Después de eso, tengo getPropertyValue obtener valores de variables css y los convertí en un número y luego simplemente los multipliqué y, por último, los almacené en finalTimeout .

 //GETTING DOCUMENT STYLES let docStyle = getComputedStyle(document.documentElement); // GEETING CSS VARIABLE VALUES let loaderSpeed = parseInt(docStyle.getPropertyValue('--loaderSpeed')); let loaderSecondsMultiplier = parseInt(docStyle.getPropertyValue('--loaderSecondsMultiplier')); // MUTIPLYING AND STORING IT'S VALUE TO finalTimeout let finalTimeout = loaderSpeed * loaderSecondsMultiplier; setTimeout(() => { const box = document.getElementById('loaderWrapper'); box.style.display = 'none'; }, finalTimeout);
 :root { --loaderSpeed: 100; --loaderSecondsMultiplier: 44; }
 <div id="loaderWrapper"> <h1>hey</h1> </div>

Segundo enfoque

 let docStyle = getComputedStyle(document.documentElement); //get variable let loaderDuration = docStyle.getPropertyValue('--loaderDuration'); loaderDuration = loaderDuration.split("ms*"); loaderSpeed = parseInt(loaderDuration[0].split("( ")[1]); console.log(loaderSpeed); loaderwheelSpeed = parseInt(loaderDuration[1]); let value = document.getElementById("value"); value.innerHTML = `loader Speed: ${loaderSpeed} and loader wheelSpeed: ${loaderwheelSpeed}` setTimeout(() => { const box = document.getElementById('loaderWrapper'); box.style.display = 'none'; }, loaderSpeed * loaderwheelSpeed);
 :root { --loaderSpeed: 1000ms; --loaderDuration: calc(var(--loaderSpeed)*5); }
 <div id="loaderWrapper">we are using string split method to extract correct value</div> <p id="value"></p>

about 4 years ago · Juan Pablo Isaza Report

0

:) Estás lo suficientemente cerca, esta es la forma correcta:

 let root = document.querySelector(':root'); let cs = getComputedStyle(root); let loaderSpeed = cs.getPropertyValue('--loaderSpeed'); let loaderSpeedToInt = loaderSpeed.match(/\d+/); let loaderDuration = loaderSpeedToInt[0] * 44; setTimeout(() => { const box = document.getElementById('loaderWrapper'); box.style.display = 'none'; }, loaderDuration); console.log(loaderDuration);
 :root { --loaderSpeed: 100ms; --loaderDuration: calc(var(--loaderSpeed)*44); }
 <div id="loaderWrapper"></div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!