Dodanie klasy CSS, nadpisując {opacity:1}

Wątek przeniesiony 2024-08-08 10:19 z JavaScript przez Riddle.

0

po dodaniu klasy w js używając .classList.add() klasa dodaje się ale nie ma zmian

if (skillPoints <= 0) {
  noSkillPoints.classList.add("visible");
  console.log(noSkillPoints);
  return;
} else {
  skillPoints--;
}

co zmieniam to opacity z 0 na 1
kod css

#no-skill-points {
  margin-left: 600px;
  opacity: 0;
}
.visible {
  opacity: 1;
}

w konsoli nie ma błędów a klasa dodaje się prawidłowo
Przechwytywanie.PNG

sprawdzałem czy dodanie klasy wgl działa bez ustawień opacity zmieniając tylko kolor i jest dobrze. Jednak przy opacity ustawionym na 0 w głównej klasie, a 1 w drugiej ciągle mam niewidoczny element.

Dla porównania mam inny kod w którym zmiana opacity działa i dlatego nie rozumiem problemu

.victory {
  position: absolute;
  top: 200px;
  left: 400px;
  font-size: 200px;
  background-color: black;
  color: green;
  opacity: 0;
}
.opacity-visible {
  margin-left: 600px;
  opacity: 1;
}
if (monsterHp <= 0) {
  monsterHp = 0;
}
monsterHealth.innerHTML = `Monster HP: ${monsterHp}`;
if (monsterHp <= 0) {
  victory.classList.add("opacity-visible");
}
2

poczytaj o priorytetach w css, ew dodaj !important za opacity:1.

5

nie używaj !important, koniecznie naucz się jak liczony jest priorytet w css

https://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#specificity

Krótko mówiąc - style przypisane do konkretnego id są najsilniejsze poza tymi wpisanymi bezpośrednio w atrybucie style i przebicie ich wymaga też użycia identyfikatora, w tym przypadku #no-skill-points.visible
Najlepiej nie używaj id do stylowania

0

Dzięki wielkie. Użyłem !important by sprawdzić jak działa, zadziałało.
Sugerując się odpowiedzią obscurity zmieniłem korzystanie css z id na klase co od razu sprawiło że wszystko działa.
Robię prostą gre rpg i ten problem mnie zaskoczył. Zawsze coś nowego się tu dowiem 😃

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.