Autor Zpráva
Ayrton1
Profil
Po delší době zdravím všechny, do dnešního dne všechno krásně vycházelo, ale teď se objevil problém, na který jsem opravdu krátký, takže jdu za vámi, odborníky.

Tvořím vertikální rozbalovací menu a pro tu první, hlavní úroveň mám definován vlastní obrázek jako odrážku. Akorát, aby vše ladilo s designem, musel jsem použít "inside" aby odrážka byla na správném místě, tedy uvnitř celého objektu. V Chrome a Opeře vše funguje, jenže v IE a FF mám odrážku a text a samotné tlačítko v menu až na další řádce. Zkoušel jsem posunout menu a různě s tím hýbat, ale v šířce to nebude. IE a FF to prostě nedokáží dostat na jednu řádku. Pokud inside odstraním, vše funguje normálně až na to, že ty odrážky jsou prostě úplně mimo.

Přikládám kus kódu:
<ul class="menu">
  <li><a href="/">Produkty 1</a></li>
  <li><a href="/">Produkty 2</a>
    <ul>
      <li><a href="/">Sub-produkty 1</a></li>
      <li><a href="/">Sub-produkty 2</a></li>
      <li><a href="/">Sub-produkty 3</a></li>
      <li><a href="/">Sub-produkty 4</a></li>
      <li><a href="/">Sub-produkty 5</a></li>
    </ul>
  </li>
  <li><a href="/">Produkty 3</a> </li>
</ul>


A CSS přikládám pouze potřebné:
.panel ul.menu {
margin: 0;
padding: 0;
list-style: inside url(images/menu-list.png);
z-index: 10;
}

.panel ul.menu ul {
display: none;
}

.panel ul.menu li {
width: 200px;
border-bottom: 1px solid #999;
}

.panel ul.menu li:first-child {
border-top: 1px solid #999;
}

.panel ul.menu li:hover {
list-style: inside url(images/menu-list-hover.png);
}


A nakonec pro představu ještě obrázek, vlevo je Chrome (jak to má vypadat) a vpravo IE (a naprosto stejně to zobrazuje také FF)
Miloš
Profil
Obrázkové odrážky se sice z logiky věci mají umísťovat pomocí list-style-type:image, ale protože se tak nedá ovlivnit jejich umístění, je vhodnější sáhnout po list-style-type:none v kombinaci s background-image.

Jestliže se IE chová jinak – a konkrétně hodně divně, příčinou může být quirk – viz http://www.jakpsatweb.cz/css/mody-prohlizecu.html
Ayrton1
Profil
Miloš: Tak pro jednotlivé položky menu již pozadí definované mám a nechci mít pozadí jen kvůli tomuhle široké jako celé menu, když využívám kouzlo opakování. Ale je mi divné, že i v tom FF to blbne. Javascriptem to zase neobejdu, pokud nedeklaruji pro každou položku zvláštní třídu (tedy až sem sahají mé znalosti) tak bych to rád vyřešil nějak jednoduše přes CC.
jenikkozak
Profil
Ayrton1:
Tak pro jednotlivé položky menu již pozadí definované mám a nechci mít pozadí jen kvůli tomuhle široké jako celé menu, když využívám kouzlo opakování.
Opakující se obrázek může být nastaven položce menu, obrázek šipky může být nastaven odkazu.
joe
Profil
Ayrton1:
Jen doplním, že pokud už používáš pseudotřídy, můžeš také použít
li:before

a tam definovat obrázek. Nicméně nefungují ve starších IE, stejně tak jako pseudotřída first-child

Lepší řešení už ale napsal jenikkozak
Ayrton1
Profil
jenikkozak: Taky mě to mohlo napadnout, už mi z toho vážně hrabe. Děkuji mnohokrát, bezvadně funguje.
joe: Také by šlo, pravda.
Chamurappi
Profil
Reaguji na Miloše:
Jestliže se IE chová jinak – a konkrétně hodně divně, příčinou může být quirk
Všechny prohlížeče mají quirk mód.


Reaguji na joa:
Nicméně nefungují ve starších IE, stejně tak jako pseudotřída first-child
Pseudotřída :first-child funguje v sedmičce, pseudoelement :before až v osmičce, takže tady je rozdíl.
joe
Profil
Chamurappi:
V jaké verzi co (ne)jde si nepamatuju, ale myslel jsem ještě o verzi nižší IE :-)
Bubák
Profil
Chamurappi:
Všechny prohlížeče mají quirk mód.
Ale vizuálně nejvíce rozdílů je v IE, namátkou hover na jakémkoli elementu, automatický margin, box-model.

Ayrton1:
nechci mít pozadí jen kvůli tomuhle široké jako celé menu, když využívám kouzlo opakování
A máš nějaký rozumný důvod využívat kouzlo opakování? Já ho neznám a raději využívám kouzlo PNG komprese. Ty potřebuješ tři obrázky, já si vystačím s jedním a proto na cenu kár set bajtů navíc ušetčím dva HTTP požadavky.

Pro šťouraly, nemám nic proto vhodně použitému kouzlu opakování použitém v případě, že přinese výhody, což není výše uvedený případ.

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