Frage

In meiner Klasse spielte ich herum und fand heraus, dass CSS mit erfundenen Elementen zusammenarbeitet.

Beispiel:

imsocool {
    color:blue;
}
<imsocool>HELLO</imsocool>

Als mein Professor mich zum ersten Mal benutzte, war er ein bisschen überrascht, dass erfundene Elemente funktionierten und empfahl, einfach alle meine erfundenen Elemente in Absätze mit IDs zu ändern.

Warum möchte mein Professor nicht, dass ich erfundene Elemente verwende? Sie arbeiten effektiv.

Warum wusste er nicht, dass erfundene Elemente existieren und mit CSS zusammenarbeiten? Sind sie ungewöhnlich?

War es hilfreich?

Lösung

Warum wirkt CSS mit gefälschten Elementen?

(Die meisten) Browser sind (bis zu einem gewissen Grad) vorwärts kompatibel mit zukünftigen Ergänzungen zu HTML. Nicht anerkannte Elemente werden in das DOM analysiert, sind jedoch keine Semantik oder keine spezialisierte Ausfallwiedergabe im Zusammenhang mit ihnen.

Wenn der Spezifikation ein neues Element hinzugefügt wird, können manchmal CSS, JavaScript und Aria verwendet werden, um in älteren Browsern die gleiche Funktionalität zu liefern (und die Elemente müssen im DOM erscheinen, damit diese Sprachen manipulieren können, um diese Funktionalität hinzuzufügen ).

(Es gibt eine Spezifikation für benutzerdefinierte Elemente, aber sie haben spezifische Namensanforderungen und erfordern die Registrierung mit JavaScript.)

Warum möchte mein Professor nicht, dass ich erfundene Elemente verwende?

  • Sie sind von der HTML -Spezifikation nicht erlaubt
  • Sie könnten mit zukünftigen Standardelementen mit demselben Namen in Konflikt stehen
  • Es gibt wahrscheinlich ein vorhandenes HTML -Element, das besser zur Aufgabe geeignet ist

Ebenfalls; Warum wusste er nicht, dass erfundene Elemente existierten und mit CSS zusammengearbeitet haben? Sind sie ungewöhnlich?

Ja. Die Leute benutzen sie nicht, weil sie die oben genannten Probleme haben.

Andere Tipps

Tl; dr

  • Benutzerdefinierte Tags sind in HTML ungültig. Dies kann zu Problemen führen.
  • Die zukünftige Entwicklung erschwert schwieriger, da Code nicht tragbar ist.
  • Gültiges HTML bietet viele Vorteile wie SEO, Geschwindigkeit und Professionalität.

Lange Antwort

Es gibt Einige Argumente Dieser Code mit benutzerdefinierten Tags ist nutzbarer.

Es führt jedoch zu ungültigem HTML. Das ist nicht gut für Ihre Website.

Der Punkt des gültigen CSS/HTML | Paketüberfluss

  • Google bevorzugt es, also ist es gut für SEO.
  • Ihre Webseite funktioniert in Browsern, die Sie nicht getestet haben, häufiger.
  • Es lässt Sie professioneller aussehen (zumindest für einige Entwickler)
  • Konforme Browser können [gültiges HTML schneller] rendern.
  • Es weist auf eine Menge obskurer Fehler hin, die Sie wahrscheinlich verpasst haben und die Dinge beeinflussen, die Sie wahrscheinlich nicht getestet haben, z. B. den Codepage oder der Sprachsatz der Seite.

Warum validieren | W3c

  • Validierung als Debugging -Tool
  • Validierung als zukunftssichere Qualitätsprüfung
  • Die Validierung erleichtert die Wartung
  • Die Validierung hilft dabei, gute Praktiken zu lehren
  • Die Validierung ist ein Zeichen der Professionalität

Yada (noch eine (andere) Antwort)

