Maxx: Auswahllisten mit CSS formatieren

Hallo zusammen,
folgendes Problem bekomme ich nicht in den Griff:

Mein CSS sieht so aus:
select.box {
width:90%;
...
}

HTML:
<select class="box" ...>
<option>Text</option>

Ich kann machen was ich will. Im Opera (7.03) ist die Auswahlliste so breit wie "Text".
Das tollste ist aber: Wenn ich ein Neuzeichnen des Fensters erzwinge (z.B. durch minimale Änderung der Fensterbreite) ploppt die Auswahlliste auf 90%.
Was läuft da verkehrt? Fehler bei mir, Bug im Opera? Ausnahmsweise macht mein IE (5.5) das was ich erwarte. Einen anderen habe ich momentan nicht zum testen.

Grüße

Maxx

  1. Hi,

    select.box {
    width:90%;
    ...
    }
    Ich kann machen was ich will. Im Opera (7.03) ist die Auswahlliste so breit wie "Text".

    <select> ist ein inline-Element, du kannst ihm somit keine Breite zuweisen. Wenn du zusätzlich noch display:block angibst, dann allerdings schon.

    http://selfhtml.teamone.de/html/referenz/elemente.htm#inline_elemente

    Das tollste ist aber: Wenn ich ein Neuzeichnen des Fensters erzwinge (z.B. durch minimale Änderung der Fensterbreite) ploppt die Auswahlliste auf 90%. Was läuft da verkehrt? Fehler bei mir, Bug im Opera?

    Das sieht tatsächlich nach einem Bug aus. Wärst du bitte so nett, ihn zu melden? Danke.

    <http://www.opera.com/support/bugs/

    LG Roland

    --
    Ich war für das Thema (BARRIEREFREIHEIT) im Forum. Es hat nicht sollen sein.
    ss:| zu:} ls:} fo:} de:> va:} ch:| sh:) n4:& rl:| br:< js:{ ie:{ fl:{ mo:|
    [link:http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm>
    1. Hallo,

      <select> ist ein inline-Element, du kannst ihm somit keine Breite zuweisen.

      »select« ist m.W. ein »replaced inline«-Element und die Eigenschaft »width« wirkt auch auf solche. Opera 7 spinnt m.E. diesbezüglich.
      http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-width
      http://www.w3.org/TR/REC-CSS2/conform.html#replaced-element

      Wenn ich ein Neuzeichnen des Fensters erzwinge (z.B. durch minimale Änderung der Fensterbreite) ploppt die Auswahlliste auf 90%. Was läuft da verkehrt? Fehler bei mir, Bug im Opera?

      Das sieht tatsächlich nach einem Bug aus.

      Kann ich bestätigen, ist mir auch schon öfters begegnet.

      Grüße,
      Mathias

      1. Hi Mathias,

        »select« ist m.W. ein »replaced inline«-Element und die Eigenschaft »width« wirkt auch auf solche.

        richtig, ja. Die definierte Breite bezieht sich auf die errechnete des Elements selbst. Somit sollte Opera das Element tatsächlich ändern.

        Opera 7 spinnt m.E. diesbezüglich.

        Ja. Hast du einen Opera 6 zur Hand? Ich gehe zwar davon aus, dass er gar nichts ändert, da es sich um ein Formularelement handelt, aber wer weiß.

        LG Roland

        --
        Ich war für das Thema (BARRIEREFREIHEIT) im Forum. Es hat nicht sollen sein.
        ss:| zu:} ls:} fo:} de:> va:} ch:| sh:) n4:& rl:| br:< js:{ ie:{ fl:{ mo:|
        http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
        1. Hallo Roland,

          »select« ist m.W. ein »replaced inline«-Element und die Eigenschaft »width« wirkt auch auf solche.

          richtig, ja. Die definierte Breite bezieht sich auf die errechnete des Elements selbst. Somit sollte Opera das Element tatsächlich ändern.

          Opera 7 spinnt m.E. diesbezüglich.

          Ja. Hast du einen Opera 6 zur Hand? Ich gehe zwar davon aus, dass er gar nichts ändert, da es sich um ein Formularelement handelt, aber wer weiß.

          Was meinst du mit »ändern«? Das Ändern der Breite über JavaScript funktioniert im Opera 6.05 (erwartungsgemäß) nicht. Aber das Auslesen über style.width. Die Breite lässt sich problemlos über CSS festlegen, im Opera 5.12 jeweils dasselbe, bis auf das Auslesen, das ergibt »undefined«.
          Im Opera 7.03 funktionieren CSS-Breiteangaben nicht beziehungsweise nur wenn sie nach onload von body mit CSS vergeben werden (dann tritt der selbe Effekt wie beim ändern des Fensters auf), das Zuweisen per JavaScript funktioniert also. Das Auslesen der Breite funktioniert nicht, es wird bei alert() »Warning« ausgegeben (ist mir schon mehrmals begegnet).

          Keine Ahnung, was Opera Software gemacht hat, aber diesbezüglich ist sogar 5.12 der neuesten Version für seine Verhältnisse voraus. Ich habe das vage Gefühl, dass 7.01 und 7.02 beziehungsweise 7er-Beta-Versionen anders reagieren, habe aber momentan nur die neueste 7er installiert.

          Mathias

    2. Hallo Roland, Hallo Mathias,

      Wenn du zusätzlich noch display:block angibst, dann allerdings schon.

      unabhängig von "inline" oder "replaced inline" ein "display:block" funktioniert. Kurzzeitig ....

      Sobald ich mit document...options[i]=new Option(...); einen neuen Eintrag in die Auswahlbox schreibe ist es vorbei. Die Liste schnurrt auf die Textbreite zusammen. Ein alert(...style.display) betätigt mir "block". Hingegen ist meine Breite alert(...style.width) "warnig"

      Ich gratuliere den norwegischen Entwicklern zu dieser großarigen Leistung!

      *frustriert*

      Jochen