Ich weiß, dass es in HTML eine Stunde (horizontale Regel) gibt, aber ich glaube nicht, dass es eine vr (vertikale Regel) gibt. Liege ich falsch und wenn nicht, warum gibt es keine vertikale Regel?
Dies ist eine tote Frage, aber mit der jetzt veröffentlichten CSS3-Spezifikation können Sie transform: rotate (90 Grad) verwenden, um eine vertikale, horizontale Regel zu erstellen.
Jules
3
Wenn Sie Flexbox als Zeilen verwenden (Anzeige: Flex; Flex-Richtung: Zeile;), werden hrElemente automatisch vertikal. Sie müssen nur die heightEigenschaft festlegen (z. B. Höhe: 80%;).
Rodrigo
Antworten:
156
Nein, es gibt keine vertikale Regel.
Es macht keinen logischen Sinn, einen zu haben. HTML wird nacheinander analysiert, dh Sie legen Ihren HTML-Code von oben nach unten, von links nach rechts so an, wie er von oben nach unten, von links nach rechts (im Allgemeinen) angezeigt werden soll.
Ein vr-Tag folgt diesem Paradigma nicht.
Dies ist jedoch mit CSS einfach zu bewerkstelligen. Ex:
Tabellen können Elemente vertikal trennen. Was Sie also sagen, ist nicht der wahre Grund, warum es kein vr-Tag gibt.
CiscoIPPhone
6
Aus diesem Grund wurden der HTML-Spezifikation keine Tabellen hinzugefügt. Tabellen dienen zur Anzeige tabellarischer Daten. Fast jedes HTML-Element kann verwendet werden, um Elemente vertikal zu trennen (alles, was Sie für die Anzeige festlegen: Block und Float: Links mit einer beliebigen Höhe)
Andy Baird
19
erf. Ich habe versucht zu sagen, dass wenn Dinge bereits vertikal getrennt werden können, wie würde das Hinzufügen eines VR nicht dem HTML-Paradigma folgen?
CiscoIPPhone
4
@CiscoIPPhone - Für die vertikale Trennung ist eine horizontale Regel erforderlich. Eine seitliche Trennung würde eine vertikale Regel erfordern. Ergo, Andy Baird hat recht, denke ich.
Joshua
3
Ich kann nicht zustimmen, dass es nicht dem Paradigma folgt. Wie Sie sagten, wird es nacheinander von oben nach unten und von links nach rechts analysiert. Sie können Inhalte, die von links nach rechts verlaufen, mit einer vertikalen Regel teilen. In früheren Tagen von HTML stimme ich zu, dass es keinen logischen Sinn ergeben hätte. Jetzt wird eine vertikale Regel in HTML häufig verwendet, obwohl es kein semantisch korrektes Tag dafür gibt. Nur meine zwei Cent.
Hendeca
37
Sie können eine vertikale Regel wie folgt erstellen: <hr style="width: 1px; height: 20px; display: inline-block;">
Wie von anderen betont, passt das Konzept einer vertikalen Regel nicht zu den ursprünglichen Ideen für die Struktur und Präsentation von HTML-Dokumenten. Heutzutage (insbesondere mit der Verbreitung von Web-Apps) gibt es jedoch eine kleine Anzahl von Szenarien, in denen dies tatsächlich nützlich wäre.
Stellen Sie sich beispielsweise ein horizontales Navigationsmenü vor, das oben auf dem Bildschirm angezeigt wird, ähnlich der Menüleiste in den meisten GUI-Anwendungen mit Fenstern. Sie haben mehrere Menüelemente der obersten Ebene, die von links nach rechts angeordnet sind und beim Klicken Dropdown-Menüs öffnen. Vor Jahren war es üblich, dies mit einer einzeiligen Tabelle zu erstellen, aber dies ist schlechtes HTML, und es ist allgemein anerkannt, dass der richtige Weg eine Liste mit stark angepasstem CSS wäre.
Angenommen, Sie möchten ähnliche Elemente gruppieren, aber zwischen den Gruppen ein vertikales Trennzeichen hinzufügen, um Folgendes zu erreichen:
[Item1a][Item1b]|[Item2a][Item2b]
Die Verwendung von <hr style="width: 1px; height: 100%; ..." />Werken kann jedoch als semantisch falsch angesehen werden, wenn Sie ändern, wofür dieses Element tatsächlich bestimmt ist. Darüber hinaus können Sie dies nicht in bestimmten Elementen verwenden, in denen die HTML-DTD nur Elemente auf Inline-Ebene zulässt (z. B. innerhalb eines <span>Elements).
Eine bessere Option wäre <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>, jedoch unterstützen nicht alle Browser die display: inline-block;CSS-Eigenschaft. Die einzige echte Option auf Inline-Ebene besteht darin, ein Bild wie das folgende zu verwenden:
Dies hat den zusätzlichen Vorteil, dass es mit Nur-Text-Browsern (wie Luchs) kompatibel ist, da das Pipe-Zeichen anstelle des Bildes angezeigt wird. (Es ärgert mich immer noch, dass M $ IE Alt-Text fälschlicherweise als Tooltip verwendet; dafür ist das title-Attribut gedacht!)
Das ist ein guter Punkt. Dies bedeutet jedoch, dass die Seite auf unkonventionelle Weise gerendert wird, da Sie mit allen anderen Elementen im Dom konkurrieren müssen. Haben Sie jemals bemerkt, dass es manchmal Renderunterschiede zwischen den Browsern gibt? ;) ~ Trotzdem sehr guter Punkt .
Jcolebrand
7
Ein <hr> in einem Display: flex bewirkt, dass es vertikal angezeigt wird.
HTML hat aufgrund des typografischen Charakters des Inhaltslayouts nur eine geringe bis keine vertikale Positionierung. Die vertikale Regel passt einfach nicht zu ihrer Semantik.
Alte Frage, aber ich habe das gelöst display:flex;und es funktioniert großartig:
<divstyle="display:flex;border:1px dotted black;margin-bottom:20px;"><div>
This is a div
</div><divstyle="border-left:1px solid black;margin:07.5px;"></div><div>
This is another div
</div></div>
Ich weiß, dass ich meine Antwort sehr spät hinzufüge, aber es wäre es wert, da bin ich mir sicher. Sie können eine vertikale Linie mit erreichenflex und erreichenhr
Im Zusammenhang mit einem Listenelement, das als Navigation verwendet wird, wäre ein <vr /> -Tag sehr nützlich. Der Grund, warum es nicht existiert, ist, dass "Es ist nicht logisch, einen zu haben" im Kontext von HTML vor einem Jahrzehnt.
Für die Verwendung in HTML-E-Mails für die meisten Desktop-Clients müssen Sie Tabellen verwenden. In diesem Fall können Sie ein <hr>Tag mit dem erforderlichen (aber einfachen) Inline-Stil verwenden, z.
<hrwidth="1"size="50">
Natürlich ist das Styling mit CSS flexibler, aber GMail und ähnliches erlauben keine andere Verwendung von CSS-Styling als Inline ...
* Möglicherweise müssen Sie ein wenig herumspielen, display:inline-block|inlineda inlinees nicht auf die Höhe des Elements erweitert wird. Verwenden Sie den Rand, um die Linie innerhalb eines Containers zu zentrieren.
Sie können ein benutzerdefiniertes Tag als solches erstellen:
<html><head><style>
vr {display: inline-block;// This is where you'd set the ruler color
background-color: black;// This is where you'd set the ruler width
width:2px;//this is where you'd set the spacing between the ruler and surrounding text
margin:0px5px0px5px;height:100%;vertical-align: top;}</style></head><body>
this is text <vr></vr> more text
</body></html>
(Wenn jemand weiß, wie ich daraus ein "offenes" Tag machen kann, <hr>lass es mich wissen und ich werde es bearbeiten.)
Ich finde es einfach, ein Bild einer Linie zu erstellen und es dann als "Regel" in den Code einzufügen und die Breite und / oder Höhe nach Bedarf einzustellen. Dies waren alles Bilder mit horizontalen Regeln, aber nichts hindert mich (oder Sie) daran, ein Bild mit "vertikalen Regeln" zu verwenden.
Das ist aus vielen Gründen cool; Sie können verschiedene Linien, Farben oder Muster leicht als "Regeln" verwenden, und da sie keinen Text enthalten würden, sollte dies keine Auswirkungen auf SEO oder andere Dinge haben, selbst wenn Sie es "normal" mit hr in HTML gemacht hätten Das. Und die Bilddatei wäre / sollte sehr klein sein (höchstens 1 oder 2 KB).
Sie sollten Beispielcode hinzufügen, um die von Ihnen vorgeschlagene Technik zu demonstrieren.
Adam Katz
0
Zu viele zu komplizierte Antworten. Erstellen Sie einfach ein TableData-Tag, das sich über die Anzahl der Zeilen erstreckt, die mit Rowspan verwendet werden sollen. Verwenden Sie dann den rechten Rand für den eigentlichen Balken.
Stellen Sie sicher, dass das "& nbsp" in der zweiten Zeile dieselbe Anzahl von Zeilen enthält wie die erste. so dass zwischen beiden der richtige Abstand besteht.
Diese Technik hat mir mit meiner Zeit in HTML5 ziemlich gute Dienste geleistet.
Weil die Leute nicht denken, dass Tabellen dafür verwendet werden sollten (ich habe nicht abgelehnt).
Erikkallen
-2
Nein, da ist kein. Und ich werde Ihnen eine kleine Geschichte darüber erzählen, warum es nicht so ist. Aber zuerst
schnelle Lösungen:
a) Verwenden Sie CSS - Klasse für Grundelemente span/ div, zum Beispiel: <span class="vr"></span>:
.vr{
display:inline-block;
vertical-align: middle;/* note that height must be precise, 100% does not work in some major browsers */
height:100px;
width:1px;
background-color:#000;}
b) Verwenden Sie einen einseitigen Rand und möglicherweise einen CSS- :first-childSelektor, wenn Sie allgemeine Trennlinien zwischen Geschwister- / Nachbarelementen anwenden möchten.
Die Geschichte über <vr>FITTING im ursprünglichen Paradigma, aber immer noch nicht da:
Viele Antworten hier legen nahe, dass der vertikale Teiler nicht zum ursprünglichen HTML-Paradigma / -Ansatz passt ... das ist völlig falsch.Auch die Antworten widersprechen sich sehr.
Dieselben Leute nennen ihre klare CSS-Klasse wahrscheinlich "clearfix" - es gibt nichts zu korrigieren, wenn Sie schweben, Sie löschen es nur ... Es gab sogar ein Element in HTML3 : <clear>. Leider ist dies und die Freigabe des Schwimmens eines der wenigen verbreiteten Missverständnisse.
Wie auch immer. „Damals“ in dem „ursprünglichen HTML - Zeitalter“, gab es keine Gedanken über so etwas wie inline-block, gibt es nur blocks, inlinesund tables.
Der letzte ist eigentlich der Grund, warum es <vr>ihn nicht gibt.
Damals wurde angenommen, dass: Wenn Sie etwas vertikal teilen und / oder mehr Blöcke von links nach rechts machen möchten =>
=> Sie machen / wollen Spalten =>
=>, was bedeutet, dass Sie eine Tabelle erstellen =>
= > Tabellen haben natürliche Grenzen zwischen ihren Zellen => kein Grund, a<vr>
Dieser Ansatz ist tatsächlich noch gültig, aber wie die Zeit gezeigt hat, ist die für Tabellen erstellte Syntax nicht für jeden Fall geeignet, ebenso wie für die Standardstile.
Eine andere, wahrscheinlich spätere Annahme war, dass Sie wahrscheinlich schwebende Blockelemente sind , wenn Sie keine Tabelle erstellen . Das heißt, sie halten zusammen , und Sie können wieder einen Rand setzen , und in diesen Tagen verwenden Sie wahrscheinlich sogar den :first-childoben vorgeschlagenen Selektor ...
hr
Elemente automatisch vertikal. Sie müssen nur dieheight
Eigenschaft festlegen (z. B. Höhe: 80%;).Antworten:
Nein, es gibt keine vertikale Regel.
Es macht keinen logischen Sinn, einen zu haben. HTML wird nacheinander analysiert, dh Sie legen Ihren HTML-Code von oben nach unten, von links nach rechts so an, wie er von oben nach unten, von links nach rechts (im Allgemeinen) angezeigt werden soll.
Ein vr-Tag folgt diesem Paradigma nicht.
Dies ist jedoch mit CSS einfach zu bewerkstelligen. Ex:
Beachten Sie, dass Sie eine Höhe angeben oder den Container mit Inhalt füllen müssen.
quelle
Sie können eine vertikale Regel wie folgt erstellen:
<hr style="width: 1px; height: 20px; display: inline-block;">
quelle
Wie von anderen betont, passt das Konzept einer vertikalen Regel nicht zu den ursprünglichen Ideen für die Struktur und Präsentation von HTML-Dokumenten. Heutzutage (insbesondere mit der Verbreitung von Web-Apps) gibt es jedoch eine kleine Anzahl von Szenarien, in denen dies tatsächlich nützlich wäre.
Stellen Sie sich beispielsweise ein horizontales Navigationsmenü vor, das oben auf dem Bildschirm angezeigt wird, ähnlich der Menüleiste in den meisten GUI-Anwendungen mit Fenstern. Sie haben mehrere Menüelemente der obersten Ebene, die von links nach rechts angeordnet sind und beim Klicken Dropdown-Menüs öffnen. Vor Jahren war es üblich, dies mit einer einzeiligen Tabelle zu erstellen, aber dies ist schlechtes HTML, und es ist allgemein anerkannt, dass der richtige Weg eine Liste mit stark angepasstem CSS wäre.
Angenommen, Sie möchten ähnliche Elemente gruppieren, aber zwischen den Gruppen ein vertikales Trennzeichen hinzufügen, um Folgendes zu erreichen:
Die Verwendung von
<hr style="width: 1px; height: 100%; ..." />
Werken kann jedoch als semantisch falsch angesehen werden, wenn Sie ändern, wofür dieses Element tatsächlich bestimmt ist. Darüber hinaus können Sie dies nicht in bestimmten Elementen verwenden, in denen die HTML-DTD nur Elemente auf Inline-Ebene zulässt (z. B. innerhalb eines<span>
Elements).Eine bessere Option wäre
<span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>
, jedoch unterstützen nicht alle Browser diedisplay: inline-block;
CSS-Eigenschaft. Die einzige echte Option auf Inline-Ebene besteht darin, ein Bild wie das folgende zu verwenden:<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />
Dies hat den zusätzlichen Vorteil, dass es mit Nur-Text-Browsern (wie Luchs) kompatibel ist, da das Pipe-Zeichen anstelle des Bildes angezeigt wird. (Es ärgert mich immer noch, dass M $ IE Alt-Text fälschlicherweise als Tooltip verwendet; dafür ist das title-Attribut gedacht!)
quelle
Versuch es.
quelle
Wie wäre es mit:
Wo oben-> unten, rechts-> links?
Dafür brauchen wir vertikale Regeln.
quelle
Ein <hr> in einem Display: flex bewirkt, dass es vertikal angezeigt wird.
JSFiddle: https://jsfiddle.net/w6y5t1kL/
Beispiel:
quelle
Es gibt keine, wohin würde es gehen?
Verwenden Sie CSS, um ein Element mit einem Rahmen rechts zu versehen, wenn Sie so etwas möchten.
quelle
HTML hat aufgrund des typografischen Charakters des Inhaltslayouts nur eine geringe bis keine vertikale Positionierung. Die vertikale Regel passt einfach nicht zu ihrer Semantik.
quelle
Probieren Sie es aus und Sie werden es selbst wissen:
quelle
Sie können auf zwei Arten tun:
quelle
Alte Frage, aber ich habe das gelöst
display:flex;
und es funktioniert großartig:https://jsfiddle.net/6qfd59vm/3/
Diese Lösung erfordert auch keine feste Höhe.
quelle
Versuche dies.
Sie können Höhe und Breite auf " div " einstellen , wie der Bereich für " hr ".
Der Rand von " h " wird zur Ausrichtung verwendet.
quelle
Ich weiß, dass ich meine Antwort sehr spät hinzufüge, aber es wäre es wert, da bin ich mir sicher. Sie können eine vertikale Linie mit erreichen
flex
und erreichenhr
Siehe meinen Codepen hier .
quelle
Im Zusammenhang mit einem Listenelement, das als Navigation verwendet wird, wäre ein <vr /> -Tag sehr nützlich. Der Grund, warum es nicht existiert, ist, dass "Es ist nicht logisch, einen zu haben" im Kontext von HTML vor einem Jahrzehnt.
quelle
Für die Verwendung in HTML-E-Mails für die meisten Desktop-Clients müssen Sie Tabellen verwenden. In diesem Fall können Sie ein
<hr>
Tag mit dem erforderlichen (aber einfachen) Inline-Stil verwenden, z.Natürlich ist das Styling mit CSS flexibler, aber GMail und ähnliches erlauben keine andere Verwendung von CSS-Styling als Inline ...
quelle
Sie können CSS verwenden, um eine vertikale Linie zu simulieren, und die Klasse für das Div verwenden
quelle
Sie können dies sehr einfach tun, indem Sie
quelle
Benutzerdefinierte HTML5- Elemente (oder reines CSS)
1. Javascript
Registrieren Sie Ihr Element.
* Das
-
ist in allen benutzerdefinierten Elementen obligatorisch.2. CSS
* Möglicherweise müssen Sie ein wenig herumspielen,
display:inline-block|inline
dainline
es nicht auf die Höhe des Elements erweitert wird. Verwenden Sie den Rand, um die Linie innerhalb eines Containers zu zentrieren.3. instanziieren
* Leider können Sie keine benutzerdefinierten selbstschließenden Tags erstellen.
Verwendung
Beispiel: http://html5.qry.me/vertical-rule
Sie möchten sich nicht mit Javascript anlegen?
Wenden Sie diese CSS-Klasse einfach auf Ihr bestimmtes Element an.
CSS
* Siehe Anmerkungen oben.
Link zur ursprünglichen Antwort auf SO .
quelle
Sie können ein benutzerdefiniertes Tag als solches erstellen:
(Wenn jemand weiß, wie ich daraus ein "offenes" Tag machen kann,
<hr>
lass es mich wissen und ich werde es bearbeiten.)quelle
<vr />
Es gibt kein Tag in HTML, aber Sie können | verwenden.
quelle
Sie können das neue HTML5-SVG-Tag verwenden:
quelle
Ich finde es einfach, ein Bild einer Linie zu erstellen und es dann als "Regel" in den Code einzufügen und die Breite und / oder Höhe nach Bedarf einzustellen. Dies waren alles Bilder mit horizontalen Regeln, aber nichts hindert mich (oder Sie) daran, ein Bild mit "vertikalen Regeln" zu verwenden.
Das ist aus vielen Gründen cool; Sie können verschiedene Linien, Farben oder Muster leicht als "Regeln" verwenden, und da sie keinen Text enthalten würden, sollte dies keine Auswirkungen auf SEO oder andere Dinge haben, selbst wenn Sie es "normal" mit hr in HTML gemacht hätten Das. Und die Bilddatei wäre / sollte sehr klein sein (höchstens 1 oder 2 KB).
quelle
Zu viele zu komplizierte Antworten. Erstellen Sie einfach ein TableData-Tag, das sich über die Anzahl der Zeilen erstreckt, die mit Rowspan verwendet werden sollen. Verwenden Sie dann den rechten Rand für den eigentlichen Balken.
Beispiel:
Stellen Sie sicher, dass das "& nbsp" in der zweiten Zeile dieselbe Anzahl von Zeilen enthält wie die erste. so dass zwischen beiden der richtige Abstand besteht.
Diese Technik hat mir mit meiner Zeit in HTML5 ziemlich gute Dienste geleistet.
quelle
Heute ist möglich mit
CSS3
quelle
Für Leute, die versuchen, Spalten für Text zu erstellen, gibt es eine Spaltenregeleigenschaft, die Sie in Betracht ziehen sollten!
quelle
Mit einem Div wie diesem ist das ganz einfach möglich
quelle
Da ist nicht.
Warum? Wahrscheinlich, weil eine Tabelle mit zwei Spalten ausreicht.
quelle
Nein, da ist kein. Und ich werde Ihnen eine kleine Geschichte darüber erzählen, warum es nicht so ist. Aber zuerst schnelle Lösungen:
a) Verwenden Sie CSS - Klasse für Grundelemente
span
/div
, zum Beispiel:<span class="vr"></span>
:Verwendungsnachweis => https://jsfiddle.net/fe3tasa0/
b) Verwenden Sie einen einseitigen Rand und möglicherweise einen CSS-
:first-child
Selektor, wenn Sie allgemeine Trennlinien zwischen Geschwister- / Nachbarelementen anwenden möchten.Die Geschichte über
<vr>
FITTING im ursprünglichen Paradigma,aber immer noch nicht da:
Viele Antworten hier legen nahe, dass der vertikale Teiler nicht zum ursprünglichen HTML-Paradigma / -Ansatz passt ... das ist völlig falsch. Auch die Antworten widersprechen sich sehr.
Dieselben Leute nennen ihre klare CSS-Klasse wahrscheinlich "clearfix" - es gibt nichts zu korrigieren, wenn Sie schweben, Sie löschen es nur ... Es gab sogar ein Element in HTML3 :
<clear>
. Leider ist dies und die Freigabe des Schwimmens eines der wenigen verbreiteten Missverständnisse.Wie auch immer. „Damals“ in dem „ursprünglichen HTML - Zeitalter“, gab es keine Gedanken über so etwas wie
inline-block
, gibt es nurblocks
,inlines
undtables
.Der letzte ist eigentlich der Grund, warum es
<vr>
ihn nicht gibt.Damals wurde angenommen, dass:
Wenn Sie etwas vertikal teilen und / oder mehr Blöcke von links nach rechts
machen möchten => => Sie machen / wollen Spalten =>
=>, was bedeutet, dass Sie eine Tabelle erstellen =>
= > Tabellen haben natürliche Grenzen zwischen ihren Zellen => kein Grund, a
<vr>
Dieser Ansatz ist tatsächlich noch gültig, aber wie die Zeit gezeigt hat, ist die für Tabellen erstellte Syntax nicht für jeden Fall geeignet, ebenso wie für die Standardstile.
Eine andere, wahrscheinlich spätere Annahme war, dass Sie wahrscheinlich schwebende Blockelemente sind , wenn Sie keine Tabelle erstellen . Das heißt, sie halten zusammen , und Sie können wieder einen Rand setzen , und in diesen Tagen verwenden Sie wahrscheinlich sogar den
:first-child
oben vorgeschlagenen Selektor ...quelle