
Matthäus James Taylor
Ich weiß, dass es falsch ist, ein Blockelement in ein Inline-Element einzufügen, aber was ist mit dem Folgenden?
Stellen Sie sich dieses gültige Markup vor:
<div><p>This is a paragraph</p></div>
Fügen Sie nun dieses CSS hinzu:
div {
display:inline;
}
Dadurch entsteht eine Situation, in der ein Inline-Element ein Blockelement enthält (das div wird inline und das p ist standardmäßig ein Block).
Sind die Seitenelemente noch gültig?
Wie und wann beurteilen wir, ob der HTML-Code valide ist – bevor oder nachdem die CSS-Regeln angewendet wurden?
AKTUALISIEREN: Ich habe seitdem gelernt, dass es in HTML5 vollkommen gültig ist, Elemente auf Blockebene in Link-Tags einzufügen, z.
<a href="#">
<h1>Heading</h1>
<p>Paragraph.</p>
</a>
Dies ist tatsächlich sehr nützlich, wenn Sie möchten, dass ein großer HTML-Block ein Link ist.
Wenn es eine Logik gibt, der du folgst, und du sie am Ende so umsetzt, ist das NICHT FALSCH. Arbeitende Dinge sind nicht “falsch”, nur weil sie seltsam sind. Ja, es ist ziemlich ungewöhnlich, aber es hilft und es ist kein Fehler. Es ist beabsichtigt. HTML und CSS sollten Ihnen dienen, nicht umgekehrt, also hören Sie niemals auf Kommentare, die Ihnen sagen, es nicht zu tun, nur weil es hässlich ist.
Es ist typisch, eine Lösung als „ungültig“ zu bezeichnen und einen langen Weg um den Block vorzuschlagen. Manchmal kann man überdenken, was man getan hat. Aber es kann viele Gründe für das geben, was Sie getan haben, und sie berücksichtigen sie nicht.
Ich verwende regelmäßig Blöcke innerhalb von Inlines. Es ist gültig und es funktioniert – es ist nur in den meisten Fällen nicht notwendig. Na und. Denken Sie daran, als XHTML uns sagte, wir sollten Eigenschaften immer in Anführungszeichen setzen (und alle haben Sie angeschrien, wenn Sie es nicht getan haben!), erlaubt HTML5 jetzt, sie wegzulassen, wenn darin kein Platz ist. Was ist mit dem letzten Schrägstrich nach Singular-Tags passiert? “
” ? Komm schon. Normen ändern sich. Aber Browser unterstützen weiterhin auch Nicht-Standard-Dinge. CENTER ist veraltet; Wir haben 2013 und es funktioniert immer noch. TISCH für vertikale Zentrierung? Manchmal ist es der einzige Weg. DIV innerhalb von A, damit es wie geplant schwebt? Fahre einfach fort.
Konzentrieren Sie sich auf wichtige Dinge.
Der HTML-Code wird unabhängig vom CSS validiert, sodass die Seite weiterhin gültig wäre. Ich bin mir ziemlich sicher, dass die CSS-Spezifikation auch nichts darüber aussagt, aber zitieren Sie mich nicht dazu. Ich wäre jedoch sehr vorsichtig mit einer solchen Technik, da sie zwar in einigen Browsern wie beabsichtigt gerendert werden könnte, Sie sie jedoch alle testen müssten – ich sehe nicht, dass viele Garantien gegeben werden.
Nein, es ist keine falsche Wahl. Wir können nach Bedarf verwenden.

Guffa
Unabhängig davon, ob es gültig ist oder nicht, die Elementstruktur ist falsch. Blockelemente werden nicht in Inline-Elemente eingefügt, damit der Browser die Elemente auf leicht vorhersagbare Weise rendern kann.
Auch wenn es keine Regeln für HTML oder CSS bricht, erstellt es dennoch Elemente, die nicht wie beabsichtigt gerendert werden können. Der Browser muss die Elemente so behandeln, als wäre der HTML-Code ungültig.
10068200cookie-checkIst es falsch, ein Blockelement in CSS zu ändern, wenn es ein anderes Blockelement enthält?yes
Ich bin froh, dass HTML5 dies für gültig hält, aber gültiger Code ist nicht das A und O des Webs. Die Googles verwenden Code, der wie eine schrecklich kaputte Tag-Suppe aussieht, aber es funktioniert.
– JKirchartz
10. Februar 2012 um 21:06 Uhr