Optimierung der Auszeichnungen in Cascading Style Sheets

Die erforder­liche Zeit für das Ren­der­ing im Brows­er lässt sich durch eine Opti­mierung der Ausze­ich­nun­gen in den Stylesheets verbessern. Die Angabe einzel­ner CSS-Dateien im <head>-Element des HTML-Doku­mentes oder das Zusam­men­führen im Stylesheet mit­tels @import wirkt sich, bed­ingt durch zusät­zliche HTTP-Anfra­gen, nachteilig auf die Ladezeit der Web­seite aus und sollte ver­mieden wer­den. Stattdessen bietet es sich an alle CSS-Def­i­n­i­tio­nen in ein­er einzi­gen CSS-Datei zusam­men­z­u­fassen, um die Anfra­gen an den Web­serv­er zu reduzieren. Das media-Attrib­ut bei der Ausze­ich­nung von Stylesheets ver­hin­dert nicht, dass die CSS-Dateien immer geladen wer­den [Zil13].

Ein­fluss auf die Geschwindigkeit des Ren­der­ings im Brows­er hat außer­dem die Ver­wen­dung der CSS-Selek­toren. Über diese erfol­gt der Zugriff auf Ele­mente des DOM. Eine möglichst effiziente Schreib­weise ver­ringert die vom Brows­er benötigte Zeit, um die CSS-Selek­toren mit den Ele­menten des HTML-Doku­mentes abzu­gle­ichen [Sou09].

„Je ein­fach­er und exak­ter die CSS-Selek­toren geschrieben sind, desto bess­er ist der Inter­pre­ta­tionsvor­gang im Brows­er“ [KR13].

Zur Ausze­ich­nung der Eigen­schaften in ein­er CSS-Datei dienen Ele­ment-Selek­toren, Klassen-Selek­toren und ID-Selek­toren [Koc12]. Die Def­i­n­i­tion von Eigen­schaften über Ele­ment-Selek­toren erfordert einen Abgle­ich aller Ele­mente des Selek­tors im DOM, um anschließend die fest­gelegten Eigen­schaften auf spez­i­fis­che Ele­mente anzuwen­den. Bei ein­er Ausze­ich­nung durch Klassen- oder ID-Selek­toren hinge­gen wer­den auss­chließlich die spez­i­fis­chen Ele­mente berück­sichtigt. Ein­deutige ID-Selek­toren ermöglichen dem Brows­er, auf­grund ihrer Ein­ma­ligkeit im HTML-Doku­ment, die schnell­ste Zuord­nung und Inter­pre­ta­tion. Bei der Ausze­ich­nung ist zu beacht­en, dass die CSS-Selek­toren von rechts nach links inter­pretiert wer­den [Sou09].

Durch die Def­i­n­i­tion ein­er eige­nen Klasse für das zu gestal­tende Ele­ment kann auf ver­schachtelte Kom­bi­na­tio­nen der Selek­toren, die zu ein­er län­geren Inter­pre­ta­tion­szeit führen, verzichtet wer­den. Wird zur Ausze­ich­nung ein­er Ver­linkung in einem Lis­ten-Ele­ment kein Klassen-Selek­tor definiert, son­dern eine Kom­bi­na­tion aus den Ele­ment-Selek­toren ul li a, muss der Brows­er zur Anwen­dung der Gestal­tungsvor­gabe erst alle <a>-Elemente des Doku­mentes in dem DOM iden­ti­fizieren und nach­fol­gend die Ele­mente her­aus­fil­tern, die von den Ele­menten <li> und <ul> umgeben sind [Koc12].

margin-top: 20px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;

Um die Dateigröße der CSS-Datei ger­ing zu hal­ten und Wieder­hol­un­gen zu ver­mei­den, kön­nen ähn­liche Def­i­n­i­tio­nen für unter­schiedliche Ele­mente in den Stylesheets zusam­menge­fasst wer­den. Die Wart­barkeit des Quell­codes lässt sich so verbessern und damit der Aufwand für Anpas­sun­gen reduzieren. Außer­dem kann eine Kom­prim­ierung des Quell­codes durch die Nutzung ein­er verkürzten Schreib­weise erre­icht wer­den.

Während bei der aus­führlichen Schreib­weise jede Eigen­schaft einzeln angegeben wird, wie in dem oberen Quell­code gezeigt, lassen sich die Eigen­schaften in der fol­gen­den verkürzten Schreib­weise zusam­men­fassen. Durch die gerin­gere Zeichenan­zahl wird eine Reduzierung der Dateigröße erre­icht [Koc12].

margin: 20px 0 5px;

Verkürzte Schreib­weisen existieren unter anderem für die Eigen­schaften back­ground, bor­der, font, mar­gin, padding und tran­si­tion.

Mit dem Web­stan­dard CSS3 wur­den neue Gestal­tungsmöglichkeit­en einge­führt, die es ermöglichen auf den Ein­satz von Grafiken für bes­timmte Effek­te, wie Schat­ten, Far­b­ver­läufe oder abgerun­dete Eck­en, zu verzicht­en. Daher sollte bei der Umset­zung von optis­chen Gestal­tungsef­fek­ten geprüft wer­den, ob sich diese durch Def­i­n­i­tio­nen in dem Stylesheet erzeu­gen lassen [KR13]. Ani­ma­tion­sef­fek­te erforderten bish­er den Ein­satz von JavaScript, mit der CSS3-Eigen­schaft tran­si­tion lassen sich diese nun durch Def­i­n­i­tio­nen im Stylesheet real­isieren [KR13].