Benjamin Keil: max- min-width workaround kombination

Hallo zusammen,

ich beschäftige mich gerade mit dem IE max- und min-width workaround,
komme hier aber nicht richtig weiter...

Das Workaround:

div.test{
 width:expression(document.body.clientWidth > 800? "800px": "auto" );
}

"Ist der body größer als 800px, setzte den wert auf 800px.
Andernfalls auf die maximal mögliche Breite (auto)"

Das ist ja schon ganz nett, aber Extremsituationen, wie
z.B. eine Bodybreite von 300px sind damit nicht zufriedenstellend
abgedeckt, denn in dem Fall ist mir ein horizontaler scrollbar
schon lieber als eine Laufweite von 25 Zeichen...

Gibt es da nicht irgendeine Möglichkeit max- und min-width
zu kombinieren? was ist das überhaupt für eine Bedingung,
ist das JavaScript? Ist es nicht besser die Bedingung auszukommentieren,
oder ist das egal?

Ich stelle mir etwa folgende Bedingung vor:

"Ist der Body kleiner oder gleich 750px, dann setzte den Wert auf
750px. Ist er größer als 750px, aber kleiner oder gleich 1000px,
dann setze den Wert auf 'auto'. Ist der Body aber größer als 1000px,
dann setzte den Wert auf 1000px."

Mit PHP würde ich eine Case- oder If-Elseif-Abfrage machen,
aber wie das hier funktioniert blicke ich nicht.

Kann mir da jemand weiterhelfen?

Vielen Dank und Grüße aus Freiburg,

