« 1 2 »
Autor Zpráva
radekt
Profil
Dobrý den,
na stránkách http://bar.nebeso.cz/ jsem se pokusil v seznamu udělat odrážky místo obrázkové pomocí CSS.

tady je html:
<li><a href="index.php"><div id="odrazka"></div>Hlavní stránka</a></li>
<li><a href="obsluha.php"><div id="odrazka"></div>Představení obsluhy</a></li>
<li><a href="prostory.php"><div id="odrazka"></div>Představení baru</a></li>
<li><a href="hry.php"><div id="odrazka"></div>Společenské vyžití</a></li>
<li><a href="kontakt.php"><div id="odrazka"></div>Kontakt</a></li>

tady css:
#levy {
  width: 24%;
  border-top: 10px solid #b8cfb8;
  border-bottom: 10px dotted #b8cfb8;
}

#levy ul {
  margin-top: 0;
  padding: 0 0 0 0;
}

#levy li a {
  font-weight: bold;
  font-family: 'Microsoft Sans Serif', sans-serif;
  font-size: 14pt;
  color: #669966;
  display: block;
  padding: 7px;
}

#odrazka {
  width:0px;
  height:0px;
  border-left:12px solid #BDB76B;
  border-top:6px solid transparent;
  border-bottom:6px solid transparent;
  float: left;
  padding-left: 8px;
  vertical-align: 50%;
  display: block;
}

Odrážky se mi sice vytvořily, ale nejsem sto je vertikálně zarovnat s textem, pořád jsou o něco nahořeji. Můžete prosím poradit?
Díky
Plaváček
Profil
radekt:

Mohu se zeptat, co tě vede k tomu, komplikovat si zbytečně život?
Trejpa
Profil
radekt:
Předně, atribut ID lze použít jen jedenkrát na stránce. Pro pouhé opakované stylování použij class. Za druhé, je zbytečné označovat každou položku zvlášť, označ si vnější blok a položky zacil kontextově.

Na odrážku použij obrázek, ne border prázdného bloku. Dej ho na pozadí odkazu, kterému přidáš levý padding:
#levy li a { padding-left: 20px; background: url(odrazka.gif) left no-repeat; }
Str4wberry
Profil
Rychlé řešení by bylo posunout lehce elementy #odrazka.
#odrazka {position: relative; top: .3em}

Na první pohled to vypadá funkčně.
Plaváček
Profil
Str4wberry:

Je to možná funkční, ale jde o pěknou opičárnu. :)
Str4wberry
Profil
No, jak se to vezme. Pokud budeme chtít tu odrážku udělat pomocí CSS, tak to bez podobné opičárny lépe nejspíš nepůjde.
Plaváček
Profil
Str4wberry:

Já vím. Jenom mi prostě uniká důvod, proč obrázkové odrážky neudělat obrázkem a lopotit se s řešením, které nemusí být všude stoprocentně funkční.
radekt
Profil
Str4wberry:
Paráda, děkuji moc, funguje to. Mě se původně zdálo právě lopocení ten obrázek. Zda je rychlejší v případě dalšího webu - kde bych použil stejný prvek, ale web by měl jinak laděné barvy a těm by se musela přizpůsobit barva odrážky - je rychlejší změnit CSS a nebo editovat obrázek. Takto, když je to připravené je rychlejší CSS. Je toto řešení sémantický prohřešek?
Str4wberry
Profil
Reakce na Plaváčka:
proč obrázkové odrážky neudělat obrázkem a lopotit se s řešením, které nemusí být všude stoprocentně funkční
To je samozřejmě otázka nejlepšího postupu. A zda Patří procedurální grafika do CSS? Obecnou hranici, co kreslit pomocí CSS a co už řešit obrázkem, podle mě nelze nějak přesně stanovit.

CSS odrážka může být stejně 100% funkční jako obrázek a naopak.


Reakce na radekta:
Je toto řešení sémantický prohřešek?
Asi ano. Přece jenom takový kód obsahuje zbytečný prázdný element, ale nevidím v tom problém.
radekt
Profil
Jak o tom přemýšlím: co už by jen silami CSS nešlo je chtít měnit barvu odrážky při události a:hover, tam už by byly potřeba dva obrázky, jestli se nemýlím.
Str4wberry
Profil
To by právě šlo velmi snadno. A je to jedna z výhod CSS kreslení.
#levy a:hover .odrazka {border-left-color: red}
radekt
Profil
Geniálně prosté, děkuji.
Camo
Profil
Str4wberry:
S týmto v žiadnom prípade nesúhlasím.
li{background:url("obrazok.png") center center no-repeat}
sa nedá ani porovnávať s tou opičárnou ako ju Plaváček správne nazval.
Kto to má potom lúštiť tie CSSká na 1000 riadkov. Mi normálne tvrvalo pár minút, než som pochopil, že ten trojuholník je z borderu urobený... Ešte to aj takto šialene centrovať a v každom li mať prázdny span...
margin
Profil *
Camo:
li{background-image:url("obrazok.png") center center no-repeat}
Ale fuj, koukni na [#3] Trejpův kód, jak se to má dělat.
Camo
Profil
margin:
A aký je v tom rozdiel prosím? Sa ukľudni chlapče.
Ešte si ma zabudol upozorniť na to, že tam mám center miesto left.

A ja ešte dodám, že pre zmenu Trajpa to nemá vertikálne vycentrované... A nie som si istý, či by mu to bez tých úvodzoviek prešlo. niekde asi hej, ale či všade, to by som neriskoval...Ale čo ti budem vysvetľovať...
shaggy
Profil
Camo:
A aký je v tom rozdiel prosím?
Rozdiel je v tom, že background-image má ako hodnotu iba cestu k obrázku, chlapče ;-)
Trejpa
Profil
Camo:
pre zmenu Trajpa to nemá vertikálne vycentrované...
Trejpa to výškově vycentrované má.

