Schlagwort: CSS

Ich will nicht mehr – sondern wissen wie es weitergeht

14. Januar 2010

Wie geht es weiterDas Szenario ist gerade bei Blogs oder Newseiten häufig der Fall: Auf einer Übersichtsseite wird der Inhalt nur kurz angerissen – die eigentliche Nachricht ist erst in der Detailansicht zu finden. In solchen Fällen wird für gewöhnlich nicht nur die Überschrift verlinkt. Auch am Ende des jeweiligen Abschnitts findet sich zumeist weiter bzw. mehr Verweis. Das macht durchaus seinen Sinn, aber wenn man einen solchen Verweis schon einbindet, dann auch richtig.

Textbausteine wie “mehr“, “weiterlesen“, “weiter” sind als Verweistext nicht gerade informativ und aussagekräftig. Nutzt der Besucher bspw. einen Screenreader, oder werden die Verweise durch ein Programm extrahiert und seperat gesammelt (z.B. Lynx) – so hilft einem diese Information nicht mehr weiter. Im Gegenteil, sie wird eher störend, denn der Nutzer kann diesen Verweis überhaupt nicht zuordnen. Eine Lösung für dieses Problem wäre eigentlich ganz einfach:

<a href="/link/zur/nachricht" class="more">
  Mehr <span>zum Thema: ich will mehr...</span>
</a>

Der “mehr“-Verweis wird so modifiziert, dass er ein klar verständliche Anweisung enthält. Bestehend aus der Artikelüberschrift + dem “mehr zum Thema“, also bspw. “Mehr zum Thema: ich will nicht mehr, sondern…“. Da diese Wiederholung des Titels am Bildschirm relativ wenig Sinn macht, und für den zumeist begrenzt verfügbaren Raum auch viel zu lang wäre, wird diese Wiederholung via CSS einfach wieder ausgeblendet. Deshalb die Schachtelung über den SPAN tag innerhalb des Verweises. Da einige Screenreader Probleme mit dem CSS Attribut display haben, ist es besser, das Verstecken über die Positionierung vorzunehmen:

a.more {
 overflow:hidden;
 position:relative;
}
 
a.more span {
  position:absolute;
  top:-100px;
}

Die ganze Aktion dauert im Normalfall vielleicht ein paar Minuten, und man gewinnt dabei nicht nur in Sachen Barrierefreiheit – auch Suchmaschinen bewerten solche Verweise besser, als ein einfaches “mehr“. Daher ist es erstaunlich, dass diese Technik in vielen Fällen noch immer nicht eingesetzt wird. In diesem Sinne, macht mehr aus euren “mehr” Verweisen.

Ein kurzer Blick auf CSS im IE8

04. Oktober 2009

Ein kurzer Blick auf CSS im IE8 title=
Das ist bisher an mir vorbeigegangen: Auch der Internet Explorer 8 führt für seine browserspezifischen CSS Erweiterungen einen Präfix -ms ein. Damit ist die Syntax nun analog zum Mozilla -moz, Opera -o, oder Safari -webkit. Es gibt ein paar kleinere Syntaxänderungen und CSS expressions werden nicht mehr unterstützt.

Eine Liste der browserspezifischen CSS Erweiterungen für den Internet Explorer 8 findet man unter: CSS Improvements in Internet Explorer 8 und eine Kompatibilitätsliste für die unterschiedlichen IE Versionen liefert Microsoft ebenfalls. Zu den CSS Elementen, die mit dem -ms Präfix versehen wurden gehört u.a. die Eigenschaft filter. Die Syntax für dieses Element unterscheidet sich von der Syntax älterer Versionen:

/*ältere IE Versionen*/
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
/*IE 8*/
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";

Die Präfix Elemente des IE8 sind zum guten Teil nicht neu, das Gestalten von Scrollbars, die Filter, das gab es alles bereits mit dem IE6. Auf die Implementierung von abgerundeten Ecken rounded-corners, Farbverläufen gradients oder Teiltransparenten Farbangaben rgba muß weiterhin gewartet werden. Dazu noch ein Tipp:

div {
   /* alte Browser */
   background: rgb(200, 54, 54);
   /* rgba fähige Browser */
   background: rgba(200, 54, 54, 0.5);
}
 
/* und für den ie über die Verwendung von Filter: */
<!--[if IE]>
   div  {
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(
         startColorstr=#99000050,
         endColorstr=#99000050
       );
       zoom: 1;
    }
<![endif]-->

Die auf den ersten Blick merkwürdige Farbangabe #99000050 ist kein Schreibfehler, die Farbe wurde als AARRGGBB Wert notiert. Die ersten beiden Ziffern stehen für die Transparenz. Auf diesem Weg lässt sich rgba also auch für den Internet Explorer implementieren. Die Idee alternativ ein semi-transparentes PNG für diesen Effekt zu nutzen, scheitert an der Version 6 (ohne dem Einsatz von Javascript), der Filter funktioniert hingegen schon ab Version 5.

Wie bereits einleitend erwähnt: CSS expressions werden nicht mehr unterstützt. Microsoft schreibt:

While powerful, this feature was never standardized, has a high performance cost and increases the browser’s attack surface. Moreover, its main usage scenario has been to work around CSS bugs and limitations in Internet Explorer (for instance, to simulate max-width or pseudo-classes like : first-child).

Solche “wundervollen” CSS Spielereien (nochmal der IE6 und seine mangelnde PNG Unterstützung) gehören damit der Vergangenheit an – Schade nur, dass gerade die älteren ohnehin langsameren Browser diese Form der Hilfestellung weiterhin benötigen.

* html img, * html .png {
position:relative;
behavior: expression(
  (this.runtimeStyle.behavior="none") &&
   (this.pngSet ? this.pngSet=true:
    (this.nodeName == "IMG" &&
     this.src.toLowerCase().indexOf('.png') >-1 ?
     (this.runtimeStyle.backgroundImage = "none",
      this.runtimeStyle.filter = "
      progid:DXImageTransform.Microsoft.AlphaImageLoader(
       src='" + this.src + "', sizingMethod='image')",
       this.src = "transparent.gif"
     ) :
    (this.origBg = this.origBg? this.origBg :
     this.currentStyle.backgroundImage.toString().
     replace('url("','').replace('")',''),
     this.runtimeStyle.filter = "
      progid:DXImageTransform.Microsoft.AlphaImageLoader(
       src='" + this.origBg + "', sizingMethod='crop')",
       this.runtimeStyle.backgroundImage = "none"
     )
   ),
   this.pngSet=true
  )
);}

Bei generiertem Inhalt über CSS (Attribute wie content oder quotes) zieht der Internet Explorer 8 gleich, und führt die vollständige Unterstützung für generierten Inhalt nach der CSS 2.1 ein. Gleiches gilt für die Pseudo-Klassen :before, :after, :focus und :active.

Ohne Frage unterstützt der IE8 die CSS2.1 Spezifikation wesentlich besser und standardkonformer als seine Vorgänger Fassungen. Bleibt abzuwarten, ob es Microsoft gelingt das Tempo anderer Hersteller mitzugehen.

Seite 3 von 3123