Bearbeiten: Bitte beachten Sie den Kommentar von BoltClock unten zu Typ vs Tag vs Element. Normalerweise mache ich mir keine Sorgen um die Semantik, aber sein Kommentar ist sehr angemessen und informativ.

Obwohl es bereits ein paar gute Antworten gibt, haben Sie angegeben, dass Ihre Professor Sie haben Sie aufgefordert, diese Frage zu veröffentlichen, damit Sie (formal) angezeigt werden, dass Sie es sind (formal) in der Schule. Ich dachte, ich würde ein bisschen ausführlicher über CSS, sondern auch die, sondern auch über die Mechanik von Webbrowsern. Entsprechend Wikipedia, "CSS ist eine Stilblattsprache, die zum Beschreiben verwendet wird ... ein Dokument, das geschrieben wurde a Markup -Sprache. "(Ich habe den Schwerpunkt auf" a "hinzugefügt. Beachten Sie, dass es nicht" geschrieben in html "sagt. Natürlich brauchen Sie etwas, das wird machen Jeder dieser Dokumenten typisiert auch das Styling. Per Definition tut CSS nicht wissen / verstehen / kümmern Spezifische Markup -Sprach -Tags. Die Tags können also in Bezug auf HTML "ungültig" sein, aber es gibt kein Konzept eines "gültigen" Tags/Elements/Typs in CSS.

Modern Visuelle Browser sind keine monolithischen Programme. Sie sind ein Amalgam verschiedener "Motoren", die bestimmte Jobs zu erledigen haben. An einer das absolut Nötigste Ich kann mir 3 Motoren vorstellen, den Rendering -Motor, den CSS -Motor und den JavaScript -Engine/VM. Ich bin mir nicht sicher, ob der Parser Teil des Rendering -Motors ist (oder umgekehrt) oder ob es sich um einen separaten Motor handelt, aber Sie haben die Idee.

Ob eine visuell Browser (Andere haben bereits die Tatsache angesprochen, dass der Bildschirm Leser Könnte andere Herausforderungen für ungültige Tags haben) Die Formatierung hängt davon ab, ob der Parser das "ungültige" Tag im Dokument verlässt und ob die Rendering -Engine Stile auf dieses Tag anwendet. Da es es schwieriger machen würde, sich zu entwickeln/zu warten, werden CSS -Motoren nicht geschrieben verstehe Das "Dies ist ein HTML -Dokument. Hier finden Sie hier die Liste der gültigen Tags / Elemente / Typen." CSS -Motoren finden einfach Tags / Elemente / Typen Und dann sagen Sie den Rendering -Motor: "Hier sind die Stile, die Sie bewerben sollten." Ob der Rendering -Engine beschließt, die Stile tatsächlich anzuwenden, ist es.

Hier ist eine einfache Möglichkeit, an das zu denken Basic Fluss vom Motor zu Motor: Parser -> CSS -> Rendering. In Wirklichkeit ist es viel verwickelter, aber das ist gut genug für den Anfang.

Diese Antwort ist schon zu lang, also werde ich dort enden.

Unbekannte Elemente werden als behandelt divs von modernen Browsern. Deshalb arbeiten sie. Dies ist Teil des entgegenkommenden HTML5 -Standards, der eine modulare Struktur einführt, zu der neue Elemente hinzugefügt werden können.

In älteren Browsern (ich denke, IE7-) können Sie einen JavaScript-Trick anwenden, nach dem sie auch funktionieren.

Hier ist ein Verwandte Frage Ich fand, als ich nach einem Beispiel suchte.

Hier ist ein Frage zum JavaScript -Fix. Es stellt sich heraus, dass es in der Tat IE7 ist, das diese Elemente nicht außerhalb der Schachtel unterstützt.

Ebenfalls; Warum wusste er nicht, dass erfundene Tags existierten und mit CSS zusammengearbeitet haben? Sind sie ungewöhnlich?

Ja, ganz. Aber vor allem: Sie erfüllen keinen zusätzlichen Zweck. Und sie sind neu in HTML5. In früheren Versionen von HTML war ein unbekanntes Tag ungültig.

Außerdem scheinen Lehrer manchmal Lücken in ihrem Wissen zu haben. Dies könnte darauf zurückzuführen sein, dass sie den Schülern die Grundlagen über ein bestimmtes Fach beibringen müssen, und es zahlt sich nicht wirklich aus, alle Vor- und Nachteile zu kennen und wirklich auf dem neuesten Stand zu sein. Ich bekam einmal Haft, weil ein Lehrer dachte, ich hätte ein Virus programmiert, nur weil ich einen Computer mit der Musik mit dem Musik spielen lassen konnte play Befehl in gwbasic. (Wahre Geschichte und ja vor langer Zeit). Aber was auch immer der Grund sein mag, ich denke, der Rat, keine Custome -Elemente zu verwenden, ist ein solide.

Eigentlich können Sie benutzerdefinierte Elemente verwenden. Hier ist die W3C -Spezifikation zu diesem Thema:

http://w3c.github.io/webcomponents/spec/custom/

Und hier ist ein Tutorial, in dem erklärt wird, wie man sie benutzt:

http://www.html5rocks.com/en/tutorials/webcomponents/customelements/

Wie von @Quentin hervorgeht: Dies ist eine Entwurfsspezifikation in den frühen Tagen der Entwicklung, und es führt zu Einschränkungen der Elementnamen.

Es gibt ein paar Dinge über die anderen Antworten, die entweder nur schlecht formuliert sind oder vielleicht etwas falsch sind.

Falsch (ISH): Nicht standardmäßige HTML-Elemente sind "nicht erlaubt", "illegal" oder "ungültig".

Nicht unbedingt. Sie sind "Nicht konform". Was ist der Unterschied? Etwas kann "nicht anpassen" und trotzdem "erlaubt" sein. Der W3C schickt die HTML -Polizei nicht nach Hause und schleppt Sie weg.

Der W3C hat die Dinge aus einem bestimmten Grund so gelassen. Konformität und Spezifikationen werden von einer Gemeinschaft definiert. Wenn Sie zufällig eine kleinere Community haben, die HTML für genauere Zwecke verbraucht und sie alle auf einige neue Elemente einverstanden sind, die sie benötigen, um die Dinge zu erleichtern, können sie das haben, was der W3C als AS bezieht "Andere anwendbare Spezifikationen". (Dies ist offensichtlich eine grobe Vereinfachung, aber Sie haben die Idee)

Trotzdem erklären strenge Validatoren Ihre nicht standardmäßigen Elemente für "ungültig". Dies liegt jedoch daran, dass die Aufgabe des Validators darin besteht, die Übereinstimmung mit jeder Spezifikation zu gewährleisten, für die er validiert, und nicht um die "Rechtmäßigkeit" für die zu gewährleisten Browser oder für verwenden.

Falsch (ISH): Nicht standardmäßige HTML-Elemente Wille führen zu Problemen

Möglicherweise, aber unwahrscheinlich. (Ersetzen Sie "Will" durch "Macht") Dies sollte nur zu einem Rendering -Problem führen, wenn Ihr benutzerdefiniertes Element mit einer anderen Spezifikation in Konflikt steht, z. B. eine Änderung der HTML SVG, Mathematik oder etwas Brauch).

