CSS!important?
Hallo
Ich habe das Problem, wenn ich mein (s)css an die Handyansicht anpasse, dann muss ich die Werte im Media Query immer mit !important überschreiben.
Wie kann ich das ändern oder wie löse ich es ohne important?
Danke im voraus
@media (max-width: 750px) {
.skills{
h2{
font-size: 1.5rem !important;
}
p{
font-size: 1rem !important;
}
}
}
.skills {
div {
width: calc(50% - 20px);
background-color: rgb($ganzhell, 0.3);
h2 {
font-family: "itim";
color: $dunkel;
font-size: 2rem;
}
p {
font-size: 1.25rem;
margin: 5px 0 10px 0;
color: $ganzhell;
}
}
}
4 Antworten
Wenn die Spezifität im Media-Query nicht kleiner ist als bei der vorherigen Definition, dann brauchst du auch kein !important. Ohne deinen Code zu kennen, kann ich dir aber nicht sagen, wo dein Fehler liegt.
Allerdings ist es für so einen Fall auch nicht unbedingt dramatisch, wenn man hier wirklich mal !important nutzt.
Wie ich dir schon sagte, musst du auf die CSS-Spezifität achten. In deiner „normalen“ Definition hast du:
.skills div h2
Das entspricht der Spezifität 0 1 2
Im Media-Query hast du:
.skills h2
Die Spezifität ist mit 0 1 1 damit geringer und verliert gegen die vorherige Definition.
Also schreib es so:
@media (max-width: 750px) {
.skills {
div {
Dann klappt es auch ohne !important. Siehe auch:
Auf Anhieb würden mir da zwei Sachen einfallen.
- Du benutzt den Media-Query falsch. Wenn ein bestimmter Viewport von der Media-Query wahr ist, wird der Code einfach überschrieben ohne die Notwendigkeit von !important. Schau einfach mal bei w3schools vorbei
- Die Art wie du elemente in deinem css code selektierst unterscheidet sich in unterschiedlichen mediaquerys und wird deshalb erst mit dem zusatz !important überschrieben.
als Beispiel:
im Hauptcode verwendest du folgende Art:
#divid.divclass{
background-color: black;
}
In einer Mediaquery verwendest du aber nur:
.divclass{
background-color: red;
}
Es mag so aussehen als wäre beides gleichwertig, allerdings beschreibt die erste Variante mit #divid dieses Element genauer, weshalb der Hintergrund im Beispiel schwarz bleibt.
Wie kann ich das ändern oder wie löse ich es ohne important?
Indem du die Reihenfolge der Regeln vertauschst. Also im Stylesheet so schreibst:
.skills {
...
}
@media (max-width: 750px) {
.skills {
...
}
}
anstatt so wie du es machst:
@media (max-width: 750px) {
.skills {
...
}
}
.skills {
...
}
Alex
Das ist nicht normal
Dann hast du viele die Reihenfolge der Styles falsch?
Würde vielleicht der Wert woanders überschrieben.
Kannst du ja leicht prüfen im Browser z.b. Firefox im Develover Mode
Ich habe es jetzt ergänzt