HTML IE und Chrome - HTML selectbox zeigt Bild nicht an

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

der IE und Google Chrome zeigen mir die Bilder in der selectbox nicht an.

HTML:
<select size="1" style="width:60px;height:18px;">
<option style="background:url('<?php echo $images.'forum/smileys/icon_e_smile.gif'; ?>') no-repeat;height:23px;" onClick="insert(':)', '')"></option>
<option style="background:url('<?php echo $images.'forum/smileys/icon_e_wink.gif'; ?>') no-repeat;height:23px;" onClick="insert(';)', '')"></option>
....

Was müsste ich ändern?
 
Nichts. Du kannst genau gar nichts machen, denn das wird nie funktionieren.
select/option ist hinsichtlich der CSS-Optionen extrem eingeschränkt, genau wie Checkboxen und Radio Buttons. Diese Elemente erhalten ihre Optik und ihr Verhalten aus den unzugänglichen Tiefen des Shadow DOM. Keine Chance für dich.
Es gab in der Vergangenheit nicht-standardkonforme Ansätze, aber die kannst du getrost vergessen. Geht alles nicht mehr.

Dein Weg führt über alternative Eingabemethoden... also JavaScript.
 
@Smartass

Kleine Korrektur: deine Checkboxen bleiben weiterhin ungestylt, du legst lediglich das <b> mit dem Styling darüber und verknüpfst das Ganze über das Label. Das ist auch die aktuell mir bekannte Methode, welche sauber und ohne JavaScript funktioniert. Der TE hat aber versucht, die Checkboxen direkt zu stylen, und da hat Daaron Recht: aktuell so gut wie unmöglich.
 
@Smartass, das ist ein alter Hut, und noch nicht einmal semantisch optimal umgesetzt. Da gibts ne Reihe bessere Lösungen...
1.) :before/:after
2.) einfach direkt dem <label> n padding-left in der Breite des Icons geben und da den Background rein legen.
Außerdem funktioniert der Kram auf alten iOS - Devices nicht. Ich weiß nicht, ob neuere iOS-Versionen den Bug behoben haben, aber vor ein paar Jahren hatte der Mobile Safari das falsche Click/Tap-Verhalten bei Labels. Da half nur JS...

Und trotz allem: Du kannst die Checkbox selbst nicht skinnen, genauso wenig wie Radio und Select. Der Kram liegt im Shadow DOM und ist unerreichbar. Du UMGEHST hier nur diese Beschränkung, indem du das Label skinnst. Bei Select/Option hast du diese Option nicht. Hier kannst du nur über komplexe JS-Lösungen verwenden, wobei mir keine bekannt ist, die hier mit Grafiken arbeitet. Das Beste, was ich in der Richtung kenne, ist Chosen.
Fakt ist einfach: OS und Browser entscheiden, wie sich funktionale Widgets verhalten und wie sie dargestellt werden. Das merkst du spätestens dann, wenn du <select> auf ner Mobile Device anguckst. Meiner Meinung geht hinsichtlich ner Mobile-Navigation nix über Select-Boxen, weil sichs immer geil bedienen lässt.
 
Hallo Speedy und Daaron,
klar ist das ein Taschenspielertrick.

Zitat #5 »... bei Select/Option ... wobei mir keine bekannt ist, die hier mit Grafiken arbeitet ...«

Und es wäre natürlich auch im Sinne Threaderstellers gewesen, hätte ich statt nächtlicher Fiddle-Spielereien gleich die
Demoseite: Simple Effects for Drop-Down Lists verlinkt.

Hallo Schumiel,
wies Daaron schon schrieb - hierfür müsstest Du eine JS-Lösung verwenden.
Artikel zur Demoseite und Download des jQuery-Plugins.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Wenn das jetzt noch jemand mit dem Filter-Feld von Chosen kreuzt, dann hätten wir hier die Endlösung der <select>-Frage!
 
Ich habe eine Lösung gefunden.
Aus option habe ich einfach ein div gemacht. Und das Ganze dann mit jquery optisch verpackt.
 
Das ist semantischer Quatsch.... Du hast doch hoffentlich nicht <select><div></div>...</select> geschrieben, oder? Das wäre sogar noch syntaktisch komplett falsch.

Lass es als <select>/<option> und arbeite DANN mit dem verlinkten JS-Plugin.
 
Zurück
Oben