Chris: Firmenlogo als <h1> deklarieren

Hallo.

Ich würde meine Seite gerne in CSS richtig strukturieren - und dazu das Firmenlogo als <h1>-Tag einbinden. Dann könnten die einzelnen Seitenüberschriften sinngemäß als <h2>-Tag eingebunden werden. Sinnvoll wäre es sicherlich, es so zu machen:

<h1>Firmenname</h1>

Aber das Logo muss schon als Grafik eingebunden werden (verwendet eine spezielle Schriftart und sowas). Also würde das so aussehen:

<h1><img src="..." width="" height="" alt=""></h1>

Oder alternativ das Logo per CSS als Hintergrundbild von h1:

<h1 style="background-image:url(logo.jpg); width:x; height:y;"></h1>

Für Suchmaschinen, Screenreader & Co. wäre das allerdings Mist. Wie macht man sowas üblicherweise? Am besten wäre, ich würde den Firmennamen im Klartext in das <h1>-Tag schreiben (wie im ersten Beispiel oben), und er würde aber durch entsprechende CSS-Definitionen nicht angezeigt werden, sondern statt dessen die Grafik darstellen.

Ist sowas machbar?

Beste Grüße
Chris

  1. Für Suchmaschinen, Screenreader & Co. wäre das allerdings Mist. Wie macht man sowas üblicherweise? Am besten wäre, ich würde den Firmennamen im Klartext in das <h1>-Tag schreiben (wie im ersten Beispiel oben), und er würde aber durch entsprechende CSS-Definitionen nicht angezeigt werden, sondern statt dessen die Grafik darstellen.

    ich machs immer so
    http://meiert.com/de/publications/articles/20050513/#toc-phark

    gilder-levin ist imho zwar besser, allerdings verträgt das der ie6 nicht, wenn  ein link im h1-element zu finden ist

  2. Hi,

    <h1><img src="..." width="" height="" alt=""></h1>

    eher alt="Firmenname", was das Äquivalent zur Text-Variante wäre.

    Bei einem Firmenlogo scheiden sich die Geister, ob es Inhalt oder Verzierung ist. Meiner Ansicht nach sind beide Varianten legitim.

    <h1 style="background-image:url(logo.jpg); width:x; height:y;"></h1>

    Aber bitte mit ausgelagerten Styles ;-) und - selbstverständlich - dem Text. Für mich fällt es übrigens in die Schublade Best Practice[1], hochwichtige Textschnipsel (beispielsweise Überschriften oder auch die Links in der Hauptnavigation) in ein <span> zu kleiden; damit hättest Du noch zusätzliche Style-Möglichkeiten neben der von suit genannten Variante.

    Cheatah

    [1] Best Practice, die: etwas bewusst falsch machen, in dem Wissen, dass es langfristig für alle Beteiligten mehr Vor- als Nachteile hat.

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hallo,

    und er würde aber durch entsprechende CSS-Definitionen nicht angezeigt
    werden, sondern statt dessen die Grafik darstellen.

    Ich würde einfach sagen, folgendermaßen:

    <h1 id="company">Firmenname</h1>

    #company {  
        content : '';  
        height : 5em; /*ggf. Durch Bildbreite ersetzen*/  
        width : 20em;  
        background-image : url(logo.png);  
    }
    

    mfg, Flo

    --
    --
    Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
    1. Hi,

      #company {

      content : '';
      }

        
      Welche Wirkung versprichst du dir von der Nutzung der content-Eigenschaft an dieser Stelle?  
        
      Es hat keine - content wirkt nur in Verbindung mit :before/:after-Pseudoelementen.  
        
      Wenn du den (Text-)Inhalt des Elements nicht darstellen willst, kannst du auch die Hoehe auf 0 und overflow auf hidden setzen - und das Hintergrundbild im padding darstellen lassen (Leahy-/Langridge-Methode auf der von suit verlinkten Uebersichtsseite; hat natuerlich auch die Schwachstelle CSS an/Bilder aus).  
        
      MfG ChrisB  
        
      
      -- 
      „This is the author's opinion, not necessarily that of Starbucks.“
      
      1. Hallo,

        Es hat keine - content wirkt nur in Verbindung mit :before/:after-Pseudoelementen.

        Auch wenns blöd klingt, aber der IE machts trotzdem...
        Ich würde diesen Fall abgesehen von der Frage, wieso nicht einfach das alt-Attribut setzen, entweder JS einsetzen oder noch ein zweites <h1> einsetzen, welches dann den Text hat und per display:none versteckt wird.

        mfg, Flo

        --
        --
        Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
        sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
        *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
        1. Es hat keine - content wirkt nur in Verbindung mit :before/:after-Pseudoelementen.

          Auch wenns blöd klingt, aber der IE machts trotzdem...
          Ich würde diesen Fall abgesehen von der Frage, wieso nicht einfach das alt-Attribut setzen, entweder JS einsetzen oder noch ein zweites <h1> einsetzen, welches dann den Text hat und per display:none versteckt wird.

          display:none ist ungeschickt. Die meisten Screenreader werten CSS aus und wüürden bei display:none den Inhalt verbergen.
          Statt dessen ist es besser mit text-indent oder mit Positionierung left:-999em zu arbeiten. Screenreader missachten solche Angaben eher.

          Es ist extrem schwierig hier den bseten Kompromiss zu finden. Ich schlage vor, die erkundigst dich bei speziellen Betroffenengruppen, die ihre eigenen Foren haben:
          http://www.rnib.org.uk/wacblog/

          mfg Beat

          --
          Woran ich arbeite:
          X-Torah
                     ><o(((°>   ><o(((°>           ><o(((°>
             <°)))o><                     ><o(((°>o
  4. @@Chris:

    <h1><img src="..." width="" height="" alt=""></h1>

    Mit richtigem Alternativtext, ja.

    Oder alternativ das Logo per CSS als Hintergrundbild von h1

    Der Sinn hinter CSS-Gefrickel erschließt sich mir nicht. Warum sollte man das 'img'-Element sparen wollen?

    Wenn schon sparen, dann richtig: XHTML 2 sieht die vernünftige Syntax vor: <h1 src="http://example.com/logo">example dot com</h1>

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.