[CSS] PNG Transparency en :hover

Pagina: 1
Acties:

  • IntToStr
  • Registratie: December 2003
  • Laatst online: 23:43
Ik heb weer eens wat ruzie met IE...

Het gaat om het volgende:
Ik heb een eenvoudig menu in een lijst staan:
code:
1
2
3
4
5
6
7
8
9
<div id="global_nav">
    <ul id="global_menu">
        <li><a id="menu_1" href="#">MENU 1</a></li>
        <li><a id="menu_2" href="#">MENU 2</a></li>
        <li><a id="menu_3" href="#">MENU 3</a></li>
        <li><a id="menu_4" href="#">MENU 4</a></li>
        <li><a id="menu_5" href="#">MENU 5</a></li>
    </ul>
</div>

met de volgende css:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#global_menu {
    list-style-type: none;
    font-family: Helvetica, Verdana, Arial;
    font-size: 16px;
    font-weight: bold;
    width: 100%;
}
#global_menu li {
    display: block;
    float: left;
    margin-left: 8px;
    margin-right: 8px;
}
#global_menu li a {
    display: block;
    background-position: left;
    background-repeat: no-repeat;
    padding-left: 45px;
    line-height: 42px;
    color: #000000;
    text-decoration: none;
    border: 1px solid red;
}
#menu_1 {
    background-image: url(../images/button_1.png);
}
#menu_1:hover {
    background-image: url(../images/button_1_over.png);
}
#menu_2 {
    background-image: url(../images/button_2.png);
}
#menu_2:hover {
    background-image: url(../images/button_2_over.png);
}
#menu_3 {
    background-image: url(../images/button_3.png);
}
#menu_3:hover {
    background-image: url(../images/button_3_over.png);
}
#menu_4 {
    background-image: url(../images/button_4.png);
}
#menu_4:hover {
    background-image: url(../images/button_4_over.png);
}
#menu_5 {
    background-image: url(../images/button_5.png);
}
#menu_5:hover {
    background-image: url(../images/button_5_over.png);
}


Nu zijn er 2 problemen eigenlijk. Ten eerste zijn deze png bestanden transparant... Hier is al heel veel over gezeurd, maar voor oplossingen bij background-image in css heb ik nog niet veel gezien. Helaas niets werkends.
Dit zou op te lossen zijn door de plaatjes gewoon in de <li> tags te zetten en dan werkt de normale png fix behavior die ik kan gebruiken gewoon.
Daarmee komen we bij een nieuw probleem. De hover werkt uiteraard niet op de li in IE. Hier is vast wel een of andere behavior voor te vinden of desnoods te maken.

Verder wil IE die hover alleen maar pakken als je echt over de tekst heengaat met je muis en niet zoals in FF als je gewoon over een willekeurig stuk van de <a> tag gaat met je muis.
Is hier misschien een "trucje" voor om dat voor elkaar te krijgen in IE?

Het eenvoudigste zou zijn om de plaatjes in de li te stoppen met een hover behavior, dan zal het probleem in IE dat ie alleen de echte tekst pakt voor de hover en niet de padding of ruimte boven of onder de tekst ook al voor een groot deel opgelost zijn. (in die padding komen immers de plaatjes en die zullen dan wel meedoen in de hover)
Ook zou ik natuurlijk gewoon javascript functies aan de plaatjes kunnen hangen voor onmouseover en onmouseout, wat waarschijnlijk ook door die behaviors wordt gedaan, als ik ze in die li's zet.
Dan heb je helemaal geen hover meer nodig. Nu blijft wel het 2e probleem bestaan dat die onmouseover ook alleen maar getriggered zal worden als je echt over de content gaat en niet over lege stukken. Buiten dit vind ik het gewoon niet mooi om al die javascript functies daarvoor te moeten gebruiken.

Nou ben ik natuurlijk veeleisend en moeilijk en ik wil zo min mogelijk vage behaviors gebruiken.
Wie heeft er een idee hoe ik 1 van deze (of beide) problemen het beste aan kan pakken?

Uiteraard kan ik altijd terugvallen op een naar mijn idee lelijkere oplossing, maar misschien kan het ook zoals ik wil :)

Verwijderd

IntToStr schreef op zaterdag 23 juli 2005 @ 16:20:

