La Propiedad BORDER-BLOCK

Es una propiedad abreviada que se utiliza para establecer el ancho, el estilo y el color de los bordes en las direcciones de inicio y fin del bloque de un elemento.
La propiedad border-block
en CSS es una propiedad abreviada que se utiliza para establecer el ancho, el estilo y el color de los bordes en las direcciones de inicio y fin del bloque de un elemento. Esta propiedad es parte de las Propiedades Lógicas de CSS, diseñadas para facilitar la creación de diseños que se adaptan bien a diferentes modos de escritura (horizontal, vertical) y direcciones del texto (de izquierda a derecha, de derecha a izquierda).
En la mayoría de los idiomas (como el español), la dirección del bloque es vertical. Por lo tanto, border-block
típicamente afectará los bordes superior e inferior del elemento. Sin embargo, en modos de escritura verticales, afectará los bordes izquierdo y derecho.
Sintaxis Básica
La sintaxis básica para usar la propiedad border-block
es la siguiente:
selector {
border-block: <ancho> <estilo> <color>;
}
Donde:
<ancho>
: Especifica el grosor del borde. Puede ser una palabra clave (thin
,medium
,thick
) o un valor en unidades de medida (píxelespx
, emsem
, etc.).<estilo>
: Define la apariencia del borde. Hay varios estilos disponibles (comosolid
,dashed
,dotted
, etc.).<color>
: Establece el color del borde. Puede ser un nombre de color (red
,blue
), un valor hexadecimal (#FF0000
), un valor RGB (rgb(255, 0, 0)
), etc.
Al igual que con la propiedad border
, el orden de los valores no importa.
Propiedades Individuales de border-block
La propiedad border-block
es una abreviatura de las siguientes propiedades lógicas individuales:
border-block-start
: Establece las propiedades del borde al inicio del bloque (en un modo horizontal, esto es el borde superior).border-block-end
: Establece las propiedades del borde al final del bloque (en un modo horizontal, esto es el borde inferior).
Estas propiedades a su vez tienen sus propias sub-propiedades para el ancho, el estilo y el color (por ejemplo, border-block-start-width
, border-block-start-style
, border-block-start-color
).
Valores para la Propiedad border-block
Los valores que puedes usar para <ancho>
, <estilo>
y <color>
son los mismos que se utilizan para la propiedad border
y sus contrapartes físicas (border-width
, border-style
, border-color
).
Ejemplos:
.borde-bloque-solido {
border-block: 2px solid black;
}
.borde-bloque-punteado {
border-block: thin dotted blue;
}
.borde-bloque-grueso-rojo {
border-block: thick dashed red;
}
.borde-bloque-con-unidades {
border-block: 5px solid #336699;
}
Comportamiento en Diferentes Modos de Escritura
La principal ventaja de border-block
es su adaptabilidad a diferentes modos de escritura.
-
Modo de Escritura Horizontal (
horizontal-tb
- predeterminado):border-block-start
se aplica al borde superior.border-block-end
se aplica al borde inferior.
-
Modo de Escritura Vertical (
vertical-rl
overtical-lr
):border-block-start
se aplica al borde derecho (vertical-rl
) o izquierdo (vertical-lr
).border-block-end
se aplica al borde izquierdo (vertical-rl
) o derecho (vertical-lr
).
Ejemplo con modo de escritura vertical:
<!DOCTYPE html>
<html>
<head>
<style>
.elemento-vertical {
width: 150px;
height: 200px;
border: 1px solid gray;
writing-mode: vertical-rl; /* Texto de arriba a abajo, bloques de derecha a izquierda */
border-block: 3px solid purple; /* Ahora el borde púrpura estará a la derecha (inicio) y a la izquierda (fin) */
}
.elemento-horizontal {
width: 200px;
height: 100px;
border: 1px solid gray;
border-block: 3px solid green; /* El borde verde estará arriba (inicio) y abajo (fin) */
}
</style>
</head>
<body>
<div class="elemento-vertical">Texto vertical</div>
<div class="elemento-horizontal">Texto horizontal</div>
</body>
</html>
En este ejemplo, el borde púrpura del elemento vertical aparecerá en los lados derecho e izquierdo, mientras que el borde verde del elemento horizontal aparecerá en los lados superior e inferior.
Relación con border-inline
De manera similar a border-block
, existe la propiedad border-inline
que se utiliza para establecer los bordes en las direcciones de inicio y fin de la línea (horizontalmente en la mayoría de los casos).
border-inline-start
: Corresponde al borde izquierdo en modo horizontal y al borde superior en modo vertical (paravertical-lr
).border-inline-end
: Corresponde al borde derecho en modo horizontal y al borde inferior en modo vertical (paravertical-lr
).
Casos de Uso Comunes
- Diseños que necesitan ser compatibles con diferentes modos de escritura: Utilizar
border-block
asegura que los bordes importantes para la estructura del bloque se apliquen correctamente independientemente de la orientación del texto. - Componentes reutilizables: Crear componentes que funcionen bien en diferentes contextos de diseño y con diferentes idiomas.
- Diseños flexibles y adaptativos: Simplificar la creación de diseños que se ajustan a las necesidades de la internacionalización.
Compatibilidad del Navegador
Las propiedades lógicas como border-block
tienen buena compatibilidad con los navegadores modernos. Sin embargo, para asegurar la compatibilidad con navegadores más antiguos, es posible que necesites usar las propiedades físicas (border-top
, border-bottom
) como alternativa o en conjunto.
Consideraciones
- Al igual que con la propiedad
border
, el ancho del borde establecido conborder-block
afectará el tamaño total del elemento según el modelo de caja CSS. - Si solo estás trabajando con un modo de escritura horizontal y no necesitas la flexibilidad de las propiedades lógicas, puedes seguir utilizando
border-top
yborder-bottom
. - Las propiedades lógicas son especialmente útiles en proyectos que requieren soporte para múltiples idiomas con diferentes modos de escritura.
Ejemplo Práctico
Considera un diseño de lista donde quieres tener una línea divisoria visual entre los elementos de la lista. Usando border-block
, puedes asegurar que esta línea divisoria siempre aparezca entre los bloques de la lista, ya sea que la lista se muestre horizontal o verticalmente (aunque las listas suelen ser verticales en la mayoría de los casos).
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style: none;
padding: 0;
}
li {
padding: 10px;
border-block-end: 1px solid #eee; /* Añade una línea divisoria al final de cada bloque (típicamente abajo) */
}
li:last-child {
border-block-end: none; /* Elimina la línea del último elemento */
}
/* Ejemplo con modo de escritura vertical (solo para ilustración) */
.lista-vertical {
writing-mode: vertical-rl;
}
.lista-vertical li {
border-block-end: 1px solid #eee; /* Ahora la línea estará a la izquierda */
}
</style>
</head>
<body>
<h2>Lista Horizontal (predeterminado)</h2>
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
<h2>Lista Vertical (ejemplo ilustrativo)</h2>
<ul class="lista-vertical">
<li>Elemento A</li>
<li>Elemento B</li>
<li>Elemento C</li>
</ul>
</body>
</html>
En este ejemplo, la propiedad border-block-end
se utiliza para agregar una línea divisoria al final de cada elemento de la lista. En la lista horizontal, esto es una línea en la parte inferior. En la lista vertical (solo como ejemplo), esta línea aparecerá en el lado izquierdo de cada elemento.
Conclusión
La propiedad border-block
es una herramienta valiosa para crear diseños web más flexibles y preparados para la internacionalización. Al enfocarte en la dirección del flujo del bloque en lugar de las direcciones físicas, puedes simplificar la creación de interfaces de usuario que se adaptan a diferentes modos de escritura de manera más intuitiva. ¡Experimenta con border-block
y otras propiedades lógicas para llevar tus habilidades de diseño web al siguiente nivel!