Autor Zpráva
noximo
Profil
Ahoj, rozhodně nejsem expert co se týče css, ale začátečník už také ne. Přesto se mi asi nějak podařilo přeskočit jedno ze základních pravidel.

Každopádně, když mám tento kód:
  <div class="vnejsi">
    <div class="vnitrni">
      <a href="">odkaz</a>
    </div>
  <div>


Proč se mi odkaz zformátuje podle stylu '.vnejsi a' a ne podle '.vnitrni a'? Tak nějak jsem předpokládal, že se to bude řídit pravidlem bližší košile než plášť, ale zjevně ne a musím to obcházet pomocí !important
panther
Profil
noximo:
v dodaných informacích a předpkladech chyba není. Ta bude jinde, zjistíme jí z konkrétní situace, lépe odkazu na stránku, nežli z tuny nakopírovaného kódu.

Pokud nechceš dávat odkaz na web, někde se ti deklarace přepisují - v tomto případě bude platit níže uvedená, obě mají stejnou váhu. Více ti neřeknu, na obecný dotaz těžko dát konkrétní radu.
margin
Profil *
Pokud mají tvé pravidla stejnou váhu, tak platí později uvedené pravidlo. Pravděpodobně máš v CSS souboru napřed pravidlo pro ".vnitrni a" a později máš uvedeno pravidlo pro ".vnejsi a".
Pokud jsem neuhodl, pomůže odkaz na stránku.
<style>
.vnejsi a {color: blue;}
.vnitrni a {color: red;}
/* odkaz bude cerveny */
</style>

<style>
.vnitrni a {color: red;}
.vnejsi a {color: blue;}
/* odkaz bude modry */
</style>


panther:
v tomto případě bude platit níže uvedená, obě mají stejnou váhu
Bez nahlédnutí do CSS je to jen věštění, o které jsem se pokusil výše. Záleží na počtu bodů a při rovnosti bodů na pořadí v CSS souboru, nebo souborech, pokud jich je více.
noximo
Profil
Tak jsem si s tím trochu hrál a asi jsem objevil kde byl problém.
Měl jeden (ten vnější) z divů ostylovaný pomocí id a ne class a zároveň jsem měl prohozené pořadí nadefinování stylů. Obojí asi způsobuje změnu pořadí vyhodnocování. Opravil jsem jednu věc a nepomohlo to, tak jsem to vrátil jak to bylo a opravil druhou a samozřejmě to taky nepomohlo, takže mě to zmátlo.
Vyzkoušel jsem si to pak na jednoduché stránce jen s tím kódem, který jsem uvedl výše a fungovalo to správně.
Bohužel původní kód nemohu ukázat...

Děkuji oboum za pomoc!
panther
Profil
noximo:
Bohužel původní kód nemohu ukázat
příště to bude nezbytné. Klidně nějak osekaný, ale je třeba vidět konkrétní CSS ke konkrétnímu HTML. Uvést příklad, který funguje a nemá s původním kódem nic společného, je zbytečné.

margin:
nevím, co jsi tím příspěvkem, resp. tou reakcí na mě myslel, ale to je asi jedno už. Jestli jsi mě chtěl poučovat, jaká deklarace v CSS se kdy aplikuje, nebylo to třeba (a ani to nebylo předmětem dotazu zakladatele vlákna). Jiný význam jsem v tom příspěvku (kde jsi prakticky zopakoval totéž, co jsem napsal já), ani tom dodatku určenému mě, nenašel.
margin
Profil *
id má vyšší prioritu, více třeba http://www.jakpsatweb.cz/css/css-kaskadovani.html#pozdejsi, podkapitola "Podrobnější selektor".

Nikdy není tak zle, aby bylo !important
Zdroj: Udržovatelný stylopis: pořádek v souborech, pozor na hacky a !important

Místo !important můžeš použít třebas:
#vnejsi a { /* tvé pravidla */ }
#vnejsi .vnitrni a { /* tvé pravidla */ }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0