Ben

  1. Hi,

    Gibt es da nicht irgendeine Möglichkeit max- und min-width
    zu kombinieren? was ist das überhaupt für eine Bedingung,
    ist das JavaScript?

    ja, und entsprechend hast Du die Möglichkeiten von JavaScript, Deine Breite entsprechend zu ermitteln.

    Ist es nicht besser die Bedingung auszukommentieren,
    oder ist das egal?

    Es ist nicht egal. Es ist jedoch insofern nutzbar, als ein anderer CSS-tauglicher Client die Pseudoklasse :expression() nicht kennt und somit die gesamte Rule ignorieren wird.

    Mit PHP würde ich eine Case- oder If-Elseif-Abfrage machen,
    aber wie das hier funktioniert blicke ich nicht.

    Du kennst den ?:-Operator nicht? Er sagt bei "Bedingung?A:B" aus: "wenn die Bedingung erfüllt ist, mache A, sonst B".

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      div.test{
      width:expression(document.body.clientWidth > 800? "800px": "auto" );
      }

      die Pseudoklasse :expression()

      Aua, das tut weh.

      Pseudoklassen stehen in Selektoren. Hier handelt es sich um eine ungültige Funktion soweit man diese Notation überhaupt als Funktion bezeichnen darf - auf jeden Fall ist es eine ungültige Wertangabe (mit den von Dir genannten Folgen: wird ignoriert).

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.mud-guard.de/
      1. Hi,

        die Pseudoklasse :expression()
        Aua, das tut weh.
        Pseudoklassen stehen in Selektoren.

        genau das hatte ich auch gelesen. War zu schnell geguckt, sorry.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. die Pseudoklasse :expression()

        Aua, das tut weh.

        Pseudoklassen stehen in Selektoren. Hier handelt es sich um eine ungültige Funktion soweit man diese Notation überhaupt als Funktion bezeichnen darf - auf jeden Fall ist es eine ungültige Wertangabe (mit den von Dir genannten Folgen: wird ignoriert).

        Jetzt verstehe ich garnichts mehr... 'pseudoklassen in selektoren'?
        Was ist das denn? Wie kann ich jetzt vorgehen? Ich stelle mir das so vor:

        div.test{
         with: 750; // ein fixer wert, falls javascript ausgeschaltet ist
         <!-- width:expression(document.body.clientWidth > 800? "800px": "auto" ); -->
         // das auskommentierte 'JavaScript'
        }

        Ist das so richtig?

        Den ?:-Operator habe ich schon verstanden, allerdings muss
        ich jetzt wohl erstmal noch ein bißchen JavaScript lernen um
        die gewünschten Bedingungen zu verschachteln. :-(
        Habt Ihr einen hierzu einen hilfreichen Link für mich?

        Gruß,

        Ben

        1. Hi,

          Jetzt verstehe ich garnichts mehr... 'pseudoklassen in selektoren'?

          eine Pseudoklasse wäre beispielsweise :hover. Ich hatte mich verguckt und gedacht, das ":expression()" stünde im Selektor der CSS-Regel - dabei handelt es sich um den Wert einer CSS-Eigenschaft.

          Ich stelle mir das so vor:
          div.test{
          with: 750; // ein fixer wert, falls javascript ausgeschaltet ist
          <!-- width:expression(document.body.clientWidth > 800? "800px": "auto" ); -->

          In CSS gibt es *nur* eine Art zu kommentieren, nämlich "/* ... */". Alles andere ist falsch!

          Ist das so richtig?

          Auch von den Kommentaren abgesehen: nein. Es hindert Dich jedoch niemand daran, den selben oder einen ähnlichen Selektor mit anderen Eigenschaften zu verwenden - einmal statisch[1] und einmal mit der speziellen IE-Syntax, die von anderen Clients ignoriert wird. Sofern sie nicht ihrerseits eine expression()-Funktion kennen, z.B. weil eine zukünftige CSS-Version das vorsieht.

          [1] Wobei width einen Längenwert verlangt, keine Zahl.

          Den ?:-Operator habe ich schon verstanden, allerdings muss
          ich jetzt wohl erstmal noch ein bißchen JavaScript lernen um
          die gewünschten Bedingungen zu verschachteln. :-(
          Habt Ihr einen hierzu einen hilfreichen Link für mich?

          http://selfhtml.teamone.de/

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hi,

            Auch von den Kommentaren abgesehen: nein. Es hindert Dich jedoch niemand daran, den selben oder einen ähnlichen Selektor mit anderen Eigenschaften zu verwenden - einmal statisch[1] und einmal mit der speziellen IE-Syntax, die von anderen Clients ignoriert wird. Sofern sie nicht ihrerseits eine expression()-Funktion kennen, z.B. weil eine zukünftige CSS-Version das vorsieht.

            Ich glaube jetzt verstehe ich es, also :expression ist
            eine pseudoklasse wie :hover, die allerdings nicht valide
            ist, sonern eine IE-Spielerei. Alles was nach :expression
            in den Klammern steht ist JavaScript. Wenn der Browser
            :expression nicht kennt wird es ignoriert, also brauche ich keine Kommentare.
            Davon abgesehen steht das ganze in einem CSS-Dokument,
            welches eh nur der IE zu sehen bekommt.

            Ist das jetzt richtig? Sag bitte nicht wieder Nein ;-)

            [1] Wobei width einen Längenwert verlangt, keine Zahl.

            Ist logisch, ich hab es 'nur' mal wieder vergessen...

            Gruß und danke,

            Ben

            1. Hi,

              Ich glaube jetzt verstehe ich es, also :expression ist
              eine pseudoklasse wie :hover,

              es _wäre_ eine Pseudoklasse, wenn es beim Selektor gestanden hätte. Dummerweise habe ich mich verguckt - es heißt nicht ":expression()", sondern "expression()", und steht in der Eigenschaftsliste, nicht im Selektor.

              die allerdings nicht valide ist, sonern eine IE-Spielerei.

              Das stimmt aber unabhängig davon :-)

              Wenn der Browser
              :expression nicht kennt wird es ignoriert, also brauche ich keine Kommentare.

              Wenn Du Kommentare schreiben würdest und *irgendein* Browser es interpretieren würde - auch der IE - dann wäre er aber sowas von defekt. Das ist der IE zwar, aber _so_ falsch sollte er auch nicht arbeiten.

              Ist das jetzt richtig? Sag bitte nicht wieder Nein ;-)

              Okay: Im großen und ganzen ;-)

              Cheatah

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. So, jetz hab ich's, alles nochmal zusammengefasst:

                div.contentright{
                 width: 465px;
                 width:expression(document.body.clientWidth > 765? (document.body.clientWidth < 885? "auto": "585px"): ("465px") );
                }

                was vergleibar (nicht identisch) ist mit:
                min-width: 465;
                max-width: 585;

                Übersetzt bedeutet es wohl soviel wie:
                "Wenn der body größer als 765px, dann teste ob er kleiner
                als 885px ist. Ist er kleiner als 885px, dann mache das
                Div so groß wie möglich, andernfalls 585px breit.
                Ist der Body allerdings kleiner als 765px, dann mache das
                Div 465px breit."

                Das ganze funktioniert nur bei aktiviertem JavaScript,
                ansonsten bekommt das Div den zuerst zugewiesenen Wert von 465px.

                Außerdem ist das workaround nur für den IE im Quirksmode, also sollte
                z.B. xhtml verwendet werden und die css angaben nur für den IE
                zugänglich sein.

                Ich hoffe das jetzt alles richtig ist.

                Grüße und ein schönes Wochenende,

                Ben

                1. Hi,

                  div.contentright{
                  width: 465px;
                  width:expression(document.body.clientWidth > 765? (document.body.clientWidth < 885? "auto": "585px"): ("465px") );
                  }

                  ich glaube nicht, dass es sinnvoll ist, die selbe Eigenschaft innerhalb der selben Regel mehrfach zu definieren. Verwende lieber zwei Regeln.

                  was vergleibar (nicht identisch) ist mit:

                  Ja. Sofern der IE die width-Eigenschaft als nicht flexibel ansieht.

                  Cheatah

                  --
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
                  1. Hi,

                    div.contentright{
                    width: 465px;
                    width:expression(document.body.clientWidth > 765? (document.body.clientWidth < 885? "auto": "585px"): ("465px") );
                    }

                    ich glaube nicht, dass es sinnvoll ist, die selbe Eigenschaft innerhalb der selben Regel mehrfach zu definieren. Verwende lieber zwei Regeln.

                    ich hab es versucht, bekomme es aber nicht hin,
                    da in der 'funktion' ja kein Ausgabebefehl enthalten ist.
                    Wenn etwas wie 'echo', 'alert' oder so enthalten wäre,
                    dann hatte ich ja eine switch-case bedingung einbauen können,
                    aber so ist es mir zu hoch. Ich meine IE-Pfusch ist es ja
                    so oder so und wenn der zufrieden ist, dann ist das ja o.k.,
                    oder?

                    Bei mir funktioniert es jetzt so. Warum ist es nicht
                    sinvoll im JavaScript Bedingungen zu verschachteln?

                    Interessieren würde mich aber schon wie man es besser machen könnte,
                    falls Du Lust hast den Thread zu vervollständigen.

                    Vielen Dank auf jeden Fall für alle Tips bisher!!!

                    Grüße,

                    Ben

      3. Hallo,

        div.test{
        width:expression(document.body.clientWidth > 500? "500px": "auto" );
        }

        Hat das schon mal jemand außerhalb vom Quirksmode des IE versucht? Sobald ich irgendeinen Doctype angebe, funktioniert das nicht mehr. Es wird dann wie width:500px interpretiert, also nichts mehr mit auto ;-)). Wenn ich es als min-width-Ersatz verwende, also:
        div.test{
          width:expression(document.body.clientWidth > 500? "500px": "auto" );
        }

        stürzt der IE 6 reproduzierbar ab, sobald das Fenster schmaler als 500px wird. (WinNT 4.0 WkSt, SP6a)

        viele Grüße

        Axel

        1. Hat das schon mal jemand außerhalb vom Quirksmode des IE versucht? Sobald ich irgendeinen Doctype angebe, funktioniert das nicht mehr. Es wird dann wie width:500px interpretiert, also nichts mehr mit auto ;-)). Wenn ich es als min-width-Ersatz verwende, also:

          Doctype geht schon. Ich habe Xhtml 1.1, das ist allerdings
          der Quirksmode im IE...

          Ben

          1. Hallo,

            Hat das schon mal jemand außerhalb vom Quirksmode des IE versucht? Sobald ich irgendeinen Doctype angebe, funktioniert das nicht mehr. Es wird dann wie width:500px interpretiert, also nichts mehr mit auto ;-)). Wenn ich es als min-width-Ersatz verwende, also:

            Doctype geht schon. Ich habe Xhtml 1.1, das ist allerdings
            der Quirksmode im IE...

            Ja, eben, und damit reißt Du dann mit dem "Workaround" für max-width und min-width wieder andere Löcher auf, die im Standard-Modus im IE6 längst geschlossen ware. Nee, dann ist das kein Workaround, sondern wieder nur ein Würgaround.

            viele Grüße

            Axel

            1. hi,

              Ja, eben, und damit reißt Du dann mit dem "Workaround" für max-width und min-width wieder andere Löcher auf, die im Standard-Modus im IE6 längst geschlossen ware. Nee, dann ist das kein Workaround, sondern wieder nur ein Würgaround.

              xhtml 1.1 verwende ich so oder so, also ist er eh im Quirksmode.
              Das einzige was ich jetzt noch mit einer kleinen ie.css ausbessern
              müss ist in meinem Fall das Box-Model-Problem.

              Ben

              1. xhtml 1.1 verwende ich so oder so, also ist er eh im Quirksmode.

                Nur, wenn eine XML-Deklaration am Dokumentanfang steht. Eine XHTML 1.1-Dokumenttyp-Deklaration alleine am Dokumentanfang löst den standardkonformen Rendermodus aus. Die Deklaration ist unnötig, solange du das Dokument sowieso nur als text/html auslieferst, was bei XHTML 1.1 enig Sinn hat, da XHTML 1.1 strukturell nicht HTML-kompatible sein kann.

                1. xhtml 1.1 verwende ich so oder so, also ist er eh im Quirksmode.

                  Nur, wenn eine XML-Deklaration am Dokumentanfang steht. Eine XHTML 1.1-Dokumenttyp-Deklaration alleine am Dokumentanfang löst den standardkonformen Rendermodus aus. Die Deklaration ist unnötig, solange du das Dokument sowieso nur als text/html auslieferst, was bei XHTML 1.1 enig Sinn hat, da XHTML 1.1 strukturell nicht HTML-kompatible sein kann.

                  Was meinst Du damit, soll ich die xml-Deklaration einfach weglassen?
                  Oder überhaupt kein xhtml?

                  Mein Dokumentkopf sieht so aus:
                  <?xml version="1.0" encoding="ISO-8859-1"?>
                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">

                  Das aktuelle Projekt, mit dem min- und max-width:
                  http://www.bkeil.com/bbk/index.php?seite=kuenstler/a_z/

                  Gruß,
                  Ben

                  1. xhtml 1.1 verwende ich so oder so, also ist er eh im Quirksmode.

                    Nur, wenn eine XML-Deklaration am Dokumentanfang steht. Eine XHTML 1.1-Dokumenttyp-Deklaration alleine am Dokumentanfang löst den standardkonformen Rendermodus aus. Die Deklaration ist unnötig, solange du das Dokument sowieso nur als text/html auslieferst, was bei XHTML 1.1 enig Sinn hat, da XHTML 1.1 strukturell nicht HTML-kompatible sein kann.

                    Was meinst Du damit, soll ich die xml-Deklaration einfach weglassen?

                    Das kann du, nur musst du dir im Klaren sein, dass das XHTML, dass du schreibst, nicht zukunftssicher ist. Die XML-Deklaration hat ihren Sinn, wenn das Dokument wirklich als XHTML (Medientyp application/xhtml+xml, Dateiendung in der Regel .xhtml) und nicht als HTML (Medientyp text/html, Dateiendung in der Regel .html) verarbeitet wird. Der wirkliche Vorteil von XHTML ist erst bei dieser Verarbeitungsweise ausgeschöpft. Die XML-Deklaration ist in diesem Fall wichtig, wenn dem Browser über HTTP keine Zeichenkodierung mitgeteilt wurde beziehungsweise das Dokument lokal gespeichert wird oder ähnlich:

                    <?xml version="1.0" encoding="ISO-8859-1" ?>
                                        ^^^^^^^^^^^^^^^^^^^^^
                    Wenn diese XML-Deklaration fehlt, nimmt der Browser fälschlicherweise die Kodierung UTF-8 an und viele Zeichen (z.B. Umlaute) sehen vermurkst aus. Das trifft aber wie gesagt nur auf XHTML als application/xhtml+xml zu. Solange deine Dateien auf .html bzw. .php enden und du in deinen PHP-Scripten nicht bewusst einen anderen Content-Type-Header sendest, betrifft das die Seiten nicht (<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> sollten sie dabei unbedingt haben).

                    Oder überhaupt kein xhtml?

                    XHTML verkompliziert tatsächlich vieles. Wenn du es nicht unbedingt brauchst, mit der Syntax von HTM 4.01 ebenso vertraut bist und dich mit Problemen wie dem oben genannten nicht herumschlagen willst, kannst du auch HTML 4.01 Strict schreiben. Das kann letztlich genauso guter Code sein. Falls du letztlich XHTML schreibst, sollte es zumindest HTML-kompatibles XHTML 1.0 (http://www.w3.org/TR/xhtml1/#guidelines) und kein XHTML 1.1 sein.

                    Mein Dokumentkopf sieht so aus:
                    <?xml version="1.0" encoding="ISO-8859-1"?>
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">

                    Ja, durch die XML-Deklaration <?xml ... am Dokumentanfang schaltet der MSIE 6 (und Opera 7, der MSIE 6 nachmacht) in den Quirks-Modus und wendet das »alte« CSS-Boxmodell von MSIE 4-5 an. Wenn das Dokument direkt mit <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> beginnt, wird der standardkonforme Modus angeschaltet. Korrekturen für MSIE 5.x sind natürlich unabhängig davon ratsam, der kennt ja nur das alte Microsoft-Boxmodell, dazu siehe http://www.fabrice-pascal.de/artikel/ie5boxmodel/.

        2. Hallo,

          div.test{
          width:expression(document.body.clientWidth > 500? "500px": "auto" );
          }

          Hat das schon mal jemand außerhalb vom Quirksmode des IE versucht? Sobald ich irgendeinen Doctype angebe, funktioniert das nicht mehr. Es wird dann wie width:500px interpretiert, also nichts mehr mit auto ;-)). Wenn ich es als min-width-Ersatz verwende, also:
          div.test{
            width:expression(document.body.clientWidth > 500? "500px": "auto" );
          }

          Sorry, bei min-width natürlich so:
          div.test{
             width:expression(document.body.clientWidth < 500? "500px": "auto" );
          }

          stürzt der IE 6 reproduzierbar ab, sobald das Fenster schmaler als 500px wird. (WinNT 4.0 WkSt, SP6a)

          viele Grüße

          Axel

          1. Hallo,

            div.test{
            width:expression(document.body.clientWidth > 500? "500px": "auto" );
            }

            Hat das schon mal jemand außerhalb vom Quirksmode des IE versucht? Sobald ich irgendeinen Doctype angebe, funktioniert das nicht mehr. Es wird dann wie width:500px interpretiert, also nichts mehr mit auto ;-)). Wenn ich es als min-width-Ersatz verwende, also:
            div.test{
              width:expression(document.body.clientWidth < 500? "500px": "auto" );
            }

            stürzt der IE 6 reproduzierbar ab, sobald das Fenster schmaler als 500px wird. (WinNT 4.0 WkSt, SP6a)

            Für alle, die es interessiert:
            Es funktionieren beide Varianten, solange die Start-clientWidth etwas größer als die gewünschte max- bzw. min-width ist. Bsp.:

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                    "http://www.w3.org/TR/html4/strict.dtd">
            <html>
            <head>
            <title>Max- und Min-Width für IE</title>
            <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
            <style type="text/css">
            <!--
            div.minWidth300 {min-width:300px; width:expression(document.body.clientWidth<305?"300px":"auto"); border:1px solid black;}

            div.maxWidth300 {max-width:300px; width:expression(document.body.clientWidth>305?"300px":"auto"); border:1px solid black;}
            -->
            </style>
            </head>
            <body>
            <div class="minWidth300">
            <h1>Test</h1>
            <p>Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test.</p>
            </div>
            <hr>
            <div class="maxWidth300">
            <h1>Test</h1>
            <p>Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test. Das ist ein Test.</p>
            </div>
            </body>
            </html>

            Sobald aber

            div.minWidth300 {min-width:300px; width:expression(document.body.clientWidth<302?"300px":"auto"); border:1px solid black;}

            div.maxWidth300 {max-width:300px; width:expression(document.body.clientWidth>302?"300px":"auto"); border:1px solid black;}

            notiert wird, treten die oben beschriebenen Fehler, inklusive IE-Absturz auf, e sei denn der IE befindet sich im Quirksmode.

            viele Grüße

            Axel

        3. Hallo Axel,

          stürzt der IE 6 reproduzierbar ab, sobald

          solche Geschichten waren für mich der Grund nicht oder nur sehr zurückhaltend mit expressions zu arbeiten.

          Dabei sind nach meinen Erfahrungen auch scheinbar stabile Seiten betroffen, d.h. ein kurzer erfolgreicher Test ist leider kein verlässliches Indiz für eine zuverlässige Funktion der expressions.

          Grüsse

          Cyx23

      4. Hier handelt es sich um eine ungültige Funktion soweit man diese Notation überhaupt als Funktion bezeichnen darf - auf jeden Fall ist es eine ungültige Wertangabe (mit den von Dir genannten Folgen: wird ignoriert).

        Du weißt, was CSS-expressions sind (MS-proprietäre CSS-Erweiterung)? Anscheinend erkennst du den Sinn in Benjamins Code nicht. Natürlich ist es eine ungültige Wertangabe - doch alleinig unter dieser Voraussetzung hat der Workaround einen Sinn (denn es geht nur um MSIE). Im Übrigen hast du Cheatahs Aussagen falsch wiedergegeben, Cheatah hat wohl verstanden, worauf Benjamin hinauswollte. Ben wollte offensichtlich wissen, ob es nötig sei, die Deklaration mit der expression für andere Browser als den MSIE auszukommentieren, Cheatah verneinte das mit dem Hinweis, dass »ein anderer CSS-tauglicher Client die Pseudoklasse [er meinte Eigenschaft] expression() nicht kennt und somit die gesamte Rule [er meinte Deklaration] ignorieren wird«. Ein anderer Client!

        1. Hi,

          Hier handelt es sich um eine ungültige Funktion soweit man diese Notation überhaupt als Funktion bezeichnen darf - auf jeden Fall ist es eine ungültige Wertangabe (mit den von Dir genannten Folgen: wird ignoriert).
          Du weißt, was CSS-expressions sind (MS-proprietäre CSS-Erweiterung)?

          Ja, aber was tut das zur Sache meines Postings?

          Anscheinend erkennst du den Sinn in Benjamins Code nicht.

          Zum Sinn bzw. Unsinn von benjis Code habe ich mich in keiner Weise geäußert. Aber das erkennst Du wohl nicht...
          Anscheinend erkennst Du den Sinn meines Postings nicht.

          Im Übrigen hast du Cheatahs Aussagen falsch wiedergegeben, Cheatah hat wohl verstanden, worauf Benjamin hinauswollte.

          Nein, das ist wortwörtlich zitiert.
          Was Benjamin wollte, hat immer noch nichts mit meinem Posting zu tun.

          Ben wollte offensichtlich wissen,

          Was Ben wollte, hat mit meinem Posting ja wohl überhaupt nichts zu tun.

          die Pseudoklasse [er meinte Eigenschaft]

          Warum sollte er Eigenschaft meinen, wenn es um den Wert geht?

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.mud-guard.de/
          1. Hier handelt es sich um eine ungültige Funktion soweit man diese Notation überhaupt als Funktion bezeichnen darf - auf jeden Fall ist es eine ungültige Wertangabe (mit den von Dir genannten Folgen: wird ignoriert).
            Du weißt, was CSS-expressions sind (MS-proprietäre CSS-Erweiterung)?

            Ja, aber was tut das zur Sache meines Postings?

            Ich weiß nicht, worum ging es in deinem Posting?

            Anscheinend erkennst du den Sinn in Benjamins Code nicht.

            Zum Sinn bzw. Unsinn von benjis Code habe ich mich in keiner Weise geäußert. Aber das erkennst Du wohl nicht...
            Anscheinend erkennst Du den Sinn meines Postings nicht.

            Anscheinend nicht, willst du ihn mir erklären?

            Was meintest du mit Funktion?
            Was meintest du mit ungültiger Funktion?
            Welche Notation meintest du?
            Was meintest du mit Wertangabe?
            Was meintest du mit ungültiger Wertangabe?
            In welchem Sinne ungültig?

            Gingest du gar von der hypothetischen Möglichkeit aus, :expression() sei, wie Cheatah irrtümlich sagte, eine Pseudoklasse, etwa wie :nth-child() usw. in CSS3, und führtest entsprechend das Denkexperiment weiter, indem du herausstelltest, dass es, wenn es denn eine Pseudoklasse wäre, so oder so eine syntaktische falsche CSS-Regel wäre?

            Im Übrigen hast du Cheatahs Aussagen falsch wiedergegeben, Cheatah hat wohl verstanden, worauf Benjamin hinauswollte.

            Nein, das ist wortwörtlich zitiert.

            Was ist wortwörtlich zitiert? Ich lese in [pref:t=66399&m=378748] nichts von ungültigen Wertangaben und die von Cheatah genannten Folgen »wird ignoriert« bezog sich auf das Verhalten anderer Browser, wie gesagt. Selbst in seiner Annahme, expression() sei eine Pseudoklasse, war seine Aussage nach Änderung der Begriffe eine treffende Antwort auf Benjamins Frage.

            Was Benjamin wollte, hat immer noch nichts mit meinem Posting zu tun.

            Womit hatte dein Posting etwas zu tun, wenn schon nicht mit dem Thema dieses Threads?

            die Pseudoklasse [er meinte Eigenschaft]

            Warum sollte er Eigenschaft meinen,

            Das habe ich bereits dargelegt, er hat auf Benjamins Frage geantwortet, welche darauf abzielte, ob er die Deklaration verstecken muss. Cheatahs Aussage ergibt Sinn, wenn die genannten Begriffsersetzungen vorgenommen werden, daher nehme ich an, dass Cheatah dies nach seiner Korrektur meinte.

            wenn es um den Wert geht?

            Um welchen Wert? Wo sprach Cheatah vom Wert einer CSS-Eigenschaft?

    2. Hallo,

      ist das JavaScript?

      ja, ...

      wenn ich Javascript ausschalte (im Moz und Op7) dann funktioniert das dennoch prächtig. Das versteh' ich nicht? Vielleicht kann mir da jemand auf die Sprünge helfen.

      PS: der workaround ist eine Wucht. Ich hatte mir genau diese Funktionalität, die ich für <img> benutze, mit allerlei conditional comments, noscript-Bereichen usw. zusammengebastelt, und dafür 10mal so viel Code benötigt.

      Gruß Fritz

      --
      ss:( zu:| ls:# fo:| de:/ va:) ch:? sh:( n4:? rl:? br:$ js:| ie:| fl:| mo:)
      1. Hallo,

        ist das JavaScript?

        ja, ...

        wenn ich Javascript ausschalte (im Moz und Op7) dann funktioniert das dennoch prächtig. Das versteh' ich nicht? Vielleicht kann mir da jemand auf die Sprünge helfen.

        Bitte die Frage ganz schnell streichen! Der workaround ist _nur_ für den IE, also muss ich JS auch im _IE_ ausschalten *schäm*

        Gruß Fritz

        --
        ss:( zu:| ls:# fo:| de:/ va:) ch:? sh:( n4:? rl:? br:$ js:| ie:| fl:| mo:)
  2. Mit PHP würde ich eine Case- oder If-Elseif-Abfrage machen,
    aber wie das hier funktioniert blicke ich nicht.

    expression() kann den Aufruf einer JavaScript-Funktion enthalten, welche einen Wert mittels return zurückgibt. In dieser Funktion können beliebige JavaScript-Kontrollstrukturen benutzt werden. Ein Beispiel:

    <script type="text/javascript">
    function bla () {
     if (document.body.clientWidth) {
      if (document.body.clientWidth > 765) {
        if (document.body.clientWidth < 885) {
         // return "auto";
         return "red";
        } else {
         // return "585px";
         return "blue";
        }
       } else {
        // return "465px";
        return "green";
       }
      }
    }
    </script>
    <style type="text/css">
    div {
    /* width:expression(bla()); */
    color:expression(bla());
    }
    </style>

    Ziehe das Fenster kleiner und die Textfarbe ändert sich. Die auskommentierten Zeilen wären jeweils die Werte für width.

    max-width und min-width solltest du natürlich zusätzlich für Mozilla und Opera angeben - dann aber kein width in Form von width:123px vor der Deklaration width:expression().

    1. Hi,

      expression() kann den Aufruf einer JavaScript-Funktion enthalten, welche einen Wert mittels return zurückgibt. In dieser Funktion können beliebige JavaScript-Kontrollstrukturen benutzt werden. Ein Beispiel:

      Danach habe ich gesucht, vielen Dank!!

      Ben