Saltar enlaces

¡Prepárate para la poderosa propiedad CSS de forma de borde!

Entonces, recientemente obtuvimos nuevos shape() función (¡ahora una línea de base!) y corner-shape propiedad. ¿Qué más necesitamos en términos de crear formas en CSS? Déjame decirte: border-shape ¡propiedad!

shape()? corner-shape? border-shape? ! ¿De dónde vino todo esto?

Si no eres un fanático de las formas CSS como yo, es posible que te pierdas estas características, así que primero démosles una breve introducción formal…

shape() y corner-shape

este shape() la función es un nuevo valor clip-path y offset-path Crear formas CSS usando la sintaxis SVG es más fácil que otras formas path(). escribí un Explore esta función y otro artículo mío explorando Creación de formas complejas..

Tres formas rectangulares con bordes dentados y no creados. El primero es azul, luego naranja y luego verde.

Hablando de SVG, puedes expresar cualquier forma SVG usando shape(). En otras palabras, puedes cambiar Convierte cualquier forma SVG en una forma CSS y adivina qué, Hice un convertidor que hace esto!

hasta corner-shape Sí, es una propiedad utilizada con border-radius. Como sugiere el nombre, le permite controlar la forma de las esquinas de un elemento utilizando palabras clave predefinidas.

.corner {
  border-radius: 20px;
  corner-shape: round | scoop | bevel | notch | squircle;
}
Gráfico que muestra diferentes formas de esquinas CSS: círculo, cuchara, bisel, muesca y círculo cuadrado, cada una con un fondo morado y texto blanco.

También se puede utilizar para crear formas CSS comunes, como cubrí en otro artículo. corner-shape.

