Autor Zpráva
DarthD
Profil
Ahoj, prosím vás, když na webu stavspol.cz najedu na úvod tak se mi rozbalí menu ale nevím už jak udělat aby ten pododkaz byl pěkně pod tím uvodem a aby se ta žlutá lišta nezvětšovala ale aby se to po najetí překrylo.
díky moc za radu
juriad
Profil
Musíš použít position: absolute;

S pár dalšími změnami to pak vypadá docela použitelně:
menu li menu {
  position: absolute;
}

#menu li a {
  /* background-repeat: no-repeat; */
  /* position: relative; */
  /* float: left; */
  /* display: inline; */
  /* width: 40px; */
  display: block;
}

#menu li a:hover {
  /* background-repeat: no-repeat; */
  /* position: relative; */
  /* float: left; */
  /* display: inline; */
  /* width: 40px; */
}

menu {
  margin: 0;
  padding: 0;
}
DarthD
Profil
juriad:
super, díky moc


a aby se ten pododkaz 1 a pododkaz 2 zobrazili pod sebou bych měl udělat jak prosím?
juriad
Profil
To je důsledek toho:
#menu li {
  float: left;
}

Jedna možnost je zrušit ten float pro vnořené menu:
#menu li menu li {
  float: none;
}
DarthD
Profil
juriad:
tim ale ztměním i to cele menu, mi jde jen o to co se rozbalí


DarthD:
už jsem to vyřešil tak že jsem tam dal ke každe bunce menu <ul> a tam dal ul, form {float: left;
a #menu li {
float: none;

nevím jestli je to šikovné řešení ale funguje
juriad
Profil
Funguje, ale máš tam přehršel chyb. Jde to podstatně zjednodušit. Živá ukázka

Všimni si, že strukura v HTML je jednoduchá a dodržuje pravidla: menu smí obsahovat jen li.
V CSS jsem seskupil pravidla tak, že napřed definujeme, jak se má chovat první úroveň #menu a rozevírání druhé úrovně. Všimni si, že float je použitý jen pro první úroveň pomocí selektoru přímého potomka. Následují obecné definice platné pro všechny úrovně.
DarthD
Profil
juriad:
je mi jasné že to je patlanina ale tak zkouším si to..

lepší řešení to cos poslal ale zas ty pododkazy nejsou úplně pod tím menu a po najetí se to vypbne když je tam mezera
juriad
Profil
Já tam žádnou mezeru nevidím. V jakém prohlížeči se na to díváš? (Já Firefox 100, Linux)

Když na tvoji stránku přidám toto, tak to podle mě funguje správně:
#menu > li {
  float: left;
}

Bubák
Profil
juriad:
Já tam žádnou mezeru nevidím. V jakém prohlížeči se na to díváš? (Já Firefox 100, Linux)
Ve Firefoxu 101 pod Windows taky bez mezery, s mezerou to zobrazují "chromé" prohlížeče.
Po hvězdičkovém resetu marginu jsem zkoušel dál, je potřeba vynulovat margin elementu MENU.
Živá ukázka

Vypadá to, že pro "depraklikovaný" element MENU používají prohlížeče na "chromém" jádru jiný výchozí stylopis, než Firefox. Při použití elementu UL je menu bez problémů.
Živá ukázka
juriad
Profil
Bubák:
Hmm, já jsem tam ten reset marginu měl v [#2], ale pak jsem ho odstranil, protože "nic nedělal". Díky za investigaci.

Oba elementy mají v Chromu identické stylování: chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css#303
Ale liší se chováním, když jsou zanořené: chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css#353:
ol ul, ul ol, ul ul, ol ol {
    -webkit-margin-before: 0;
    -webkit-margin-after: 0
}
Dobře je to vidět v dev-tools:


Firefox naopak má podobné resetovací chování pro všechny zanořené seznamové elementy stejné (viz wiki.selfhtml.org/wiki/Default-Stylesheet/Firefox):
/* nested lists have no top/bottom margins */
:-moz-any(ul, ol, dir, menu, dl) ul,
:-moz-any(ul, ol, dir, menu, dl) ol,
:-moz-any(ul, ol, dir, menu, dl) dir,
:-moz-any(ul, ol, dir, menu, dl) menu,
:-moz-any(ul, ol, dir, menu, dl) dl {
  margin-block-start: 0;
  margin-block-end: 0;
}
DarthD
Profil
juriad:
Používám operu..spravilo to když jsem do menu dal margin: 0;

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0