Portál AbcLinuxu, 1. května 2025 09:55
Mohl :)
.st a[href^="/slovnik/"] { margin-right: 1em; }
px
(je nutné definovat minimálně tolik, kolik je šířka obrázku). Takže když nastavím hodnotu pomocí px
, nebude se dynamicky měnit podle velikosti písma v prohlížeči. A kdybych ten padding
nastavil pomocí em
, nemůžu zase zaručit, že to bude ta správná šířka.
Opravím to v textu.
[atribut*=hodnota]
, který je ovšem součástí CSS3. To by mě zajímalo, proč nepodporuje ty ostatní. Jenže kdybych ho použil, matchnul by se každý odkaz, který má v URL /slovnik/
, což nechci riskovat.
Naopak CSS2 selektor [atribut|=hodnota]
, který by měl matchnout všechny elementy, jejichž atribut
se buď rovná nebo začíná na hodnota
, má v prohlížečích FF a Konq. podporu podivnou (Opera nic): když hodnota
začíná znakem /
, selektor nefunguje. Stačí však, abych zadal hod/nota
a už se řetězec matchne. Nevíte někdo, proč to tak je?
To by mě zajímalo, proč nepodporuje ty ostatní.A nebude to tím, že je to teprve technical preview? Také porůznu používám O9 (tak půl napůl s osmou) a narážím i na jiné problémy. Takže třeba to ve finální verzi bude
.st .bez-slovniku a:after, .st a.bez-slovniku:after { content: ""; margin: 0; }Ale elegantnější by bylo to zvládnout všechno v rámci jediné definice. Tj. říci, že ikonka se má zobrazit u všech odkazů, ovšem pouze za předpokladu, že se tento odkaz nachází v elementu, který nemá definovanou třídu
bez-slovniku
. Mělo by to jít pomocí negační pseudo-třídy, ale nedaří se mi to. Můj zápis by vypadal takto:
*:not([class="bez-slovniku"]) a[href^="/slovnik/"]:after { content: url('slovnik.png'); margin: 0 0.1em 0 0.2em; }Zápis
:not([class="bez-slovniku"])
je ekvivalentní k :not(.bez-slovniku)
-- dávám ho sem jen pro názornost.
Co by to mělo dělat? Vložit content
(ikonku) za každý element a
, který má atribut href
začínající na /slovník/
, a zároveň je jeho rodičem jakýkoliv (*
) element, který _nemá_ (:not
) definovanou třídu bez-slovníku
.
Bohužel to nefunguje.
Princip by však měl být správný, protože např. následující definice už funguje:
p:not(.bez-slovniku) a[href^="/slovnik/"]:after { content: url('slovnik.png'); margin: 0 0.1em 0 0.2em; }Zápisy se liší jenom tím zvýrazněným
p
, ničím jiným. A tentokrát skutečně dojde k tomu, že je ikonka vložena za každý odkaz, který se nachází v rámci každého elementu p
, který _nemá_ třídu bez-slovníku
.
Tak čím to je? Proč nefunguje zápis pomocí wildcards, když by měl. Např. následující zápis se chová podle očekávání:
*:not(.bez-slovniku):after { content: url('slovnik.png'); }Vloží totiž ikonku za úplně každý element, který _nemá_ třídu
bez-slovníku
. Jakmile ale doplním child element (např. a
) a zároveň použiji *
a ne konkrétní název elementu (jako v případě p
), zápis nefunguje.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.