In der Tat, Der Grund, warum CSS nicht standardmäßige Tags stylen kann liegt daran, dass die HTML -Spezifikation Staaten eindeutig das:

Benutzeragenten müssen Elemente und Attribute behandeln, die sie nicht als semantisch neutral verstehen. Lassen Sie sie im DOM (für DOM -Prozessoren) und stylen Sie sie nach CSS (für CSS -Prozessoren), schließen Sie jedoch keine Bedeutung von ihnen ab

Notiz: Wenn Sie ein benutzerdefiniertes Tag verwenden möchten, denken Sie einfach an eine Änderung der HTML -Spezifikation zu einem späteren Zeitpunkt. Es ist wirklich unwahrscheinlich, dass der W3C die implementieren wird <imsocool> Tag jedoch.

Nicht standardmäßige Tags und JavaScript (über die DOM)

Der Grund, warum Sie mit JavaScript auf benutzerdefinierte Elemente zugreifen und diese ändern können, ist, dass die Die Spezifikation spricht sogar darüber, wie sie im Dom behandelt werden sollten, Das ist die (wirklich schreckliche) API, mit der Sie die Elemente auf Ihrer Seite manipulieren können.

Die HTMLUNKNOWNELEMENT -Schnittstelle muss für HTML -Elemente verwendet werden, die nicht durch diese Spezifikation (oder andere anwendbare Spezifikationen) definiert sind.

