« 1 2 »
Autor Zpráva
horava2
Profil
Zdravim,
vytvoril jsem si menu a snazim se to nejak sikovne nakodovat pomoci css.
Bezne si oriznu kazdou polozku v menu zvlast (Adobe PS) a takto to skladam.

Zvolil jsem pro jednoduchost tuto metodu:


Chci docilit toho, aby kdyz budu mit treba "o nas", tak aby se zobrazil jen button o nas. A po najeti se zobrazi to co je vpravo.

Bojuji s tim uz cely den a dosel jsem akorat k vysledku, ze tim zpusobem, kterym to delam to bude jeste tak na tyden prace :/
Mam to tedy takto:

#menu a.aktuality, #menu a.aktuality-selected {
    position:absolute;
    display: block;
    float: left;
    width: 236px;
    margin: 0 0 0 0px;
    height: 34px;
    background-image: url('./design/navigation.png');
    background-repeat: no-repeat;
}

#menu a.aktuality:hover, #menu a.aktuality-selected {
    background-position: 0px 0px -236px 0px;
}


#menu a.o-nas, #menu a.o-nas-selected {
    top: 34px;
    position:absolute;
    display: block;
    float: left;
    width: 236px;
    margin: 0 0 0 0px;
    height: 34px;
    background-image: url('./design/navigtion.png');
    background-repeat: no-repeat;
    background-position: 0px -34px;
}

#menu a.o-nas:hover, #menu a.o-nas-selected {
    background-position: 0px 0px -236px 0px;
}


Hover mi vubec nefunguje. A poskladat to menu je taky boj. (top, height, background-position) zkousim po px jak to vychazi a porad preklikavam a divam se jak to vypada.
Audio
Profil
Hover ti nefachá, protože máš u background-position 4 hodnoty, mají tam být jen ty dvě poslední (-236px 0px).

Poskládat menu by nemuselo být složité, protože pozici každého tlačítka v obrázku lze jednoduše spočítat (počet předchozích řádků * výška řádku), nicméně tahle metoda je i tak pracná.

Kdybys obětoval vnitřní stín u textu, jednodušším řešením by bylo vytvořit pouze jeden obrázek jako pozadí každého tlačítka - názvy tlačítek by byly prostý text. Při hoveru by si pouze přenastavil barvu textu ze šedivé na červenou. To by mělo nesmírnou výhodu i v případě, že by se struktura menu v budoucnu měnila. Jinak vnější stín lze nastavit pomocí CSS vlastnosti text-shadow.
joe
Profil
Co to trochu zkrátit

#menu a {
  float: left;
  width: 236px;
  height: 34px;
  background-image: url('./design/navigation.png');
}

#menu a.aktuality:hover {
  background-position: 0 0;
}
#menu a.aktuality:hover,
#menu a.aktuality.selected {
    background-position: -236px 0;
}

#menu a.o-nas {
  background-position: 0 -34px;
}
#menu a.o-nas:hover,
#menu a.o-nas.selected {
    background-position: -236px -34px;
}

horava2
Profil
Díky! To jsem přesně potřeboval.
horava2
Profil
joe: Když se takto upravil i selected, tak potom by to mělo vypadat ve scriptu takto?
echo 
"<a class='o-nas"; if ($page=="o-nas") {echo "selected";} echo "'href='/cs/o-nas'></a>";
pcmanik
Profil
horava2:
Keby si si to vyskusal?
horava2
Profil
Pravda. Omlouvam se. Vyzkousim posleze. Jeste to nemam dodelane.
horava2
Profil
Prosim vas,
jeste se mi tu objevila jedna krpa.
Kdyz jsem cele menu dostyloval, tak pod poslednim buttonem se zobrazuje jeste kousek prvniho.


Zkousel jsem tomu kontakt nastavit pevnou vysku, ale nepomohlo to.
Plaváček
Profil
horava2:

Pokud mohu vstoupit do debaty, dopřál bych ti jednu dobrou radu. Ožel ten stín u písma, abys nemusel jednotlivé položky tvořit obrázkem (každé přidání položky bude totiž vyžadovat znovu nakreslit a napsat další a také zásah do stylopisu), a vystačíš s jedním obrázkem na pozadí a jednoduchou definicí v CSS na pár řádků. Ale je to pouze rada, nikoliv doporučení.
horava2
Profil
Plaváček:
Ja vim, ale predpokladam, ze se to menit uz nebude. Z estetickych duvodu to takto vypada lepe.
A co se tyce toho predchoziho problemu, tak nevite? Diky
Plaváček
Profil
horava2:

Nemusíme si vykat, zas takový stařec nejsem :)

Kdysi dávno jsem dělal návod na obrázkové menu (šlo by to asi vymyslet i lépe, ale poskytnu odkaz) http://klient.plavacek.net/menu.html. Základ je, aby text byl přístupný i při vypnutých obrázcích, což tvůj kód, jak jsem ho zběžně studoval, neřeší.

Přesto si myslím, že estetika by nikdy neměla mít přednost před praktičností a vážně bych můj návrh zvážil.
horava2
Profil
Plaváček:
Díky. Urcite se na to podivam a do budoucna zacnu pouzivat. Ale asi tady u tohoto uz to necham tak jak to je.
Prosimte, nenapada te v cem je krpa?


Na konci celeho menu se mi zobrazi cast zacatku. Nedari se mi to odstranit.
Plaváček
Profil
horava2:

