• 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
...
}

Layer über Flash Film legen

Einen DIV-Layer über einen Flash Film zu legen ist simpel, nur bei der Einbindung ins HTML funktioniert das nicht immer automatisch.
Der Film bleibt immer auf der obersten Ebene und läßt sich nicht überdecken.

Lösung:
Der Film benötigt einen zusätzlichen WMODE-Parameter.
<param name="wmode" value="transparent">
Dann können beliebige Layer über den Flash Film gelegt werden.

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)

Beim kopieren aus Word Dokumenten in den tinyMCE Editor werden, zusätzlich zum Text, noch weitere CSS Style Angaben von Word unsichtbar mitkopiert. Das führt im Regelfall zu unerwünschter Darstellung.

Lösung:
tinyMCE bietet 2 Buttons speziell um Inhalte aus Word Dokumenten einzufügen.tinyMCE kopieren aus Word Dokumenten

Button 2 (blau mit dem „W“) ist speziell für Word Dokumente.
Er öffnet ein neues Fenster zum Einfügen. Dabei bleiben die (gewünschten) Stile im Quelltext erhalten und es werden nur die Word spezifischen CSS Angaben bereinigt.

Button 1 (rot mit dem „T“) tut identisches, aber nachdem Einfügen wird der Text automatisch komplett bereinigt.
Es bleibt nur noch „Plain Text“ übrig. Es gehen alle vorherigen Stile (Fett, unterstrichen, etc..) verloren. Diese müssen ggf. dann wieder im tinyMCE eingestellt werden.