Achillia: class/id...?

Hallo,

nächste (u.U. blöde)Frage:

Was ist gegen id's einzuwenden?
zb:
#p1 { font:15pt;
   font-family:Comic Sans MS;
   color:#FF99CC; }

warum ist es besser klassen zu verwenden?

Danke und Grüsse
Achillia

  1. hi!

    Was ist gegen id's einzuwenden?
    zb:
    #p1 { font:15pt;
       font-family:Comic Sans MS;
       color:#FF99CC; }
    warum ist es besser klassen zu verwenden?

    IDs dürften nur für ein einziges Element innerhalb einer HTML-Datei
    verwendet werden, Klassen dagegen beliebig oft. Zumindest sieht das
    der Standard so vor. Ob sich alle Browser daran halten, weiß ich
    allerdings nicht.

    bye, Frank!

    1. hi!

      Was ist gegen id's einzuwenden?
      zb:
      #p1 { font:15pt;
         font-family:Comic Sans MS;
         color:#FF99CC; }
      warum ist es besser klassen zu verwenden?

      IDs dürften nur für ein einziges Element innerhalb einer HTML-Datei
      verwendet werden, Klassen dagegen beliebig oft. Zumindest sieht das
      der Standard so vor. Ob sich alle Browser daran halten, weiß ich
      allerdings nicht.

      demnach lohnt es sich gar nicht, eine id zu definieren? wenn sie ja doch nur einmal verwendet werden soll, dann kann man ja gleich direkt im tag formatieren? versteh ich das richtig?

      lg
      achi

      1. demnach lohnt es sich gar nicht, eine id zu definieren? wenn sie ja doch nur einmal verwendet werden soll, dann kann man ja gleich direkt im tag formatieren? versteh ich das richtig?

        "Interessant ist das id-Attribut beispielsweise im Zusammenhang mit neuerem JavaScript nach DOM-Syntax, wo es die Objektmethode getElementById() gibt. Auch bei CSS Stylesheets spielt dieses Attribut eine Rolle, nämlich dann, wenn Sie zentrale Individualformate definieren."
        SelfHTML, Copyright Stefan Münz

        -kein kommentar-

        emu
        [das Auge des straußes ist größer als sein gehirn]

        1. demnach lohnt es sich gar nicht, eine id zu definieren? wenn sie ja doch nur einmal verwendet werden soll, dann kann man ja gleich direkt im tag formatieren? versteh ich das richtig?

          "Interessant ist das id-Attribut beispielsweise im Zusammenhang mit neuerem JavaScript nach DOM-Syntax, wo es die Objektmethode getElementById() gibt. Auch bei CSS Stylesheets spielt dieses Attribut eine Rolle, nämlich dann, wenn Sie zentrale Individualformate definieren."
          SelfHTML, Copyright Stefan Münz

          ich, als anfänger verstehe bahnhof... rein gar nix.

          Achi

          -kein kommentar-

          emu
          [das Auge des straußes ist größer als sein gehirn]

      2. hi!

        IDs dürften nur für ein einziges Element innerhalb einer HTML-
        Datei verwendet werden, Klassen dagegen beliebig oft.
        demnach lohnt es sich gar nicht, eine id zu definieren? wenn sie
        ja doch nur einmal verwendet werden soll, dann kann man ja gleich
        direkt im tag formatieren? versteh ich das richtig?

        Erstens widerspricht das der evtl. gewünschten Trennung von Struktur
        und Layout. Zweitens möchte man ja das CSS vielleicht für mehr als
        ein HTML-Dokument verwenden.

        bye, Frank!

        1. hi!

          IDs dürften nur für ein einziges Element innerhalb einer HTML-
          Datei verwendet werden, Klassen dagegen beliebig oft.
          demnach lohnt es sich gar nicht, eine id zu definieren? wenn sie
          ja doch nur einmal verwendet werden soll, dann kann man ja gleich
          direkt im tag formatieren? versteh ich das richtig?

          Erstens widerspricht das der evtl. gewünschten Trennung von Struktur
          und Layout. Zweitens möchte man ja das CSS vielleicht für mehr als
          ein HTML-Dokument verwenden.

          also, darf man die id nur nicht im selben dokument mehrmals verwenden, in einem anderen aber trotzdem?

          Achi

          1. Erstens widerspricht das der evtl. gewünschten Trennung von Struktur
            und Layout. Zweitens möchte man ja das CSS vielleicht für mehr als
            ein HTML-Dokument verwenden.

            also, darf man die id nur nicht im selben dokument mehrmals verwenden, in einem anderen aber trotzdem?

            ansich schon.. weiß jetzt auch nicht, was der Vorredner da für ein Problem hat. Und mit Struktur vs. Layout hat das auch nichts zu tun... Immerhin ist ja ein Linkziel auch eine ID...

          2. Moin,

            also, darf man die id nur nicht im selben dokument mehrmals verwenden, in einem anderen aber trotzdem?

            Ja, Du kannst die ID in einem anderen Dokument nochmal verwenden... aber da auch nur einmal...

            wenn Du also definierst:
            div#a1 { }

            dann darfst Du in einem Dokument nur einmal ein Div mit der ID "a1" benutten:

            <DIV id="a1">

            Man nimmt das hauptsächlich für 2 Dinge: Entweder um bestimmte Sachen zu positionieren, oder für DHTML (im Grunde sind beide dieselbe Thematik ... Positionierung)

            Beispiel: Firmenlogo

            Du definierst ein css für ein Firmenlogo:

            DIV#firmenlogo { } (hier mit Positionsinformationen)

            und in allen Dokumenten, die zur Firma gehören:

            <DIV id="firmenlogo"><img .....></div>

            Jetzt will Dein Chef aber, daß das Firmenlogo nicht mehr links oben, sondern woanders plaziert werden soll...

            Da brauchst du jetzt nur noch in der CSS-Datei die Position zu ändern und in allen Deinen Dokumenten wird das Firmenlogo an der neuen Stelle angezeigt. (kommt das nicht Deiner Faulheit entgegen?)

            ... also, genau dafür sind IDs gut...

            Für alles andere solltest Du einfach die Tags nehmen:

            DIV { }
            oder wenn Du verschiedene Formatierungen für den selben Tag haben willst, eben verschiedene Klassen.

            ---

            Nun zu Deinem Font-Problem: Du sollst nicht nur Font nicht formatieren, sondern Du solltest Font gar nicht erst benutzen, weil es nicht mehr W3C standard ist.
            Nimm stattdessen span. Daß es beim ersten Versuch nicht geklappt hat, liegt daran, daß Du td formatiert hattest.

            Hoffe, ein wenig Klarheit verschafft zu haben.

            Ciao, Vedat

    2. IDs dürften nur für ein einziges Element innerhalb einer HTML-Datei
      verwendet werden, Klassen dagegen beliebig oft. Zumindest sieht das
      der Standard so vor. Ob sich alle Browser daran halten, weiß ich
      allerdings nicht.

      Den Browser ist das völlig egal, sogar Amaya hat nichts dagegen, zwei mit id formatierte Texte gleich darzustellen.

      Nur der Validator regt sich maßlos auf und definiert gleich beide als Fehler.

      emu
      [der emu hat seinen namen vom portugiesischen wort für "strauß"]

  2. warum ist es besser klassen zu verwenden?

    ansich wäre das kein Problem.. wäre da nicht ein Browser namens Netscape 4....

    1. warum ist es besser klassen zu verwenden?

      ansich wäre das kein Problem.. wäre da nicht ein Browser namens Netscape 4....

      zugegeben gefällt mir diese Version am besten (auch wenn ich jetzt endlich begriffen habe warum und wieso net), bösa browser :-)

      lg
      Achi

      1. zugegeben gefällt mir diese Version am besten (auch wenn ich jetzt endlich begriffen habe warum und wieso net), bösa browser :-)

        du kannst hier gerne mal auf die Suche gehen - das Ding hat so viele Macken und Lücken, das geht auf keine Kuhhaut!

        Ich empfehle dringend ein Update auf Netscape 6.2 oder Opera 5.12 (bzw. 5.0 bei Linux).. evtl. sogar die devel-Versionen 6.0 und 5.05..

  3. Hallo,

    nächste (u.U. blöde)Frage:

    Was ist gegen id's einzuwenden?
    zb:
    #p1 { font:15pt;
       font-family:Comic Sans MS;
       color:#FF99CC; }

    warum ist es besser klassen zu verwenden?

    nicht böse werden, aber warum liest du nicht die links dich ich dir fürher gepostet habe? (die vom w3c)

    aussrden steht auch einiges im selfhtml tum thema
    http://selfhtml.teamone.de/css/formate/zentrale.htm#div_span
    http://selfhtml.teamone.de/css/formate/zentrale.htm#individualformate
    -----

    wie frank auch schon sagte: ID dient für dateiweite eindeutige identifizierung von elementen:

    -------- das ist also möglich -----------
    <div id="abc">
    <p id="abc"><a id="abc"></a></p>
    <table id="abc">
    <tr>
        <td id="abc"><span id="abc"></span></td>
    </tr>
    </table>
    </div>
    --------------------------------------------
    du kannst hier alle elemente mit: #abc {} ansprechen,
    oder mit
    div#abc {}
    td#abc {} ...etc.
    immer das jeweilige element ansprechen.
    ---

    -------aber sowas ist NICHT erlaubt ---------
    <div id="abc">
    <p id="abc"><a id="abc"></a></p>
    <table id="abc">
    <tr>
        <td id="abc"><span id="abc"></span></td>
    </tr>
    </table>
    </div>
    <div id="abc">
    <p id="abc"><a id="abc"></a></p>
    <table id="abc">
    <tr>
        <td id="abc"><span id="abc"></span></td>
    </tr>
    </table>
    </div>

    ---------------------------------------------

    warum es nicht erlaubt ist: weil so sind die elemetne nicht mehr eindeutig identifizierbar (stellt dir vor ID wäre ein fingerabdruck)
    wenn du hier für das erste div etwas definieren willst und für den 2. was anderes geht das  mit div#abc nicht mehr.
    das ist z.B. dhtml sehr wichtig, wo du nur ein einziges bestimmtes element ansprechen willst.
    --

    willst du bestimme css angaben für bestimmte elemente mehrmals anwenden muss du klassen nehmen:

    -------- dies ist also erlaubt --------------
    <div class="abc">
    <p class="abc"><a class="abc"></a></p>
    <table class="abc">
    <tr>
        <td class="abc"><span class="abc"></span></td>
    </tr>
    </table>
    </div>

    <div class="abc">
    <p class="abc"><a class="abc"></a></p>
    <table class="abc">
    <tr>
        <td class="abc"><span class="abc"></span></td>
    </tr>
    </table>
    </div>
    ----------------------------------------------

    hier kannst du auch alle elemtente ansprechen und zwar mit
    .abc {} also mit einer unabhängigen klasse.

    du kannst gezielt aber für elemente die css angaben wiederholen:

    div.abc { } gilt nur für die div's
    span.abc {} gilt nur für span's
    etc.

    jetzt mal das ganze mit css (setze text mal überall text ein):
    ----------------------------
    <html>
    <head>
     <title>Untitled</title>
    <style type="text/css">
    .abc { font-family:Arial; }
    div.abc { font-size:24px; }
    td.abc { text-align:center; }
    span.abc { color:red; }
    p.abc { font-weight:bold; font-size:20px;}
    a.abc { font-family:serif; font-variant:small-caps; }
    div#abc { color:blue; }
    div#cba { color:green; }
    </style>
    </head>

    <body>

    <div id="abc" class="abc">
    <p class="abc"><a class="abc"></a></p>
    <table class="abc">
    <tr>
        <td class="abc"><span class="abc"></span></td>
    </tr>
    </table>
    </div>

    <div id="cba" class="abc">
    <p class="abc"><a class="abc"></a></p>
    <table class="abc">
    <tr>
        <td class="abc"><span class="abc"></span></td>
    </tr>
    </table>
    </div>

    </body>
    </html>

    grüße
    thomas

    1. Salü

      nächste (u.U. blöde)Frage:

      Was ist gegen id's einzuwenden?
      zb:
      #p1 { font:15pt;
         font-family:Comic Sans MS;
         color:#FF99CC; }

      warum ist es besser klassen zu verwenden?

      nicht böse werden, aber warum liest du nicht die links dich ich dir fürher gepostet habe? (die vom w3c)

      sorry, mein fehler, hab sogar ne ausrede (leider wahr), die maus auf der kiste hängt sich des öfteren auf, sodass ich immer wieder neustarten muss und so den überblick verlier, was ich jetzt schon gemacht habe, was ich noch wollte usw., mein fehler, sorry.

      aussrden steht auch einiges im selfhtml tum thema
      http://selfhtml.teamone.de/css/formate/zentrale.htm#div_span
      http://selfhtml.teamone.de/css/formate/zentrale.htm#individualformate

      wie frank auch schon sagte: ID dient für dateiweite eindeutige identifizierung von elementen:

      -------- das ist also möglich -----------
      <div id="abc">
      <p id="abc"><a id="abc"></a></p>
      <table id="abc">
      <tr>
          <td id="abc"><span id="abc"></span></td>
      </tr>
      </table>
      </div>

      du kannst hier alle elemente mit: #abc {} ansprechen,
      oder mit
      div#abc {}
      td#abc {} ...etc.
      immer das jeweilige element ansprechen.

      -------aber sowas ist NICHT erlaubt ---------
      <div id="abc">
      <p id="abc"><a id="abc"></a></p>
      <table id="abc">
      <tr>
          <td id="abc"><span id="abc"></span></td>
      </tr>
      </table>
      </div>
      <div id="abc">
      <p id="abc"><a id="abc"></a></p>
      <table id="abc">
      <tr>
          <td id="abc"><span id="abc"></span></td>
      </tr>
      </table>
      </div>


      warum es nicht erlaubt ist: weil so sind die elemetne nicht mehr eindeutig identifizierbar (stellt dir vor ID wäre ein fingerabdruck)
      wenn du hier für das erste div etwas definieren willst und für den 2. was anderes geht das  mit div#abc nicht mehr.
      das ist z.B. dhtml sehr wichtig, wo du nur ein einziges bestimmtes element ansprechen willst.

      willst du bestimme css angaben für bestimmte elemente mehrmals anwenden muss du klassen nehmen:

      -------- dies ist also erlaubt --------------
      <div class="abc">
      <p class="abc"><a class="abc"></a></p>
      <table class="abc">
      <tr>
          <td class="abc"><span class="abc"></span></td>
      </tr>
      </table>
      </div>

      <div class="abc">
      <p class="abc"><a class="abc"></a></p>
      <table class="abc">
      <tr>
          <td class="abc"><span class="abc"></span></td>
      </tr>
      </table>
      </div>

      hier kannst du auch alle elemtente ansprechen und zwar mit
      .abc {} also mit einer unabhängigen klasse.

      du kannst gezielt aber für elemente die css angaben wiederholen:

      div.abc { } gilt nur für die div's
      span.abc {} gilt nur für span's
      etc.

      jetzt mal das ganze mit css (setze text mal überall text ein):

      <html>
      <head>
      <title>Untitled</title>
      <style type="text/css">
      .abc { font-family:Arial; }
      div.abc { font-size:24px; }
      td.abc { text-align:center; }
      span.abc { color:red; }
      p.abc { font-weight:bold; font-size:20px;}
      a.abc { font-family:serif; font-variant:small-caps; }
      div#abc { color:blue; }
      div#cba { color:green; }
      </style>
      </head>

      <body>

      <div id="abc" class="abc">
      <p class="abc"><a class="abc"></a></p>
      <table class="abc">
      <tr>
          <td class="abc"><span class="abc"></span></td>
      </tr>
      </table>
      </div>

      <div id="cba" class="abc">
      <p class="abc"><a class="abc"></a></p>
      <table class="abc">
      <tr>
          <td class="abc"><span class="abc"></span></td>
      </tr>
      </table>
      </div>

      </body>
      </html>

      oky, supi, jetzt hab ichs (so hoff ich) begriffen. es ist simpel net erlaubt (hab ich zwar gewusst, nur das warum war mir net klar).

      Herzlichen Dank und grüsse
      Achillia
      (und jetzt mit html weiterkämpf)