Verder wil IE die hover alleen maar pakken als je echt over de tekst heengaat met je muis en niet zoals in FF als je gewoon over een willekeurig stuk van de <a> tag gaat met je muis.
Is hier misschien een "trucje" voor om dat voor elkaar te krijgen in IE?
width opgeven bij de li.
Nou ben ik natuurlijk veeleisend en moeilijk en ik wil zo min mogelijk vage behaviors gebruiken.
Volgens mij doe je moeilijk, waarom wil je zo graag een .png gebruiken ?

background op de li en een background op de a:hover met hetzelfde patroon of whatever je wilt laten zien. Alleen als je bewegende handel/flash gebruikt in de background zie ik een mogelijk voordeel in de .png's ?

Wellicht begrijp ik het niet of praat ik gewoon poep. :/

[ Voor 4% gewijzigd door Verwijderd op 23-07-2005 16:34 ]


  • IntToStr
  • Registratie: December 2003
  • Laatst online: 23:43
Over die width bij de li:
Die border: 1px solid red stond daar om te kijken hoe groot de <a> zou zijn. Het blijkt dat de afmetingen van de die a tags gewoon goed zijn.
Misschien dat het ook nog met die padding te maken heeft, dat moet ik nog even bekijken.

En dat ik png wil gebruiken komt doordat die plaatjes over een achtergrond heen komen te staan en dus transparant moeten zijn. Het gebruik van gifs vind ik gewoon niets, ziet er niet uit.

Dat van die transparency kan ik nog wel opvangen door zoals al eerder vermeld ze in die li te zetten, maar dat gedoe dat in IE alleen maar bij de tekst de hover of mouseover werkt zou ik graag wel iets voor vinden. (als dat uberhaupt kan natuurlijk...)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik neem aan dat het om http://www.ffinvincible.nl/ gaat?
Dit menu kun je prima met gif's maken hoor :? Ik zie niet in waarom dat alleen met PNG's zou kunnen. Kwestie van je GIF's "slim" snijden:

Afbeeldingslocatie: http://www.tweakers.net/ext/f/62928/full.gif en mouseover: Afbeeldingslocatie: http://www.tweakers.net/ext/f/62929/full.gif

Als bijkomend voordeel zit je dan niet met (IMHO niet al te mooie) scripts om PNG stuff te fixen onder IE (wat waarschijnlijk onder IE7 weer overbodig wordt, maar er dan weer in hoort te blijven zitten voor de lui die niet updaten naar 7 blablabla...)

/edit: :X Op die site heb je al gif's :P Maar je snapt mijn idee wel ;)

[ Voor 56% gewijzigd door RobIII op 23-07-2005 17:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • IntToStr
  • Registratie: December 2003
  • Laatst online: 23:43
Het ging wel om die site, maar wat er nu staat zijn wat probeersels uit een tijd dat ik nog net wist hoe ik een tabel moest maken bij wijze van spreken...

Ik gebruik die site om gewoon wat zaken te testen voor webdesign zodat ik het later kan toepassen voor echte opdrachten. Vandaar dat ik een beetje wil uitzoeken hoe ik dit soort zaken op kan lossen zonder meteen simpel wat javascript erin te zetten in dit geval. Misschien ben ik later wel genoodzaakt om iets met png transparency op te lossen.
Het gaat hierom: http://www.ffinvincible.nl/new/
Nu kan ik natuurlijk wel mooi jpg's gaan maken door precies de achtergrond over te nemen en zo, maar ik wil die gekleurde tekens voor de tekst in het menu nog wel vaker voor iets gebruiken en dan zit ik met een hele hoop plaatjes.

Waar ik liever iets voor zou vinden is dat andere.
Die rode randen geven dus de <a> tags aan. Probeer er maar met je muis overheen te gaan in IE of in FF. Daar zou ik graag zien dat IE hetzelfde doet als FF.
Hier misschien iemand nog ideeen over?

Verwijderd

denk dat je hier wel wat aan hebt:
http://devilock.mine.nu/pixie/

  • IntToStr
  • Registratie: December 2003
  • Laatst online: 23:43
Ik heb het maar even opgelost met onmouseover en onmouseout events op de li tags en de plaatjes in de a tags.

Nu die padding en background-image attributen weg zijn wordt ook opeens in IE de mouseover nu goed gedaan.
Pagina: 1