TL; DR: Die Anpassung an die Spezifikation erfolgt für Kommunikation und Sicherheit. Nicht-Konformance ist immer noch von allem außer a zulässig Validator, dessen alleiniger Zweck es ist, die Konformität durchzusetzen, deren Verwendung jedoch optional ist.

Zum Beispiel:

var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]

(Ich bin sicher, das wird Flammen zeichnen, aber es gibt meine 2 Cent)

Nach den Spezifikationen:

CSS

EIN Typ Selector ist der Name eines Dokumentsprachelement -Typs, der mit der Syntax von CSS qualifizierten Namen geschrieben wurde

Ich dachte, das wurde das genannt Element Selektor, aber anscheinend ist es tatsächlich das Typ Wähler. Die Spezifikation spricht weiter CSS qualified names die keine Einschränkung auf die Namen der Namen legt. Das heißt, solange der Typ -Selektor mit CSS -qualifizierter Name -Syntax übereinstimmt, ist er technisch korrektes CSS und entspricht dem Element im Dokument. Es gibt keine CSS-spezifische Einschränkung für Elemente, die in einer bestimmten Spezifikation nicht vorhanden sind-HTML oder auf andere Weise.

Html

Es gibt keine offizielle Einschränkung, dass Sie Tags in das gewünschte Dokument einbeziehen. In der Dokumentation heißt es jedoch

Die Autoren dürfen keine Elemente, Attribute oder Attributwerte für andere Zwecke als ihren geeigneten semantischen Zweck verwenden, da die Software die Seite korrekt korrekt verarbeitet.

Und es heißt später

Die Autoren dürfen keine Elemente, Attribute oder Attributwerte verwenden, die von dieser Spezifikation oder anderen anwendbaren Spezifikationen nicht zulässig sind, da dies die Verlängerung der Sprache in Zukunft erheblich erschwert.

Ich bin mir nicht sicher, wo oder ob die Spezifikation besagt, dass nicht abgekoppelte Elemente sind erlaubt, aber es spricht über die HtmlunknownElement Schnittstelle für nicht erkannte Elemente. Einige Browser erkennen möglicherweise nicht einmal Elemente, die in der aktuellen Spezifikation enthalten sind (IE8 kommt mir in den Sinn).

Da ist ein Entwurf für benutzerdefinierte Elemente, Aber ich bezweifle, dass es noch überall implementiert ist.

Dies ist mit HTML5 möglich, aber Sie müssen ältere Browser berücksichtigen.

Wenn Sie sich entscheiden, sie dann zu verwenden, kommentieren Sie Ihre HTML! Einige Leute haben möglicherweise Probleme, herauszufinden, was es ist, so dass ein Kommentar ihnen eine Menge Zeit sparen kann.

Etwas wie das,

<!-- Custom tags in use, refer to their CSS for aid -->

Wenn Sie Ihr eigenes benutzerdefiniertes Tag/Elements erstellen, haben die älteren Browser keine Ahnung, wie das genau wie HTML5 -Elemente wie nav/section.

Wenn Sie an diesem Konzept interessiert sind, empfehle ich, dies richtig zu machen.

Einstieg