A nie som si istý, či by mu to bez tých úvodzoviek prešlo.
Tak se nauč základy CSS.
Camo
Profil
shaggy:
Kde???
Ja som tiež len človek, a hoci som presne na to myslel, aj tak som to tam pri písaní napísal. hlavne že máš radosť Shaggy. To je najdôležitejšie...
Str4wberry
Profil
Reakce na Cama:
S týmto v žiadnom prípade nesúhlasím.
No, jak jsem psal v [#9] a v tamtéž odkázaném vlákně. Co ještě řešit pomocí CSS a co už obrázky nelze universálně stanovit.

Co když bude nějaký element mít mít barevné pozadí a okraje? Použijeme obrázek, aby to nebylo složité a k pochopení za méně než pár minut?

Kto to má potom lúštiť tie CSSká na 1000 riadkov.
Tímto stylem můžeme dojít ke vkládání webů jako obrázek, tam nebude potřeba CSS (skoro) žádné. :–)

A aký je v tom rozdiel prosím?
Kromě toho, že to nebude fungovat, nebude při nastavování obrázku na <li> odkaz klikací na té odrážce.
shaggy
Profil
Camo:
hlavne že máš radosť Shaggy.
Tu nejde o to, či mám radosť, alebo nie. Ty si vybehol na margina, ktorý ťa správne upozornil na chybu.
Ja som ti dal odkaz na vysvetlenie, aké hodnoty background-image môže mať, čo viac odo mňa potrebuješ?
Camo
Profil
Trejpa:
"Tak se nauč základy CSS."
Ale hybaj? To že cesta nemusí byť v úvodzovkách a že center je default je základ css? Ani by som nepovedal.

To som dnes ale stúpil do lajna...

Týmto sa teda ešte ospravedlňujem marginovi, za tú prehnanú reakciu. Zjavne to bolo "fuj" čo som napísal...
Trejpa
Profil
Camo:
Ani by som nepovedal.
Já ano, s jistotou. Tuhle konstrukci používám ve svém příkladu. Který prohlížeč nezobrazí odrážku nebo ji svisle nevystředí?
Camo
Profil
Trejpa:
V žiadnom prípade to nemá nič spoločného so základmi. To sa už len robíš dôležitejším ako v skutočnosti si.
Trejpa
Profil
Camo:
To sa už len robíš dôležitejším ako v skutočnosti si.
Když dojdou argumenty, přicházejí invektiva.

Uvozovky nejsou povinné pro adresy složené z ASCII znaků:
http://www.w3.org/TR/CSS2/syndata.html#tokenization

Pokud je uvedena jediná hodnota background-position, druhá se automaticky nastaví na center:
http://www.w3.org/TR/CSS2/colors.html#propdef-background-position
Camo
Profil
Trejpa:
Bavíme sa o tom či to patrí medzi základy CSS, alebo nie. Otázka je, čo pokladáš za pokročilé CSS, ak je toto podľa teba základ. IMHO to čo som napísal by som medzi invektíva neradil.
Trejpa
Profil
Camo:
Bavíme sa o tom či to patrí medzi základy CSS, alebo nie.
Poprvé jsem CSS použil na nastavení pozadí. Takže ano, syntaxi zápisu pozadí na úrovni CSS 2.1 považuji za jeden z naprostých základů.
Str4wberry
Profil
Jako základy bereme to, co je ve specifikacích, nebo to, co zná každý, kdo CSS používá? U těch výchozích hodnot bych tipoval, že je má v malíku tak jeden z deseti (jestli vůbec). Tedy tímto pohledem (který nejspíš uplatňuje Camo) se o základy nejedná.
radekt
Profil
Trejpa:
Opravil jsem na spany, to byla školácká chyba. Co prosím myslíš tím "označ si vnější blok a položky zacil kontextově"? Resp. kontextovou deklaraci jsem použil dle rady kolegy Str4wberryho (#levy a:hover .odrazka {border-left-color: red}), nic jiného.
RockFire
Profil
radekt:
Co prosím myslíš tím "označ si vnější blok a položky zacil kontextově"?

Předpokládám, že tím bylo myšleno, že je zbytečné nastavovat class (tys tam měl dokonce ID, což je chyba, jak již bylo řečeno) každému teď už spanu, ale dá se to zapsat takto:

#levy li span
{
/* Styly pro odrážku */
}
Str4wberry
Profil
Co prosím myslíš tím "označ si vnější blok a položky zacil kontextově"?

HTML

<ul class=polozky>
  <li><a href=''><span></span>Text</a>
</ul>

CSS

.polozky span {}

Případně by šlo použít přímo značku <menu>.
« 1 2 »

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: