Sind HTML und CSS Open-Source?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

HTML sowie CSS sind genormte Standards, an die sich jeder Browser (mehr oder weniger) hält. Früher gab es da grössere Unterschiede (ich werfe da nur mal das Stichwort Internet Explorer in den Raum).

Die Implementierung des Renderings findet also im jeweiligen Browser statt. Heute sind das eigentlich nur noch drei grosse Engines: Die Chromium-, Firefox- und Webkit-Engines. Alle davon sind open source.

Hier findest du die HTML-Spezifikation: https://html.spec.whatwg.org/

Hier für CSS: https://www.w3.org/TR/css-2020/

Und hier eine Implementation davon: https://github.com/chromium/chromium

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

Das sind Standards, keine konkreten Implementierungen.

Die Implementierungen in Chromium und Firefox sind natürlich Open Source wenn du davon den Code ansehen möchtest, ansonsten musst du dich halt an die vorgegebenen Standards halten wenn du das implementieren möchtest.

https://www.w3.org/standards/webdesign/htmlcss (oder direkt hier html css )

Es sind allerdings offene Standards, also du kannst die standards frei anschauen und frei implementieren.

Bei WebStandards spielt das w3c oft eine Rolle also lohnt es sich auch da einfach mal nachzuschauen.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Dafür gibt es Standards.

https://www.w3.org/TR/CSS2/

Beachte die Hinweise bezüglich Updates. Dinge wie das Box-Model etc. findest Du darin.

Ähnliches gilt für HTML.

-------------

Und ja, es gibt auch Engines wie webkit, gecko, blink.

Html und Css sind Markup Sprachen. Die Doku zu diesen findest du im Internet.

Die Umsetzung der HTML und Css Rendering Engines ist bei manchen Browsern OpenSource bei anderen nicht. Eine wirkliche Referenzimplementierung der Browserengines gibts dabei glaube ich nicht.


MrAmazing2 
Fragesteller
 07.12.2021, 02:50

Aber das Ergebnis eines bestimmten CSS-Codes sieht in jedem Browser gleich aus. (Lediglich das Default-Stylesheet unterscheidet sich.) Folglich müssen sie das Rendering auch alle gleich implementiert haben, or not? (Höchstens unterschiede bezüglich performanceoptimierung, aber die draw-methoden sollten ähnlich sein)

Kannst du mir vlt. die Rendering Engine irgendeines Browsers verlinken? Finde grad garnichts

0
PeterKremsner  07.12.2021, 02:54
@MrAmazing2

Nein die Engines sind nicht gleich implementiert aber sie halten sich eben an den CSS Sprachstandard und dieser ist öffentlich tu finden.

Sie mal bei Firefox ich glaube die Engine heißt Gecko.

1
PeterKremsner  07.12.2021, 03:04
@MrAmazing2

Sollte sie sein ja. Wie du siehst ist das alles in Rust geschrieben und ein enorm großes Projekt dort musst du erstmal finden was da überhaupt zum css parser gehört.

Wohl gemerkt verwenden die auch GPU Renderer also das Rendering wird nicht einfach nachvollziehbar sein.

1

Ich verstehe die Frage ehrlich gesagt nicht. HTML/CSS sind ein Konzept bzw, eine Technologie. Was genau hast du vor? Für konkrete Anwendungsfälle wie Border-Radius kannst du Google oder W3Schools bemühen: https://www.w3schools.com/cssref/css3_pr_border-radius.asp, da sind immer Beispiele dabei


MrAmazing2 
Fragesteller
 07.12.2021, 02:46

Mir geht es nicht um das Anwenden von HTML/CSS, sondern das nachbauen from Scratch.

Das ist zum beispiel der Code, um ein Viereck mit Borderradius und Border zu malen. Sollte so ungefähr auch intern vom Browser ausgeführt werden. Das Problem ist , dafür hab ich Stunden gebraucht. Wäre super, wenn der Code für das Zeug Open Source wäre.

public void drawRect(int x, int y, int width, int height, byte color,  int borderWidth, byte borderColor, int borderRadius) {
    if (borderRadius > 0 && borderRadius >= Math.min(width,height)/2) borderRadius = Math.min(width,height)/2;

    for(int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            boolean isBorder = borderWidth > 0 && (i < borderWidth || i >= width - borderWidth || j < borderWidth || j >= height - borderWidth);
            if (borderRadius > 0) {
                int xDist = 0, yDist = 0;
                if (i <= borderRadius) xDist = borderRadius-i;
                else if (i >= width-borderRadius) xDist = width-i-borderRadius-1;
                if (j <= borderRadius) yDist = borderRadius-j;
                else if (j >= height-borderRadius) yDist = height-borderRadius-j-1;

                if (xDist != 0 && yDist != 0 && xDist*xDist + yDist*yDist > borderRadius*borderRadius) continue;  //Don't draw outside the rounded corner

                if (xDist*xDist + yDist*yDist > (borderRadius-borderWidth)*(borderRadius-borderWidth)) setPixel(x+i, y+j, borderColor);  //Corner
                else if (isBorder) setPixel(i+x, j+y, borderColor);
                else setPixel(x+i, y+j, color);
            } else {
                if (isBorder) setPixel(i+x, j+y, borderColor);
                else setPixel(x+i, y+j, color);
            }
        }
    }
}
0
NackterGerd  04.02.2022, 23:45
@MrAmazing2

Zum einen ist das weder HTML noch CSS.

Zum Anderen wieso sollte man einen eigenen Browser schreiben wollen und Pflegen?

0
MrAmazing2 
Fragesteller
 04.02.2022, 23:50
@NackterGerd

Mit "HTML" und "CSS" meinte ich hier den zugehörigen Interpreter und Renderer.

Wenn man sagt "führe das Programm mit Python aus" meint man schließlich auch den Python Interpreter und nicht die Programmiersprache an sich. Deshalb dachte ich, man könnte das hier genau so sagen. Aber anscheinend wohl nicht, anscheinend bezeichnet HTML und CSS, im Gegensatz zu anderen Sprachen, wirklich nur den Standard bzw. die Sprache an sich, und nicht die zugehörige Technologie im Hintergrund.

Ich habe eine GUI-Library für ein Videospiel erstellt, und dachte mir, dass für die GUI-Elemente ein Mix aus HTML und CSS, in Verbindung mit Tkinter-ähnlicher Syntax, am Userfreundlichsten wäre. Daher brauchte ich die Implementierung der CSS-Eigenschaften in der Rendering Engine wie z.B. die des Border-Radius.

0
NackterGerd  05.02.2022, 06:15
@MrAmazing2

Nur zur Richtigstellung

Phython, Java, C++ ... sind Programiersprachen, HTML und CSS sind keine Programiersprachen

Man kann damit nichts programmieren

Also nicht

0
MrAmazing2 
Fragesteller
 05.02.2022, 10:02
@NackterGerd

Habe nie behauptet, dass es Programmiersprachen wären, bzw. dass man damit etwas programmieren kann.

Ich habe gezielt „Sprachen“ anstatt „Programmiersprachen“ gesagt.

0
MrAmazing2 
Fragesteller
 07.12.2021, 02:54

Aber ja, wie schon von PeterKremsner angemerkt geht es mir wohl nicht um HTML/CSS an sich, sondern um die Standard-Implementierung der Browser-Rendering-Engines, die diesen HTML/CSS-Code zu Pixeln umsetzen

0