• Home
  • Blog
  • Agentur Klatsch

Style Angaben onclick ändern

Für eine Änderung der Style Angaben mittels onClick gibt es verschiedene Ansätze.
Beispielsweise mittels der Methoden:
getElementById() | getElementsByName() | getElementsByTagName()
vgl.: https://de.selfhtml.org/javascript/objekte/document.htm

getElementById() ist eigentlich selbsterklärend:
document.getElementById('meineID').style.background='#ffffff'
Hier bekommt die ID #meineID die Hintergrundfarbe weiss. Die ggf. ursprünglichen vorhandenen Style Angaben werden nicht mehr verwendet.
Das funktioniert bei den anderen Methoden genauso.

Etwas kniffliger wird es wenn man css Klassen (class=““)  ändern möchte.
Dafür kann man querySelectorAll verwenden. Da Klassen mehrfach vorkommen können, benötigen wir etwas mehr Code:
for (var i = 0; i < document.querySelectorAll(".foo").length; i++) {
document.querySelectorAll(".foo")[i].style.fontSize = "150%"; }

Hier bekommen alle Elemente der Klasse .foo eine Font Grösse von 150%.
Mehrfach Verwendung mittels Komma trennen.

Sollen nur auf das erste vorkommende Element zugegriffen werden, kann die Methode querySelector() benutzt werden:
document.querySelector(".foo").style.fontSize = "150%";

Beispiel:
Es sollen gleichzeitig die Selektoren h1, p und die Klasse foo einen Schriftgrad von 150% erhalten, das Element oder der Container mit der ID #meineId 650 Pixel breit werden und die Hintergrundfarbe weiss bekommen:
Aufruf: <a href=“javascript:gross ()“>Gross machen</a>
function gross () {
for (var i = 0; i < document.querySelectorAll("h1, p, .foo").length; i++) {
document.querySelectorAll("h1, p, .foo")[i].style.fontSize = "150%"; }
document.getElementById('meineID').style.width='650px';
document.getElementById('meineID').style.background='#ffffff'
}

ACHTUNG:
Selektoren, welche einen Bindestrich enthalten, werden in dieser Schreibweise nicht verarbeitet und in der Regel zusammengeschrieben:
fontSize, marginLeft, etc….  vgl.:
https://www.w3schools.com/cssref/pr_margin-left.asp
https://www.w3schools.com/jsref/prop_style_marginleft.asp

Gut versteckt, aber trotzdem gefunden 🙂

Über die Funktion „Sonderzeichen einfügen“ (der Button mit dem Omega):

ein geschütztes Leerzeichen in WordPress einfügen

Dann öffnet sich ein neues Fenster, es ist direkt das erste Zeichen oben links (hier grau: no-break space).

Sonderzeichen einfügen in WordPress

Bei der Beschäftigung mit HTML5 und Browser übergreifender Gestaltung, sind wir auf das Projekt HTML5 Boilerplate gestossen. Das Entwicklerteam hat interessante Ansätze für ein fertiges Template veröffentlicht.
(https://html5boilerplate.com/ oder deutsch: https://de.html5boilerplate.com/)
Die wichtigsten Punkte sind zusätzlich in ausführlichen Screencasts erklärt (englisch).

Einige Dinge lassen sich daraus auch direkt, ohne weitere Einarbeitung, verwenden:

Conditional Stylesheets / Comments oder CSS hacks?

Das ewige Problem mit korrektem CSS für alle Browser.
CSS Hacks für spezielle Browser innerhalb des Stylesheets sind in der Regel nicht valide.

Separate Stylesheets mittels Conditional Comments bedeuten zusätzliche HTTP Requests zum download und das Rendern der Seite wartet bis sie vollständig geladen sind.
In Zeiten, in denen Google die Ladezeiten einer Webseite als Qualitätsfaktor wertet, nicht unwichtig.
Abgesehen davon bedeuten zusätzliche Stylesheets natürlich mehr Aufwand.

Lösung:

Conditional Comments für eine extra Klasse des html Tags.
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->

Damit kann man Browser spezifisches CSS direkt in das Haupt-Stylesheet schreiben:
.div { color: black; }
.ie8 .div { color: green; } /* IE8 */
.ie7 .div { color: blue; } /* IE7 */
.ie6 .div { color: red; } /* IE6 and IE5 */

Quelle Paul Irish: https://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

WICHTIG für den Internet Explorer:

Die Zeichenkodierung Deklaration (zB <meta charset = „UTF-8″ > ) sollte innerhalb der ersten 1024 Bytes des HTML-Dokuments platziert werden. Mit dieser Technik könnte diese Grenze überschritten werden. Also muss die nach oben.

Verschiedene Quellen berichten, dass beim IE Conditional Comments diesen in den Kompatibilitätsmodus versetzen.

Ist das nicht gewünscht, muss man serverseitig den header auf X-UA-Compatible setzen, denn die Verwendung von Conditional Comments vor <meta http-equiv=“X-UA-Compatible“> bringt den IE dazu, nachfolgendes <meta> zu ignorieren.

Quelle: https://mathiasbynens.be/notes/safe-css-hacks

Print Stylesheet integrieren

Anstatt in einem separaten direkt im gleichen Stylesheet integriert, um einen zusätzlichen HTTP-Aufruf zu vermeiden:
@media print {
deine Anweisungen zum Druck
...
}

Hin und wieder ist es bei der Textstrukturierung nicht gewünscht, dass bei den HTML Elementen <h1> oder <p> ein Absatz oder Zeilenumbruch erfolgt.

Lösung:
Kein Absatz:
h1 p {margin:0px;}

Kein Umbruch:
h1 p {display:inline;}

Kein Absatz und kein Umbruch
h1 p {display:inline;margin:0px;}

table feste Breite erzwingen

Um eine feste Spaltenbreite bei Tabellen zu erzwingen, gibt es seit CSS 2.0 die Eigenschaft: table-layout.

<table style="table-layout:fixed">
Der Wert „fixed“ räumt der Breitenangabe Vorrang gegenüber dem Zelleninhalt ein.
Der Wert „auto“ entspricht der Voreinstellung und muss deswegen nicht gesetzt werden.  Er räumt dem Zelleninhalt Vorrang gegenüber der Breitenangabe ein
( = Standard).

Bekannte Inkompatibilität:
Der Internet Explorer 5.0 interpretiert dies nur korrekt, wenn Breitenangaben für alle Spalten vorhanden sind.
Safari hat, je nach Version, ebenfalls Probleme.

Ausführliche Erläuterungen: Selfhtml (externer Link)