CSS hat einen Wert für das display-Attribut namensrun-in. Es ist so
h3 {
display: run-in;
}
Der Punkt ist, einer Überschrift zu erlauben, in den darunterliegenden Text überzugehen, ohne die Semantik zu opfern oder auf Probleme zu stoßen, die man versuchen könnte, sie mit anderen Layout-Techniken zu erzwingen.

Schauen wir uns das genauer an.
Aber warum nicht __________?
Aber warum nicht nach links flotten? Nun, Überschriften haben oft eine größere Schriftgröße als Fließtext. Wenn Sie also die Überschrift nach links flottieren, erwischen Sie möglicherweise mehr als eine Zeile.

Aber warum nicht ein Inline-Element daraus machen? Da der folgende Text möglicherweise (tatsächlich ist es wahrscheinlich) innerhalb eines Absatz-Tags liegt. Absatz-Tags sind Block-Level-Elemente und brechen daher bei einem Inline-Element in eine neue Zeile, und der Effekt wird nicht erzielt. Sie könnten das <h3>-Tag *innerhalb* des <p>-Tags einfügen, aber das hat semantische Bedenken und vor allem Bedenken hinsichtlich der langfristigen Wartung. Was, wenn dieser Effekt aus der Mode kommt?
Aber warum nicht inline-block verwenden? Gleiches Problem wie oben. Der Effekt wird nicht erzielt, es sei denn, Sie stecken die Überschrift in den folgenden Absatz, was problematisch ist.
Wie funktioniert es dann?
Wenn ein „run-in“-Element einem Block-Level-Element vorausgeht, verhält sich das „run-in“-Element strukturell so, als wäre es zum ersten Inline-Kindelement des Block-Level-Elements geworden.
Browser-Unterstützung
Habe das noch nicht oft gehört? Nun, das könnte daran liegen, dass die Browserunterstützung etwas seltsam ist.
Gerüchten zufolge ist Mozilla nicht glücklich mit dem Standard. Firefox unterstützt es überhaupt nicht, auch nicht die Beta-Versionen von Version 4.
Die WebKit-Familie (Safari und Chrome) unterstützen es, ebenso wie Opera und IE 8. Es gibt jedoch einige Unterschiede darin, wie diese Browser Dinge handhaben. Berichten zufolge erlaubten ältere Versionen von WebKit und Konqueror, dass „run-in“-Elemente in nachfolgende Inline-Elemente übergehen, was falsch ist.
Probleme im Standard?
Bei meiner eigenen Lektüre des Standards finde ich ihn etwas unklar.
Wenn eine Geschwister-Blockbox (die nicht gefloatet und nicht absolut positioniert ist) der „run-in“-Box folgt, wird die „run-in“-Box zur ersten Inline-Box der Blockbox.
Das ergibt Sinn und *scheint* so zu funktionieren, aber bedeutet „wird zur ersten Inline-Box“, dass die „run-in“-Box ein Nachfahre der Blockbox werden sollte? In WebKit behält das „run-in“-Element seine Solidarität.
Ein „run-in“ kann nicht in einen Block übergehen, der bereits mit einem „run-in“ beginnt oder der selbst ein „run-in“ ist.
Bedeutet das, dass es nicht zwei Überschriften, beide „run-in“, geben kann, die in einen darunterliegenden Absatz übergehen? So würde ich es lesen, aber ich denke, die WebKit-Implementierung, bei der sie beide hineinfallen, macht mehr Sinn. Opera und IE 8 folgen dem Standard, indem das erste „run-in“ zu Block wird und das zweite Inline.
Dann heißt es:
Andernfalls wird die „run-in“-Box zu einer Blockbox.
*Andernfalls* ist ein großes Wort, aber die Implementierungen waren hier ziemlich gut. Drei „run-ins“ hintereinander innerhalb eines Elternelements ohne Geschwister? Alle werden zu Block. Ein „run-in“ zwischen zwei Inline-Elementen? Es wird zu Block. Run-in > absolut positioniert > Block, das „run-in“ wird zu Block. Verwirrend, ich weiß, aber aktuelle moderne Browser machen das hier gut.
Wenn das „run-in“-Element etwas Block-Level-Element enthielt, wird es zu Block-Level. Alle Browser scheinen sich da einig zu sein.
Demos
Hier ist meine eigene einfache Demo-Seite. Es gibt auch eine superhardcore Demo (die über 10 Jahre alt ist).
Das ist schade, dass Firexox es nicht unterstützt...
Toller Tipp! Danke Chris.
Wusste ich nicht. Danke für den Tipp.
Toller Tipp, aber schade, dass Fire fox ihn nicht mag.
Dieses Attribut wäre großartig, wenn Firefox es unterstützen würde. Schade!
Es ist seltsam, dass Firefox es nicht unterstützt, aber IE8 tut es.
Ich schätze nicht, wenn sie dem Standard nicht zustimmen. Aber man würde zumindest eine geringe Anstrengung zur Integration erwarten, wie es die anderen Anbieter versucht haben.
Es ist sicherlich ein interessantes Konzept und eines, das sich als sehr nützlich erweisen könnte, wenn der Standard vereinbart und in den neuesten Versionen implementiert würde.
Das ist ziemlich cool. Ich bin sicher, jemand wird einen Trick für FF finden...
Was ist der Sinn eines Artikels über ein CSS-Attribut, das zumindest nicht in der neuesten Version aller Browser breit unterstützt wird?
Implementiert jemand wirklich kommerzielle Standard-Websites mit schlecht unterstützten CSS-Eigenschaften?
Meine Meinung, nicht dazu gedacht, Kontroversen auszulösen
Meiner Meinung nach hat dies eine ziemlich breite Unterstützung. Die Tatsache, dass Firefox ein Nachzügler ist, macht dies besonders interessant und umso wertvoller für einen Artikel.
Äh, was? Also sagst du... was ist der Sinn jedes CSS3-Artikels, seit {Browser einfügen} ihn nicht unterstützt? 4 von 5 ist mehr als genug.
Leute implementieren Websites mit proprietärer CSS-Markierung (und anderer Markierung), die nur in *einem* Browser funktionieren
...keine Namen nennen, natürlich : )
„Es wird eines Tages zitronengetränkte Papier-Servietten geben“ – HHGTTG
Ich lerne lieber jetzt über solche Dinge, als aufholen zu müssen, wenn sie weit genug verbreitet sind, um sie nutzen zu können.
Ich verwende nur winzige Mengen HTML5 und CSS3 aufgrund der mangelnden Unterstützung / abgenommenen Standards, aber Artikel wie diese bereiten uns besser vor und geben uns Orte, auf die wir zurückgreifen können, wenn die Zeit reif ist.
Gut gemacht, Chris.
Ich kann mich nicht überwinden, es zu verwenden, bis FF es unterstützt, aber es ist ausgezeichnetes Artikelmaterial (warum die Besserwisserei?). Ich habe es für den Fall gespeichert, dass FF es unterstützt. Ich hoffe, sie tun es, es ist ein ausgezeichnetes Attribut, das ich als sehr nützlich empfinden würde.
Denken Sie es im Sinne von progressive enhancement. Sie können dieses Attribut verwenden, und an dem Tag, an dem FF es unterstützt, sieht es wie in anderen Browsern aus. Bis dahin sieht es anders aus, aber es schadet dem Inhalt nicht.
Das ist genau das, wonach ich in einem meiner aktuellen Projekte gesucht habe, aber wahrscheinlich werde ich es nicht verwenden, da FF es nicht unterstützt.
Es ist herzzerreißend, genau das zu finden, was man will, nur um dann festzustellen, dass man es nicht wirklich benutzen kann.
Sie könnten diesen Effekt erzielen, indem Sie display: inline sowohl für die Überschrift als auch für den folgenden Absatz festlegen. Es erfordert möglicherweise (abhängig von Ihrer Verwendung) das Hinzufügen einer zusätzlichen Klasse zum Tag, aber es funktioniert gut in allen getesteten Browsern.
Cooler Tipp. 53% meiner Blog-Leser verwenden FF, 13% Chrome und nur 6% Safari. Ich werde nichts verwenden, was der Hauptbrowser nicht unterstützt.
Selbst in meinem Arbeitsumfeld, wo FF im typischen Bereich liegt (vielleicht irgendwo im 40er-Prozentbereich, das ist zu hoch, um es zu ignorieren. Und selbst wenn jemand einen Weg gefunden hätte, es zum Funktionieren zu bringen, wie der oben genannte, ist das mehr Kram, mit dem man sich herumschlagen muss, nur um es in einem Browser zum Laufen zu bringen.
Ich schätze es, etwas zu sehen, von dem ich nicht einmal wusste, dass es existiert. Ich stimme FF darin zu, es nicht zu unterstützen. Wenn man es nicht herausfinden kann, muss es tatsächlich zu vage sein, um sich darum zu kümmern.
Ich kann durchaus Designfälle sehen, bei denen Überschriften mit „run-in“ versehen sind, aber das Design ist so, dass es in Firefox einfach blockweise wird und das Design dadurch nicht schlechter wird.
Im Allgemeinen sind Sie jedoch nicht in der Mehrheit. In vielen Bereichen ist es im Moment ein Kopf-an-Kopf-Rennen zwischen Chrome und IE, und es hängt alles von Ihrem Standort, Ihrer Zielgruppe, Ihrem lokalen Wohlstand und einer Menge anderer Faktoren ab.
Wahrscheinlich 40 % der Nutzer meiner Websites verwenden Chrome und die gleiche Anzahl IE. Aber für bestimmte Websites kann das sehr merkwürdig werden, mit vielen Nutzern, die ältere IE-Versionen verwenden. Es kommt darauf an.
Es lohnt sich sicherlich, über diese Dinge Bescheid zu wissen, besonders wenn man bedenkt, dass man für nicht unterstützte Browser eine fehlerverzeihende Degradation erreichen kann.
Chris, wie ich deine Artikel genieße, aber kannst du uns CSS-Nerds bitte einen Gefallen tun?
Lass mich nicht von dieser potenziell großartigen CSS-Eigenschaft und dem Versprechen, das sie birgt, schwärmen, lies einen langen Artikel darüber und sag mir dann, dass sie am Ende schlecht unterstützt wird? Das führt zu Enttäuschung in meinem Gehirn.
Wenn Sie über eine CSS-Eigenschaft schreiben, können Sie die Browserunterstützung viel früher erwähnen oder besser noch die Logos der Browser, die sie unterstützen, oben auf der Seite anzeigen.
Auf der positiven Seite genoss ich diesen informativen Artikel und wie die vollständige CSS3-Unterstützung kann ich es kaum erwarten, bis es eine universelle Realität ist. Ich bin jetzt 28 Jahre alt, also werde ich meinen dritten mittleren Lebenskrisen erleben, bevor alle CSS3-Eigenschaften von allen Browsern unterstützt werden – will mir jemand früh seinen Sportwagen verkaufen?
Es ist kein so langer Artikel und es gibt einen ganzen Abschnitt über Browserunterstützung. Leider ist es nicht so einfach wie unterstützt vs. nicht unterstützt.
Außerdem, um klarzustellen, es ist nicht speziell CSS3. Browser experimentieren schon seit über 10 Jahren damit.
Wie lustig sind die Doppelmoralen, die wir Designer/Entwickler (ich selbst eingeschlossen) haben?
Wir verwenden coole Tricks, Eigenschaften und CSS3, die IE nicht verarbeiten kann, und sind bereit zu schreien: „Ich benutze es, und wenn IE-Nutzer es nicht sehen können, nun ja, scheiß drauf, es ist Zeit, dass sie einen anständigen Browser benutzen!“ Aber jetzt, wo wir eine (1) Eigenschaft gefunden haben, die FF nicht unterstützt, aber ALLE anderen Browser (in gewissem Umfang) unterstützen, sagen wir: „Das werde ich nicht benutzen! FF-Nutzer werden es nicht sehen können!“!!
:)
Vor kurzem hatte die Real ID-Seite von Battle.net (http://us.battle.net/en/realid/) dies implementiert und sah im Kontext des Seitendesigns sehr schick aus (es sieht so aus, als wäre es inzwischen entfernt worden).
Es würde wahrscheinlich nicht in allen Designkontexten funktionieren, ist aber definitiv ein weiteres Werkzeug im Arsenal des Designers, besonders da es in Firefox zu einem normalen Block-Level-Element fehlerverzeihend abgebaut wird.
Chris, danke für die Erklärung und die Geschichte zu diesem Anzeigemodus und für die Demo, damit wir alle sehen können, wie es funktioniert.
Zum ersten Mal habe ich es in der Opera-Konfiguration (für kleine Auflösungen) gesehen, aber nie in meiner Arbeit verwendet.
Guter Fund und exzellente Recherche zum Standard. Sie sollten unbedingt weiterhin über solche Funde schreiben.
Dennoch bemerke ich auch dieses Muster, nicht nur auf Ihrer Website, sondern auf vielen Websites, die über CSS schreiben. Es beginnt mit einem aufregenden Feature und endet mit „Ach, egal... kann es nicht benutzen“.
Ich weiß, dass man mit der richtigen Denkweise solche Dinge browserübergreifend zum Laufen bringen kann, aber ich finde immer mehr, dass der Aufwand, die Hacks und die zusätzlichen Bibliotheken, die manchmal erforderlich sind, Zeitverschwendung sind, und ich verwende es dann einfach nicht, außer in Ausnahmefällen (wie abgerundeten Ecken und Schatten, die sehr fehlerverzeihend abgebaut werden).
Ich schätze, man könnte ein Span-Element innerhalb eines Absatz-Elements mit denselben Stilen wie die zu imitierende Überschrift verwenden.
Es scheint, dass FF/Gecko-Engine-Browser dieses Attribut nicht unterstützen, aber Browser/WebKit-Engine, die diese Attribute unterstützen, zeigen sie korrekt an. Ich glaube, das hilft, Float-Attribut/Design-Layouts zu eliminieren, bis *alle* Browsertechnologien aufholen. Es ist bedauerlich, dass CSS Browser-Engines überholt und nicht umgekehrt, oder die Welt wäre eine bessere.
Nun, das ist das erste Mal, dass ich auf dieses Attribut gestoßen bin. Vielen Dank fürs Teilen.
Ich kannte das Run-in-Attribut noch nicht. Ich könnte es trotz einiger Firefox-Probleme sicherlich für einige Verwendungszwecke nutzen!
Danke für die Info, Chris!
Gerade als ich dachte, ich wüsste alles über CSS 2.1, lese ich von diesem ziemlich großartigen Attribut. Wie alle Attribute wird es nicht bei jedem Projekt verwendet, aber es wird eine Zeit geben, in der es schön sein wird, es anstelle einer Klasse mit span zu verwenden.
Was Firefox angeht, der es nicht unterstützt, glaube ich, dass dies einer der Fälle wäre, in denen es in 99 % der Fälle fehlerverzeihend abgebaut wird für diese 15 % der Website-Besucher. Ich sehe immer noch IE6-Benutzer und ich verwende nicht einmal irgendeine Art von PNG-Fix für PNGs mit Transparenz mehr.
Meiner Meinung nach (die normalerweise weit daneben liegt), hat jeder, der etwas getan hat, das nicht von 100 % der Browser unterstützt wird, wahrscheinlich nie über den sprichwörtlichen Tellerrand hinausgeblickt.
ich meine
ich schätze, wir können h3 durch font ersetzen
Gibt es eine jQuery-Alternative, die browserübergreifend funktioniert?
Da die meisten Browser display: run-in nicht unterstützen, verwende ich zum Stylen von Run-in-Überschriften display: inline für Überschriften und den nächsten Geschwisterabsatz mit dem Adjacency-Selektor +, der gut unterstützt wird. Zum Beispiel:
#content h3, #content h3 + p{ display: inline; }
oder
#content h3{ display: inline-block;}
#content h3 + p{ display: inline;}
was auch (zumindest in FF und Safari) funktioniert und es Ihnen erlaubt, Ränder auf dem h3 anzuwenden.
Ich habe von + erfahren, als ich die Kompatibilitätstabellen von quirksmode.org durchgesehen habe. Wirklich nützlich.
Ups, hier ist der korrekte Link zu den Kompatibilitätstabellen von quirksmode.org. Copy-Paste-Fehler. Entschuldigen Sie das.
Beachten Sie, dass die Nützlichkeit dieser Technik durch die Anforderung eingeschränkt ist, dass vor dem h3 ein Element steht, das als Block angezeigt wird (zum Beispiel, dass jede Überschrift mindestens 2 Absätze darunter hat, da der erste Absatz als Inline angezeigt wird). Andernfalls geht die Überschrift nicht nur in den folgenden Absatz, sondern auch in den vorherigen über.
Und kratzen Sie weg, was ich über inline-block gesagt habe, es funktioniert nicht für mehrzeilige Überschriften.
Display: run-inwird in Chrome nicht mehr unterstützt.