Benutzerdefinierte Elemente ermöglichen Webentwicklern, neue Arten von HTML -Elementen zu definieren. Die Spezifikation ist eine von mehreren neuen API -Primitiven, die unter dem Dach der Webkomponenten landen, aber es ist wahrscheinlich das wichtigste. Webkomponenten existieren nicht ohne die Funktionen, die durch benutzerdefinierte Elemente freigeschaltet wurden:

Definieren Sie neue HTML/DOM -Elemente erstellen Elemente, die sich von anderen Elementen logisch ausgeweitet haben, die benutzerdefinierte Funktionalität in ein einzelnes Tag ausgeweitet werden. Erweitern Sie die API der vorhandenen DOM -Elemente

Es gibt viel, was Sie damit anfangen können, und es macht Ihr Skript schön, wie dieser Artikel es gerne ausdrückt. Benutzerdefinierte Elemente, die neue Elemente in HTML definieren.

Also lass uns zusammenfassen,

Profis

  • Sehr elegant und leicht zu lesen.

  • Es ist schön, nicht so viele zu sehen divs. :p

  • Ermöglicht dem Code ein einzigartiges Gefühl

Nachteile

  • Ältere Browserunterstützung ist eine starke Sache zu berücksichtigen.

  • Andere Entwickler haben möglicherweise keine Ahnung, was zu tun ist, wenn sie nicht über benutzerdefinierte Tags wissen. (Erklären Sie ihnen oder fügen Sie Kommentare hinzu, um sie zu informieren)

  • Zuletzt eine Sache zu berücksichtigen, aber ich bin mir nicht sicher, dass sie Block- und Inline -Elemente. Durch die Verwendung benutzerdefinierter Tags werden Sie am Ende mehr CSS schreiben, da das benutzerdefinierte Tag keine Standardseite hat.

Die Wahl liegt ganz bei Ihnen und Sie sollten sie auf das stützen, wonach das Projekt verlangt.

Update 1/2/2014

Hier ist ein sehr hilfreicher Artikel, den ich gefunden und den ich mir vorstellte. Benutzerdefinierte Elemente.

Lernen Sie die Technik, warum benutzerdefinierte Elemente? Benutzerdefinierte Elemente können Autoren ihre eigenen Elemente definieren. Die Autoren assoziieren Javascript -Code mit benutzerdefinierten Tag -Namen und verwenden diese benutzerdefinierten Tag -Namen wie bei jedem Standard -Tag.

Verwenden Sie beispielsweise eine spezielle Art von Knopf namens Super-Button, sondern auch die Superknopf wie folgt:

Benutzerdefinierte Elemente sind immer noch Elemente. Wir können sie genauso einfach erstellen, verwenden, manipulieren und komponieren wie jeder Standard oder heute.

Dies scheint eine sehr gute Bibliothek zu verwenden, aber ich habe bemerkt, dass sie den Baustatus des Fensters nicht überschritten hat. Dies ist auch in einem Pre-Alpha, glaube ich, also würde ich das im Auge behalten, während es sich entwickelt.

Warum möchte er nicht, dass Sie sie benutzen? Sie sind weder häufig noch Teil des HTML5 -Standards. Technisch gesehen sind sie nicht erlaubt. Sie sind ein Hack.

Ich mag sie selbst selbst. Möglicherweise interessieren Sie sich für XHTML5. Sie können Ihre eigenen Tags definieren und als Teil des Standards verwenden.

Wie andere betont haben, sind sie auch ungültig und somit nicht tragbar.

Warum wusste er nicht, dass sie existieren? Ich weiß nicht, außer dass sie nicht häufig sind. Möglicherweise war er sich einfach nicht bewusst, dass Sie es könnten.

Making-Tags werden kaum jemals verwendet, da es unwahrscheinlich ist, dass sie in jedem aktuellen Browser und jedem zukünftigen Browser zuverlässig arbeiten.