Bez živé ukázky netuším. Možností je povícero.
horava2
Profil
http://trumf.webovereseni.cz/
pavuk
Profil
Pro
#menu a 
nastav obrázku na pozadí
no-repeat
ten vykukující kousek "aktualit" je způsobenej tím že se obrázek menu opakuje pod sebou
horava2
Profil
Díky!
joe
Profil
pavuk:
ten vykukující kousek "aktualit" je způsobenej tím že se obrázek menu opakuje pod sebou
To sice ano, ale je to způsobené tím, že poslední položku má vyšší než ostatní, pokud mu fungují.

horava2:
Abys to měl dobré, je třeba to upravit na

<a>normální text<i></i></a>


Za tu zvýrazněnou část si můžeš dosadit jakýkoli tag, <i> je krátké, které bude překrývat ten text.

#menu a {
  position: relative;
}

#menu a i {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  /* teprve tady budeš nastavovat ten obrázek */
}
pavuk
Profil
joe:
To sice ano, ale je to způsobené tím, že poslední položku má vyšší než ostatní, pokud mu fungují.
Nebyla vyšší poslední položka, ale <div menu> byl vyšší než obrázek kterej ho tvoří, a to může bejt úmysl kvůli vzhledu, netuším. A přijde mi přidání no-repeat mnohem čistší než přidání osmi řádků do stylopisu
joe
Profil
pavuk:
Pokud by byl vyšší kontejner, pozadí by se nemělo kde opakovat...
pavuk
Profil
joe:
Pokud by byl vyšší kontejner, pozadí by se nemělo kde opakovat...
To je zjevně nesmysl, kde jinde by se mělo pozadí opakovat než v kontejneru kterej je větší než obrázek tvořící mu pozadí??? Mělo by se opakovat v obalujícím prvku kterej je menší? To jaksi postrádá smysl přece...
joe
Profil
pavuk:
Asi mi nerozumíš, v opačném případě totiž tvrdíš, že
<div style="height: 300px; border: 1px solid red;">
	<div style="height: 30px; background: url('image.jpg');"></div>
</div>


v označeném divu by mělo být také pozadí, které je definované v jeho potomku a to je samozřejmě nesmysl. Stejně tak s tím menu, obrázek je definovaný u odkazů, tzn. že na jeho rodiče to nemá vliv a může být klidně 5000px vysoký, pozadí v něm rozhodně nebude.
horava2
Profil
Nakonec nejspíš budu muset udělat textové menu s jedním obrázek na pozadí k vůli dynamice. Tedy jeden obrázek, který umožní ten přechod okolo buttonu a jednotlivé buttony. Nějaké tipy či weby s návodem jak přesně takové menu udělat? Díky
joe
Profil
horava2:
kvůli dynamice
Kvůli jaké dynamice?

Nějaké tipy či weby s návodem jak přesně takové menu udělat?
VždyŤ je to úplně stejné, jen místo obrázku s textem uvnitř dáš jen obrázek.
horava2
Profil
joe:
Celý ten web se dává na administraci. A právě tam by mělo být i zahrnutá úprava menu.
horava2
Profil
	#navigation {
		width: 236px;
		float: left;
		background-image: url('./design/navigation-x.png');
    background-repeat: no-repeat;
	}
		#navigation ul {
			height: 370px;
		}
			#navigation ul li {
				display: list-item;
			}			
				#navigation ul li a {
				  display: block;
				  height: 34px;
					background-image: url('./desing/button.png');
				}
					#navigation ul li a:hover { }
					#navigation ul li a#active { }


Udělal jsem si to tedy takto. Ale "button.png" se mi nezobrazí.
horava2
Profil
Nenapadá vás nic?
joe
Profil
horava2:
Celý ten web se dává na administraci.
Tak proč jsi to tak neudělal dřív? :)

background-image: url('./design/navigation-x.png');
background-repeat: no-repeat;
Dá se zkrátit
background: url('./design/navigation-x.png') no-repeat;


height: 370px;
Proč nastavovat výšku celkového elementu, když výšku určují položky?

display: list-item;
Můžeš smazat

background-image: url('./desing/button.png');
Zase zkrátit a máš tam překlep - proto to nefunguje.
horava2
Profil
joe:
Díky! Mám ještě jeden dotaz - lze pomocí css ztučnit text víc než nabízí text-weight: bold? Dík
panther
Profil
horava2:
text-weight neexistuje, font-weight.
horava2
Profil
http://trumf.webovereseni.cz/

#navigation {
    margin-left:-2px;	
	}
	
	#buttons {
		_margin-top:-12px;
		width: 236px; 
	}
		
		#navigation ul li {
			margin-left: -28px;
			list-style-type: none;
		
			}			
	#navigation ul li a {
		font-size:14px;
		padding-top:10px;
		padding-left:10px;		
  	font-family: verdana;
		font-weight:bold;
		display:block;
		color: #9d9d9d;
		text-decoration: none;
		Text-transform:uppercase;
		height: 24px;
		border-left:2px solid #d7d7d7;
		border-right:2px solid #e0e0e0;
	  background-image: url('./design/button.png');
	}
 #navigation ul li a:hover { color: #cd281e;}
 #navigation ul li a#active {}
					
				


Můžete mi prosím poradit jak dostat celé menu o 12px nahoru? Nevím proč, ale je to uskočený. Jedině v IE je to OK. Když použiju "margin-top:-12px;", tak se to v IE o těch 12px zvedne.
« 1 2 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0