Gibt es ein HTML-Element, das als Inline-Block existiert?

8

Das div ist das Quintessential Block Level Element, und das span ist das Inline Gegenstück. Sie sind die einfachste Form dieses Anzeigetyps und weisen keine anderen Eigenschaften auf. In vielen Fällen werde ich einer von ihnen den Stil geben:

%Vor%

Dadurch verhalten sie sich sehr praktisch. Für div bedeutet das Boxen, die leicht nebeneinander sitzen, während sie ihre Breite und Höhe wie definiert beibehalten. Für die span kann ich daraus bunte Rechtecke machen. Die Anzeige inline-block ist für so viele Dinge großartig, aber ich habe noch nie ein Element gesehen, das als inline-block startet, ohne dass etwas anderes passiert.

Bilder ( img ) sind, aber offensichtlich nicht sind für die gleichen Dinge wie div geeignet, sie haben diesen Stil, erfüllen aber einen anderen Zweck.

Gibt es also ein Element, von dem ich nicht weiß, dass es das Quintessential inline-block ist, oder wird das weggelassen?

Und wenn nicht, warum? Die Verwendungen von inline-block sind zahlreich, daher scheint es, dass es ein Element geben sollte, das diese grundlegende Form annimmt.

    
zeel 10.05.2013, 10:38
quelle

3 Antworten

6

Es gibt kein solches Element und es gibt einige gute Gründe dafür.

inline-block hat mehrere Anwendungen im zeitgenössischen Webdesign. Es ist jedoch nicht Teil des ursprünglichen Designs , das nur Block enthält und Inline-Elemente. Stattdessen wird es von <img> abgeleitet, wie es von NSCA Mosaic hinzugefügt wurde. (Das verwendet das falsche Markup und half, das ursprüngliche "Responsive Design" zu besiegen denke, wir haben gerade erst damit begonnen, die Probleme mit img zu beheben.

Weiter unten in der Zeitleiste war inline-block immer noch nicht Teil von IE4 oder 5 oder irgendeiner Version von Netscape. Es war nicht Teil der frühen HTML4-Ära. Wir würden also nicht erwarten, Ihr hypothetisches Element in dieser Version des Standards zu finden. inline-block erscheint nur in CSS2, das nach HTML4 kam. (Sehen Sie sich den Referenzabschnitt in jedem Standard an).

Im Gegensatz zu block , inline-block wird durch Leerzeichen im Markup beeinflusst . Es wird durch den Namen impliziert, und es ist das, was Sie von <img> in der Mitte eines Textes erwarten würden (aka WordProcessor-Objekt verankert als "Zeichen"). Aber jenseits seiner Ursprünge wird das Whitespace-abhängige Markup bald sehr mühsam. Ich würde nicht erwarten, dass W3C HTML5 dies in einem neuen Element festschreibt.

Die Angabe würde sicherlich einen Streit über "Semantik", Trennung von Inhalt und Präsentation usw. beinhalten. (Sowie, wie man es nennt :). Und wenn das Standard-Rendering Leerzeichen bedeutungsvoll macht - ist das nicht Teil der Semantik dieses Elements? Verwenden Sie Bilder, um Wörter - oder einzelne Buchstaben eines Wortes (mit entsprechendem Alt-Text) darzustellen. Dies veranschaulicht, dass das Vorhandensein von Leerräumen (oder nicht) um dieses Element semantisch signifikant ist, genau wie das Vorhandensein von Leerzeichen, die Wörter mit signifikantem Gewicht trennen. Das scheint mir ein großes Problem zu sein.

inline-block wird oft als moderne Alternative zur Verwendung von float überall propagiert. Aber beides ist wirklich nicht geeignet. Aus diesem Grund standardisiert CSS3 neue Layout-Modi: "flexbox" und "grid , um moderne responsive Designs mit einem echten, sauberen Markup zu unterstützen. Kein Dummy-Markup (oder Dummy-generierter Inhalt). Kein Hacking um Whitespace-Abhängigkeit.

    
sourcejedi 10.05.2013, 12:17
quelle
6

Die einzigen Elemente, die ich mir vorstellen kann, haben eine Inline-Erscheinung, aber erlauben, dass width und height gesetzt werden, sind:

  • img ,
  • input ,
  • textarea
  • select und
  • button

Das einzige Element hier, das HTML-Inhalt annehmen kann, ist das button -Element; was nicht eine ideale Verwendung von button ist, da es ein Element sein soll, mit dem der Benutzer interagieren könnte / sollte; anstatt nur ein Containerelement.

Obwohl Sie möglicherweise mehrere Verwendungen für ein solches Element haben, gibt es keinen überzeugenden Grund. Angesichts der Leichtigkeit, mit der die display -Eigenschaft geändert werden könnte, sollte das W3C oder eine andere Autorität dies explizit definieren. vor allem, da der einzige Unterschied zwischen inline und inline-block die Möglichkeit ist, Dimensionen und margin zuzuordnen.

    
David Thomas 10.05.2013 11:05
quelle
0

Das img-Tag ist standardmäßig ein Inline-Block:

Ссылка

Bearbeiten: Sie können diese SO-Frage überprüfen: ist & lt; img & gt; Element Block Level oder Inline Level?

    
vitozev 10.05.2013 10:42
quelle

Tags und Links