Ein Browser muss den HTML-Code in Elemente analysieren, die er kennt, werden in erstellte Tags in etwas anderes konvertiert, das in das DOMM-Modell (DOMR-Objektmodell) passen. Da die Webstandards nicht abdecken, wie man alles außerhalb der Standards abwickelt, neigen Webbrowser dazu, den Code mit Nichtstichen auf unterschiedliche Weise zu verarbeiten.

Die Webentwicklung ist schwierig genug mit verschiedenen Browsern, die ihre eigenen Macken haben, ohne ein weiteres Element der Unsicherheit hinzuzufügen. Das Beste, um sich bei Dingen zu halten, die sich tatsächlich in den Standards befinden, ist das, was die Browser -Anbieter zu folgen versuchen, und hat die beste Chance, tatsächlich zu arbeiten.

Ich denke, erfundene Tags sind potenziell verwirrender oder unklarer als Ps mit IDs (ein Textblock im Allgemeinen). Wir alle wissen, dass AP mit einer ID ein Absatz ist, aber wer weiß, wofür erfundene Tags bestimmt sind? Zumindest ist das mein Gedanke. :) Daher ist dies eher ein Stil / Klarheit als eine Funktionalität.

Andere haben hervorragende Punkte gemacht, aber es ist erwähnenswert, dass, wenn Sie sich einen Rahmen ansehen, z. Angularjs, Es gibt einen sehr gültigen Fall für benutzerdefinierte Elemente und Attribute. Diese vermitteln nicht nur eine bessere semantische Bedeutung für die XML, sondern können auch Verhalten und Gefühl für die Webseite bieten.

CSS ist eine Style Sheet -Sprache, mit der XML -Dokumente vorgestellt werden können, nicht nur (x) HTML -Dokumente. Ihr Ausschnitt mit den erfundenen Tags könnte Teil eines legalen XML-Dokuments sein. Es wäre eins, wenn Sie es in ein einzelnes Wurzelelement einschließen. Wahrscheinlich hast du schon eine <html> ...</html> um es herum? Jeder aktuelle Browser kann XML -Dokumente anzeigen.

Natürlich ist es kein sehr gutes XML -Dokument, es fehlt eine Grammatik und eine XML -Erklärung. Wenn Sie stattdessen einen HTML -Deklarations -Header (und wahrscheinlich eine Serverkonfiguration, die den richtigen MIME -Typ sendet) verwenden, wäre dies stattdessen illegales HTML.

(X) HTML hat Vorteile gegenüber einfachem XML, da Elemente eine semantische Bedeutung haben, die im Zusammenhang mit einer Webseitenpräsentation nützlich ist. Tools können mit dieser Semantik funktionieren, andere Entwickler wissen die Bedeutung, es ist weniger fehleranfällig und besser zu lesen.

In anderen Kontexten ist es jedoch besser, CSS mit XML und/oder XSLT für die Präsentation zu verwenden. Das haben Sie getan. Da dies nicht Ihre Aufgabe war, wussten Sie nicht, was Sie getan haben, und HTML/CSS ist der bessere Weg, um die meiste Zeit in Ihrem Szenario daran zu bleiben.

Sie sollten Ihrem Dokument einen (x) HTML -Header hinzufügen, damit Ihnen Tools aussagekräftige Fehlermeldungen geben können.

... Ich ändere einfach alle meine erfundenen Tags in Absätze mit IDs.

Ich habe tatsächlich Probleme mit seinem Vorschlag, wie man es richtig macht.

  1. EIN <p> Tag ist für Absätze. Ich sehe Leute, die es die ganze Zeit anstelle eines DIV verwenden - einfach zu Abstandszwecken oder weil es sanfter erscheint. Wenn es sich nicht um einen Absatz handelt, verwenden Sie ihn nicht.

  2. Sie brauchen oder möchten keine IDs auf alles halten, es sei denn, Sie müssen es speziell ansprechen (z. B. mit JavaScript). Verwenden Sie Klassen oder nur eine direkte Div.