Solo formas CSS (triángulo, rombo, hexágono, etc.)`

pero esto es corner-shape ¿Es la propiedad realmente útil o incluso necesaria? Aparte de squircle valor, la mayoría de las formas ya se pueden crear usando clip-path o mask. pero que corner-shape ¡Estos otros no pueden agregar fácilmente bordes y otras decoraciones a estas formas!

Cinco formas con diferentes estilos de esquinas, etiquetadas: redonda, cuchara, bisel, muesca y redonda cuadrada, todas mostradas sobre un fondo morado.

corner-shape No sólo da forma a las esquinas, sino que también admite otras propiedades como border y box-shadowpermitiéndoles seguir la forma en lugar del cuadro del elemento. Esto cambia las reglas del juego porque todos sabemos que agregar bordes a las formas es una pesadilla.

El soporte aún no es excelente (solo se admite Chromium mientras escribo esto), pero ahora es un buen momento para explorarlo y describir su potencial.

Ingresar border-shape!

Dar forma a las esquinas es genial, pero todavía estamos bastante limitados en lo que podemos hacer con él. Por ejemplo, ¿qué tal darle forma a un elemento completo? Eso es todo border-shape servirá. Acepta los mismos valores que clip-pathincluyendo nuevos shape() Función.

Entonces, funciona con clip-path? ¿Qué hay de nuevo?

como con corner-shapela mayoría de las propiedades decorativas, p. border, box-shadowy outline

Mostrar la diferencia entre ruta de clip y forma de borde

clip-path (y mask) voluntad Todo el elemento, incluida la decoración, por lo que tener cenefas es un gran problema. No. Este es un problema importante al crear formas CSS.

este border-shape La propiedad surgió para solucionar este problema. En lugar de cortar el elemento, “le da forma”, permitiendo que su decoración siga esa forma. En otras palabras, ¡agregar bordes a formas CSS será muy sencillo!

Sin mencionar border-shape También es muy cómodo de usar. Si estás familiarizado con clip-pathentonces en realidad no tienes nada nuevo que aprender. Simplemente reemplace un atributo por otro.

.shape {
  /* Old code */
  clip-path: shape() | polygon() | ...;

  /* New code */
  border-shape: shape() | polygon() | ...;
}

Te invito nuevamente a conocer más. shape() función porque su valor es tal que border-shape Realmente poderoso. Los dos realmente van de la mano.

Ahora que comprende el propósito básico de esta propiedad, ¿podemos comenzar con las cosas divertidas? Estoy aquí para superar los límites y mostrarte lo que es posible usar border-shape.

notas: Actualmente, el soporte está limitado a Chrome, así que consulte la siguiente demostración usando Chrome.

solo forma de borde

Como dije, la primera gran ventaja aquí es agregar bordes a las formas que siguen la forma real, lo que también significa poder crear formas solo con bordes. Todo lo que tienes que hacer es escribir el siguiente código:

.shape {
  border: 8px solid red;
  border-shape: /* your shape code */;
}

Cuatro formas con bordes y sin relleno, incluido un corazón rojo, una estrella amarilla, una flor verde y un rectángulo dentado azul.

La mayoría de las formas ya están disponibles en mi por lo que crear una forma que solo tenga borde es simplemente copiar y pegar. incluso algunos Ya está configurado para proporcionar versiones de formas complejas solo con bordes, como manchas, líneas onduladas, marcos delicados y más.

Formas de solo borde que utilizan la propiedad CSS border-shape, incluido un círculo rojo irregular, una línea azul ondulada y un rectángulo azul irregular.

Actualicemos el código anterior de la siguiente manera:

.shape {
  border: 8px solid red;
  border-shape: inset(0) /* you shape code */;
}

Mantienes el código de forma que ya tienes y luego agregas inset(0) En primer lugar. Sí, puedes tener dos valores de forma. border-shape El resultado es el siguiente:

Recorta cuatro formas de los cuadrados llenos de colores, incluido un corazón sobre un fondo rojo, polvo de estrellas sobre un fondo amarillo, una flor sobre un fondo verde y un cuadrado en zigzag sobre un fondo azul.

de Especificación:

este border-shape El atributo acepta single <basic-shape> o dos <basic-shape>s:

soltero <basic-shape> (Modo viaje): El borde se representa como un trazo a lo largo del trazado de la forma, y ​​el ancho del trazo está determinado por el ancho calculado del borde asociado. Este modo es útil para establecer formas de contorno.

dos <basic-shape>s (modo de llenado) El límite aparece como el área entre dos caminos. La primera forma define el límite exterior y la segunda forma define el límite interior. Este modo proporciona un control preciso sobre la geometría del área límite.

Utilice un rectángulo básico como forma exterior (inset(0)), ¡pude convertir fácilmente la versión con solo bisel a la versión recortada!

¿Quieres una forma dentro de un círculo? ¡Simple!

Recorta cuatro formas del círculo relleno de color, incluido un corazón sobre un fondo rojo, polvo de estrellas sobre un fondo amarillo, una flor sobre un fondo verde y un cuadrado en zigzag sobre un fondo azul.

Todo lo que hice fue reemplazar inset(0) (un rectángulo) con circle() (un círculo).

Pero podemos hacer esto de una manera sencilla. border-radius: 50%¿bien?

¡No! cuando con border-shapeeste border-radius Se ignora, lo cual es lógico ya que ya no necesitamos esquinas redondeadas: el elemento ahora tiene forma. Esto no es gran cosa ya que podemos crear cualquier tipo de forma usando border-radiuscomo se muestra en el ejemplo anterior.

notas: Si te preguntas por qué uso circle()No hay disputa, por favor mira mi artículo. “Funciones CSS que funcionan sin parámetros.

Antes de pasar a la siguiente parte, aquí hay algunos ejemplos más con dos valores de forma:

Recorta cuatro formas del polígono lleno de color, incluido un corazón con fondo rojo, polvo de estrellas con fondo amarillo, una flor con fondo verde y un cuadrado en zigzag con fondo azul.

¡Puedes usar prácticamente cualquier combinación para obtener formas de apariencia compleja sin tener que esforzarte mucho!

decoración de ruptura

Ahora tomemos un texto y apliquemos el código anterior a dos valores de forma:

.box {
  border-shape: inset(0) circle();
  border-color: pink;
}

Quizás esto no sea sorprendente, considerando lo que hemos aprendido hasta ahora. Definimos dos formas y dibujamos un borde en el área entre ellas. Lo nuevo aquí es que estamos tratando con contenido y, como pueden ver, se superpone a la frontera.

border-shape conformado todo El elemento, incluida la decoración del elemento, pero todo lo que hay en su interior permanece sin cambios y sigue la forma rectangular inicial. Este no es un comportamiento nuevo ya que ocurre lo mismo incluso con el caso clásico. border-radius. El contenido se desbordará a menos que decidamos ocultarlo usando overflow hidden.

En este caso no consideraría overflow propiedad porque quiero que el contenido se desborde y se coloque encima de la decoración del borde.

Ahora actualicemos el código de la forma de esta manera:

.box {
  border-shape: inset(0 -100px) circle(50px);
  border-color: pink;
}

Hice el círculo más pequeño y el rectángulo más grande. ¿Sabes adónde voy? Al hacer el radio del círculo 0 ¡Y con el rectángulo más grande, creé un efecto de fondo de ruptura!

.box {
  border-shape: inset(0 -100vw) circle(0);
  border-color: pink;
}

Un fragmento de texto negro sobre un rectángulo rosa de ancho completo.

El elemento permanece centrado, pero su fondo (¡que estamos simulando con un borde!) se extiende hasta el borde de la pantalla.

Y esto no se limita a utilizar dos valores de forma. Incluso con un solo valor de forma, podemos lograr una decoración innovadora (Esto suele ser difícil) si considera cualquier valor que lo lleve fuera de los límites del elemento.

Aquí hay una demostración con muchos ejemplos que te dejaré explorar:

Tres ejemplos de decoración de texto en el borde, incluida una línea naranja que atraviesa el título principal, el título sobre un fondo azul con forma de intercalación y texto negro de ancho completo sobre un fondo rosa.

decoración parcial

Continuamos con la demostración anterior y probamos diferentes decoraciones.

Tres ejemplos de decoración de texto de borde incluyen un breve subrayado naranja para el título de mina, un título con un borde derecho diagonal sobre un fondo azul parcial y un borde de esquina en la esquina superior izquierda del párrafo.

Esta vez, en lugar de expandirme más allá de los límites del elemento, me quedé dentro de los límites del elemento para crear una decoración parcial. En otras palabras, ya no tenemos fronteras. border-shape No hay límite. ¡El único límite es tu imaginación!

En lo que confío principalmente es shape() función para crear decoraciones, así que hazte un favor y explora esta funcionalidad leyendo mi artículo Serie de cuatro artículos.! si dominas shape()puedes crear fácilmente decoraciones complejas usando border-shape.

Sí, border-shape Puede ser animado, podemos tener diferentes tipos de animaciones. Usando sintaxis binaria, podemos hacer border-width Crea valores que revelen el efecto:

Genial, ¿verdad? También podemos aplicar esto a elementos de imagen:

También podemos animar valores de formas para crear animaciones más complejas. Aquí hay una demostración de un efecto de rebote aplicado a una forma de burbuja (de mi artículo shape()”.

clip-path y border-shapey Entonces!

¿Por qué no añadir una animación sutil a la decoración anterior? Pase el cursor sobre el título y el texto para ver qué sucede:

¿Quieres más? ¡vamos!

esto es un Desliza el dedo entre los elementos del menú al pasar el mouse. ¡Las líneas rectas son aburridas!

¿Por qué no colocar un marco electrónico alrededor de su contenido? No te preocupes, las pantallas táctiles son seguras.

¿Qué tal un cargador elegante solo con límites? (Código tomado de )

nos deja Conectar círculos Una línea recta que se curva cuando los círculos se acercan y se extiende cuando los círculos se alejan. Arrastre los círculos en la demostración a continuación para ver el trabajo mágico:

en conclusión

Creo que ahora está claro por qué llamo “poderoso” a este nuevo atributo. Además de facilitar la creación de formas CSS, también nos permite agregar hermosas decoraciones, animaciones geniales y más.

No entré en detalles sobre la mayoría de las demostraciones porque quería mantener esta publicación ligera y mostrar el potencial. border-shape. Ahora que sabes que podemos crear cosas locas con él, ¡estad atentos para leer un artículo más detallado!

colección de formas CSS y mi generador en línea. He actualizado muchas formas usando shape()y estoy incluyendo border-shape Versión.

Home
Account
Cart
Search
¡Hola! ¡Pregúntame lo que quieras!
Explore
Drag