Esta es una pregunta muerta, pero con la especificación CSS3 ahora disponible, podría usar transform: rotate (90deg) para hacer una regla vertical y horizontal.
Jules
3
Si usa flexbox como filas (display: flex; flex-direction: row;), los hrelementos se volverán verticales automáticamente. Solo necesita establecer su heightpropiedad (por ejemplo, altura: 80%;).
Rodrigo
Respuestas:
156
No, no hay una regla vertical.
No tiene sentido lógico tener uno. El HTML se analiza secuencialmente, lo que significa que diseñas tu código HTML de arriba a abajo, de izquierda a derecha como quieres que aparezca de arriba a abajo, de izquierda a derecha (en general)
Una etiqueta vr no sigue ese paradigma.
Sin embargo, esto es fácil de hacer usando CSS. Ex:
Las tablas pueden separar elementos verticalmente, por lo que lo que está diciendo no es la verdadera razón por la que no hay una etiqueta vr.
CiscoIPPhone el
66
Por eso no se agregaron tablas a la especificación HTML. Las tablas son para mostrar datos tabulados. Casi cualquier elemento HTML se puede usar para separar elementos verticalmente (cualquier cosa que establezca para mostrar: bloquear y flotar: izquierda con cualquier altura establecida)
Andy Baird
19
erf. Estaba tratando de decir que si las cosas ya se pueden separar verticalmente, ¿cómo agregar un vr no seguiría el paradigma de HTML?
CiscoIPPhone
44
@CiscoIPPhone: la separación vertical requeriría una regla horizontal. La separación lateral requeriría una regla vertical. Ergo, Andy Baird tiene razón, creo.
Joshua
3
No puedo aceptar que no siga el paradigma. Como dijiste, se analiza secuencialmente, de arriba abajo, de izquierda a derecha. Puede dividir el contenido que va de izquierda a derecha con una regla vertical. En días anteriores de HTML, estoy de acuerdo en que no habría tenido sentido lógico. Ahora, una regla vertical es algo que se usa con frecuencia en html, a pesar de que no hay una etiqueta semánticamente correcta para ello. Solo mis dos centavos.
Hendeca
37
Puedes hacer una regla vertical como esta: <hr style="width: 1px; height: 20px; display: inline-block;">
Como señalaron otros, el concepto de una regla vertical no encaja con las ideas originales detrás de la estructura y la presentación de los documentos HTML. Sin embargo, en estos días (especialmente con la proliferación de aplicaciones web) hay una pequeña cantidad de escenarios en los que esto sería realmente útil.
Por ejemplo, considere un menú de navegación horizontal fijo en la parte superior de la pantalla, similar a la barra de menú en la mayoría de las aplicaciones GUI con ventana. Tiene varios elementos de menú de nivel superior dispuestos de izquierda a derecha, que al hacer clic en abrir menús desplegables. Hace años, era una práctica común crear esto con una tabla de una sola fila, pero este es un HTML incorrecto y es ampliamente reconocido que la forma correcta de hacerlo sería una lista con CSS muy personalizado.
Ahora, digamos que desea agrupar elementos similares, pero agregue un separador vertical entre grupos, para lograr algo como esto:
[Item1a][Item1b]|[Item2a][Item2b]
Usando <hr style="width: 1px; height: 100%; ..." />trabajos, pero puede considerarse semánticamente incorrecto ya que está cambiando para qué sirve realmente ese elemento. Además, no puede usar esto dentro de ciertos elementos donde el DTD HTML solo permite elementos de nivel en línea (por ejemplo, dentro de un <span>elemento).
Una mejor opción sería <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>, sin embargo, no todos los navegadores admiten la display: inline-block;propiedad CSS, por lo que la única opción real de nivel en línea es usar una imagen como esta:
Esto tiene la ventaja adicional de ser compatible con navegadores de solo texto (como lynx) ya que el carácter de la barra se muestra en lugar de la imagen. (Todavía me molesta que M $ IE use incorrectamente el texto alternativo como información sobre herramientas; ¡para eso está el atributo de título!)
Ese es un buen punto. Sin embargo, significa representar la página de una manera poco convencional porque tienes que competir con todos los demás elementos en el dom. ¿Alguna vez has notado que a veces hay diferencias de representación entre los navegadores? ;) ~ Sin embargo, muy buen punto .
jcolebrand
7
Un <hr> dentro de una pantalla: flex hará que se muestre verticalmente.
HTML tiene poco o ningún posicionamiento vertical debido a la naturaleza tipográfica del diseño del contenido. La regla vertical simplemente no se ajusta a su semántica.
Pregunta antigua pero resolví esto display:flex;y funciona muy bien:
<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>
En el contexto de un elemento de la lista que se utiliza como navegación, una etiqueta <vr /> sería perfectamente útil. La razón por la que no existe es porque "no tiene sentido lógico tener uno" en el contexto de HTML hace una década.
Para usar en el correo electrónico HTML para la mayoría de los clientes de escritorio, debe usar tablas. En este caso, puede usar la <hr>etiqueta, con el estilo en línea necesario (pero simple), como:
<hrwidth="1"size="50">
Por supuesto que el estilo con CSS es más flexible, pero GMail y similares no permiten el uso de ningún estilo CSS que no sea en línea ...
* Es posible que deba jugar un poco display:inline-block|inlineporque inlineno se expandirá a la altura del elemento contenedor. Use el margen para centrar la línea dentro de un contenedor.
<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>
(Si alguien sabe cómo podría convertir esto en una etiqueta "abierta", por <hr>favor , hágamelo saber y lo editaré)
Me resulta fácil hacer una imagen de una línea y luego insertarla en el código como una "regla", estableciendo el ancho y / o la altura según sea necesario. Todas estas han sido imágenes de reglas horizontales, pero no hay nada que me impida (o a usted) usar una imagen de "regla vertical".
Esto es genial por muchas razones; puede usar diferentes líneas, colores o patrones fácilmente como "reglas", y dado que no tendrían texto, incluso si lo hubiera hecho de la manera "normal" usando hr en HTML, no debería afectar el SEO u otras cosas como ese. Y el archivo de imagen debería / debería ser muy pequeño (1 o 2 KB como máximo).
Debe incluir un código de muestra para demostrar la técnica que sugiere.
Adam Katz
0
Demasiadas respuestas demasiado complicadas. Simplemente haga una etiqueta TableData que abarque la cantidad de filas que desea que use utilizando la lista de filas. Luego use el borde derecho para la barra real.
Debido a que la gente no piensa que las tablas deberían usarse para esto (no voté en contra).
erikkallen
-2
No no hay. Y te contaré una pequeña historia sobre por qué no es así. Pero primero,
soluciones rápidas:
a) Use la clase CSS para elementos básicos span/ div, por ejemplo <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) Utilice un borde de un solo lado y posiblemente un :first-childselector CSS si desea aplicar un separador general entre los elementos hermanos / vecinos.
La historia sobre <vr>FITTING en el paradigma original, pero aún no está allí:
Muchas respuestas aquí sugieren que el divisor vertical no se ajusta al paradigma / enfoque HTML original ... eso es completamente incorrecto. También las respuestas se contradicen mucho.
Esas mismas personas probablemente están llamando a su clara clase "clearfix" CSS - no hay nada que arreglar acerca flotante, se le acaba de borrarlo ... Hubo incluso un elemento en HTML3: <clear>. Lamentablemente, esto y la eliminación de la flotación es uno de los pocos conceptos erróneos comunes.
De todas formas. "En aquel entonces" en las "edades HTML originales", no se pensaba en algo como inline-block, simplemente blocks, inlinesy tables.
El último es en realidad la razón por la cual <vr> cual no existe.
En aquel entonces se suponía que: si desea dividir verticalmente algo y / o hacer más bloques de izquierda a derecha =>
=> está haciendo / quiere hacer columnas =>
=> eso implica que está creando una tabla =>
= > las tablas tienen bordes naturales entre sus celdas => no hay razón para hacer un<vr>
Este enfoque todavía es válido, pero como lo demostró el tiempo, la sintaxis hecha para tablas no es adecuada para todos los casos, así como sus estilos predeterminados.
Otra suposición, probablemente más tarde, fue que si no está creando una tabla, probablemente esté flotando elementos de bloque . Eso significa que se están pegando unidos , y de nuevo, puede establecer un borde , y esos días probablemente incluso utilicen el :first-childselector que sugerí anteriormente ...
hr
elementos se volverán verticales automáticamente. Solo necesita establecer suheight
propiedad (por ejemplo, altura: 80%;).Respuestas:
No, no hay una regla vertical.
No tiene sentido lógico tener uno. El HTML se analiza secuencialmente, lo que significa que diseñas tu código HTML de arriba a abajo, de izquierda a derecha como quieres que aparezca de arriba a abajo, de izquierda a derecha (en general)
Una etiqueta vr no sigue ese paradigma.
Sin embargo, esto es fácil de hacer usando CSS. Ex:
Tenga en cuenta que debe especificar una altura o llenar el contenedor con contenido.
fuente
Puedes hacer una regla vertical como esta:
<hr style="width: 1px; height: 20px; display: inline-block;">
fuente
Como señalaron otros, el concepto de una regla vertical no encaja con las ideas originales detrás de la estructura y la presentación de los documentos HTML. Sin embargo, en estos días (especialmente con la proliferación de aplicaciones web) hay una pequeña cantidad de escenarios en los que esto sería realmente útil.
Por ejemplo, considere un menú de navegación horizontal fijo en la parte superior de la pantalla, similar a la barra de menú en la mayoría de las aplicaciones GUI con ventana. Tiene varios elementos de menú de nivel superior dispuestos de izquierda a derecha, que al hacer clic en abrir menús desplegables. Hace años, era una práctica común crear esto con una tabla de una sola fila, pero este es un HTML incorrecto y es ampliamente reconocido que la forma correcta de hacerlo sería una lista con CSS muy personalizado.
Ahora, digamos que desea agrupar elementos similares, pero agregue un separador vertical entre grupos, para lograr algo como esto:
Usando
<hr style="width: 1px; height: 100%; ..." />
trabajos, pero puede considerarse semánticamente incorrecto ya que está cambiando para qué sirve realmente ese elemento. Además, no puede usar esto dentro de ciertos elementos donde el DTD HTML solo permite elementos de nivel en línea (por ejemplo, dentro de un<span>
elemento).Una mejor opción sería
<span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>
, sin embargo, no todos los navegadores admiten ladisplay: inline-block;
propiedad CSS, por lo que la única opción real de nivel en línea es usar una imagen como esta:<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />
Esto tiene la ventaja adicional de ser compatible con navegadores de solo texto (como lynx) ya que el carácter de la barra se muestra en lugar de la imagen. (Todavía me molesta que M $ IE use incorrectamente el texto alternativo como información sobre herramientas; ¡para eso está el atributo de título!)
fuente
Pruébalo.
fuente
Qué tal si:
Donde arriba-> abajo, derecha-> izquierda?
Necesitaremos una regla vertical para esto.
fuente
Un <hr> dentro de una pantalla: flex hará que se muestre verticalmente.
JSFiddle: https://jsfiddle.net/w6y5t1kL/
Ejemplo:
fuente
No hay, ¿a dónde iría?
Use CSS para colocar un borde derecho en un elemento si desea algo así.
fuente
HTML tiene poco o ningún posicionamiento vertical debido a la naturaleza tipográfica del diseño del contenido. La regla vertical simplemente no se ajusta a su semántica.
fuente
Pruébalo y te conocerás a ti mismo:
fuente
puedes hacer de 2 maneras:
fuente
Pregunta antigua pero resolví esto
display:flex;
y funciona muy bien:https://jsfiddle.net/6qfd59vm/3/
Esta solución tampoco requiere altura fija.
fuente
Prueba esto.
Puede establecer la altura y el ancho en " div ", como el alcance de " hr ".
El margen de " hr " se utiliza para la alineación.
fuente
Sé que estoy agregando mi respuesta muy tarde, pero valdría la pena, estoy seguro. Puede lograr la línea vertical usando
flex
yhr
Ver mi codepen aquí .
fuente
En el contexto de un elemento de la lista que se utiliza como navegación, una etiqueta <vr /> sería perfectamente útil. La razón por la que no existe es porque "no tiene sentido lógico tener uno" en el contexto de HTML hace una década.
fuente
Para usar en el correo electrónico HTML para la mayoría de los clientes de escritorio, debe usar tablas. En este caso, puede usar la
<hr>
etiqueta, con el estilo en línea necesario (pero simple), como:Por supuesto que el estilo con CSS es más flexible, pero GMail y similares no permiten el uso de ningún estilo CSS que no sea en línea ...
fuente
Puede usar css para simular una línea vertical y usar la clase en el div
fuente
Puedes hacer esto muy fácilmente
fuente
Elementos personalizados HTML5 (o CSS puro)
1. javascript
Registra tu elemento.
* El
-
es obligatorio en todos los elementos personalizados.2. css
* Es posible que deba jugar un poco
display:inline-block|inline
porqueinline
no se expandirá a la altura del elemento contenedor. Use el margen para centrar la línea dentro de un contenedor.3. instanciar
* Lamentablemente, no puede crear etiquetas personalizadas de cierre automático.
uso
ejemplo: http://html5.qry.me/vertical-rule
¿No quieres meterte con JavaScript?
Simplemente aplique esta clase CSS a su elemento designado.
css
* Ver notas arriba.
enlace a la respuesta original en SO .
fuente
Puede crear una etiqueta personalizada como tal:
(Si alguien sabe cómo podría convertir esto en una etiqueta "abierta", por
<hr>
favor , hágamelo saber y lo editaré)fuente
<vr />
No hay etiqueta en HTML, pero puede usar |.
fuente
Puede usar la nueva etiqueta HTML5 SVG:
fuente
Me resulta fácil hacer una imagen de una línea y luego insertarla en el código como una "regla", estableciendo el ancho y / o la altura según sea necesario. Todas estas han sido imágenes de reglas horizontales, pero no hay nada que me impida (o a usted) usar una imagen de "regla vertical".
Esto es genial por muchas razones; puede usar diferentes líneas, colores o patrones fácilmente como "reglas", y dado que no tendrían texto, incluso si lo hubiera hecho de la manera "normal" usando hr en HTML, no debería afectar el SEO u otras cosas como ese. Y el archivo de imagen debería / debería ser muy pequeño (1 o 2 KB como máximo).
fuente
Demasiadas respuestas demasiado complicadas. Simplemente haga una etiqueta TableData que abarque la cantidad de filas que desea que use utilizando la lista de filas. Luego use el borde derecho para la barra real.
Ejemplo:
Asegúrese de que "& nbsp" en la segunda línea ejecuta la misma cantidad de líneas que la primera. para que haya un espacio adecuado entre ambos.
Esta técnica me ha servido bastante bien con mi tiempo en HTML5.
fuente
Hoy es posible con
CSS3
fuente
Para las personas que intentan hacer columnas para texto, ¡hay una propiedad de regla de columna que debes considerar usar!
fuente
Se puede hacer fácilmente usando un div como este
fuente
No hay.
¿Por qué? Probablemente porque una tabla con dos columnas servirá.
fuente
No no hay. Y te contaré una pequeña historia sobre por qué no es así. Pero primero, soluciones rápidas:
a) Use la clase CSS para elementos básicos
span
/div
, por ejemplo<span class="vr"></span>
::Demostración de uso => https://jsfiddle.net/fe3tasa0/
b) Utilice un borde de un solo lado y posiblemente un
:first-child
selector CSS si desea aplicar un separador general entre los elementos hermanos / vecinos.La historia sobre
<vr>
FITTING en el paradigma original,pero aún no está allí:
Muchas respuestas aquí sugieren que el divisor vertical no se ajusta al paradigma / enfoque HTML original ... eso es completamente incorrecto. También las respuestas se contradicen mucho.
Esas mismas personas probablemente están llamando a su clara clase "clearfix" CSS - no hay nada que arreglar acerca flotante, se le acaba de borrarlo ... Hubo incluso un elemento en HTML3:
<clear>
. Lamentablemente, esto y la eliminación de la flotación es uno de los pocos conceptos erróneos comunes.De todas formas. "En aquel entonces" en las "edades HTML originales", no se pensaba en algo como
inline-block
, simplementeblocks
,inlines
ytables
.El último es en realidad la razón por la cual
<vr>
cual no existe.En aquel entonces se suponía que:
si desea dividir verticalmente algo y / o hacer más bloques de izquierda a derecha =>
=> está haciendo / quiere hacer columnas =>
=> eso implica que está creando una tabla =>
= > las tablas tienen bordes naturales entre sus celdas => no hay razón para hacer un
<vr>
Este enfoque todavía es válido, pero como lo demostró el tiempo, la sintaxis hecha para tablas no es adecuada para todos los casos, así como sus estilos predeterminados.
Otra suposición, probablemente más tarde, fue que si no está creando una tabla, probablemente esté flotando elementos de bloque . Eso significa que se están pegando unidos , y de nuevo, puede establecer un borde , y esos días probablemente incluso utilicen el
:first-child
selector que sugerí anteriormente ...fuente