Ja, ist völlig ok und gehört sogar zum Konzept von CSS.
Ist problemlos möglich, wenn du eine bereits definierte Eigenschaft überschreibst ist der Zusatz !important notwendig

Kommt drauf an. In der Regel gilt immer die Definition die weiter unten steht.
Z.B. wären bei diesem Beispiel alle Links grün:
Code:
a {
color: red;
}
a {
color: green;
}
Allerdings gibt es Ausnahmen, da in CSS Definitionen bestimmte „Spezifitäten“ (
css specifities) zugeordnet bekommen. Eine ID hat die höchste Spezifität, danach kommen Klassen, und danach alles andere (grob gesagt). Genaueres zur Berechnung der Spezifität findet man im Netz.
Code:
#special {
color: red;
}
a.highlight {
color: green;
}
a {
color: blue;
}
Code:
<a class="highlight" id="special">Dieser Link ist rot</a>
<a class="highlight">Dieser Link ist grün</a>
<a>Dieser Link ist blau</a>
Hier wird also nicht einfach die letzte Deklaration genommen.
Für
!important
gibt es genau
einen Anwendungsfall: Wenn man eine Definition höherer Priorität überschreiben will. Wenn man den obigen CSS-Code ändert in:
Code:
#special {
color: red;
}
a.highlight {
color: green;
}
a {
color: blue ! important;
}
Wären die Links
alle blau.