Von den frühen Tagen wurde CSS als Markup -Agnostiker entwickelt, sodass es mit jeder Markup -Sprache verwendet werden kann, die Baumstruktur gleichermaßen (z. B. SVG). Jedes Tag, der entspricht name token Die Produktion ist in CSS vollkommen gültig. In Ihrer Frage geht es also eher um HTML als um CSS selbst.

Elemente mit benutzerdefinierten Tags werden durch die HTML5 -Spezifikation unterstützt. HTML5 Standardisieren Sie, wie unbekannte Elemente im DOM analysiert werden müssen. HTML5 ist also die erste HTML -Spezifikation, die benutzerdefinierte Elemente streng genommen ermöglicht. Sie müssen nur HTML5 docType verwenden <!DOCTYPE html> in Ihrem Dokument.

Zum benutzerdefinierten Tag -Namen selbst ...

Dieses Dokument http://www.w3.org/tr/custom-elements/ Empfiehlt benutzerdefinierte Tags, die Sie für mindestens ein Symbol "-" (Dash) enthalten. Auf diese Weise werden sie nicht mit zukünftigen HTML -Elementen in Konflikt stehen. Deshalb sollten Sie Ihr Dokument besser in so etwas ändern:

<style>
so-cool {
    color:blue;
}
</style>

<body>
    <so-cool>HELLO</so-cool>
</body> 

Überraschenderweise erwähnte niemand (einschließlich meines vergangenen Selbst) die Zugänglichkeit. Ein weiterer Grund, warum die Verwendung gültiger Tags anstelle von benutzerdefinierten Kompatibilität mit der größten Software-Menge, einschließlich Bildschirmreadern und anderen Tools, die Menschen für Zugänglichkeitszwecke benötigen. Darüber hinaus sind Zugangsgesetze wie WAI benötigen Erstellen zugänglicher Websites, was im Allgemeinen bedeutet, dass sie gültiges Markup verwenden.


Anscheinend hat es niemand erwähnt, also werde ich es tun.

Dies ist ein Nebenprodukt von Browserkriege.

In den 1990er Jahren, als das Internet zum ersten Mal Mainstream ging, ist der Wettbewerb auf dem Browsermarkt gestiegen. Um wettbewerbsfähig zu bleiben und Benutzer zu zeichnen, versuchten einige Browser (insbesondere Internet Explorer), hilfreich und „benutzerfreundlich“ zu sein, indem sie versuchten, herauszufinden, welche Seitendesigner gemeint und erlaubte so karup, dass korrekt (z. B., z. B., <b><i>foobar</b></i> würde korrekt als mutige iTitalik rendern).

Dies machte bis zu einem gewissen Grad sinnvoll, denn wenn ein Browser immer wieder über Syntaxfehler beschwerte, während ein anderer alles aß, was Sie an ihn geworfen haben und ein (mehr oder weniger) korrektes Ergebnis ausspuckten, würden die Leute natürlich zu letzterem strömen.

Während viele der Meinung waren, dass die Browserkriege vorbei waren, hat ein neuer Krieg zwischen den Browser -Anbietern in den letzten Jahren seit der Veröffentlichung von Chrome wieder entfacht, wieder wuchs Apple an und drückte Safari und verlor seine Dominanz. (Sie könnten es aufgrund der wahrgenommenen Zusammenarbeit und Unterstützung von Standards durch Browser -Anbieter als „Kaltkrieg“ bezeichnen.) Daher ist es keine Überraschung, dass selbst zeitgenössische Browser welche welche angeblich Stellen Sie sich streng den Webstandards an, versuchen Sie tatsächlich, „clever“ zu sein, und ermöglichen Sie ein solches Standardverhalten, um zu versuchen, wie zuvor einen Vorteil zu erzielen.

Leider führte dieses zulässige Verhalten zu einem massiven (etwas könnte sogar sagen, dass krebsartiges Wachstum von schlecht ausgeprägten Webseiten. Weil der IE der nachsichtigste und beliebteste Browser war und aufgrund von Microsoft weiterhin die Standards für die Standards für die Förderung und Förderung schlechter Designs und Verbreitung und Aufrechterhaltung gebrochener Seiten berüchtigt und förderte.

Möglicherweise können Sie in einigen Browsern mit Macken und Exploits wie dem davonkommen Webstandards Beim Erstellen von Webseiten und Websites, um sicherzustellen, dass sie korrekt angezeigt werden, werden sie nicht mit einem Browser -Update unterbrochen (möglicherweise vollständig ignoriert).

Während die Browser im Allgemeinen CSS mit HTML -Tags beziehen, unabhängig davon, ob sie gültig sind oder nicht, sollten Sie dies absolut nicht tun.

Aus dieser Sicht ist technisch nichts auszusetzen. Die Verwendung von Make -up -Tags ist jedoch etwas, das Sie in HTML niemals tun sollten.

HTML ist eine Markup -Sprache, was bedeutet, dass jedes Tag einer bestimmten Art von Informationen entspricht.

Ihre erfundenen Tags entsprechen keiner Informationen. Dies führt zu Problemen von Webcrawlern wie Google.

Weitere Informationen zum Bedeutung des korrekten Markups.

Bearbeiten

DIVs beziehen sich auf Gruppen mehrerer verwandter Elemente, die in Blockform angezeigt werden sollen und können als solche manipuliert werden.

Spannweiten beziehen sich auf Elemente, die unterschiedlich gestaltet sein sollen als der Kontext, in dem sie sich derzeit befinden, und dürfen inline und nicht als Block angezeigt werden. Ein Beispiel ist, ob ein paar Wörter in einem Satz alle Kappen sein müssen.

Benutzerdefinierte Tags korrelieren nicht mit irgendwelchen Standards und somit spannen/divs stattdessen mit den Eigenschaften der Klasse/ID verwendet werden.

Es gibt sehr spezifische Ausnahmen dazu, z. Angular JS

Obwohl CSS eine Sache hat, die als "Tag -Selektor" bezeichnet wird, weiß es nicht wirklich, was ein Tag ist. Das ist für die Sprache des Dokuments zu definieren. CSS wurde entwickelt, um nicht nur mit HTML, sondern auch mit XML verwendet zu werden, wobei (vorausgesetzt, Sie verwenden kein DTD oder ein anderes Validierungsschema), können die Tags nahezu alles sein. Sie könnten es auch mit anderen Sprachen verwenden, obwohl Sie Ihre eigene Semantik für genau das finden müssen, was Dinge wie "Tags" und "Attribute" entsprechen.

Browser wenden im Allgemeinen CSS auf unbekannte Tags in HTML an, da dies als besser angesehen wird als vollständig zu brechen: Zumindest können sie etwas anzeigen. Aber es ist sehr Schlechte Praxis, "gefälschte" Tags absichtlich zu verwenden. Ein Grund dafür ist, dass neue Tags von Zeit zu Zeit definiert werden. Wenn man definiert ist, wirkt dies wie Ihr gefälschtes Tag, funktioniert aber nicht ganz auf die gleiche Weise, was zu Problemen mit Ihrer Website auf neuen Browsern führen kann.

Warum wirkt CSS mit gefälschten Elementen? Weil es niemanden tut, weil du sie sowieso nicht benutzen sollst.

Warum möchte mein Professor nicht, dass ich erfundene Elemente verwende? Denn wenn dieses Element in Zukunft durch eine Spezifikation definiert wird, hat Ihr Element ein unvorhersehbares Verhalten.

Warum wusste er nicht, dass erfundene Elemente existieren und mit CSS zusammenarbeiten? Sind sie ungewöhnlich? Weil er, wie die meisten anderen Webentwickler, versteht, dass wir keine Dinge verwenden sollten, die in Zukunft zufällig brechen könnten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top