Página principal » Codificación » Cómo crear un diseño de borde recortado con CSS

    Cómo crear un diseño de borde recortado con CSS

    Con un diseño de borde recortado Podemos mostrar a los usuarios lo que se puede encontrar. debajo del área de borde de un elemento HTML. Esta tarea es típicamente resuelta por apilando dos o más elementos de bloque (en la mayoría de los casos divs) de diferentes tamaños Encima del otro. Primero, esto parece una solución sin esfuerzo, pero se vuelve más frustrante cuando se desea reutilizar el diseño varias veces, moverse por los elementos, optimizar el diseño para dispositivos móviles o mantener el código.

    En esta publicación, les mostraré una solución elegante solo para CSS que usa solo un elemento HTML Para lograr el mismo efecto. Esta técnica también es excelente para la accesibilidad, ya que carga la imagen de fondo en el CSS, separado del HTML.

    Al final de este post, sabrás cómo mostrar una imagen de fondo en el área del borde con el fin de crear el diseño de borde recortado Se puede ver a continuación. También te mostraré cómo puedes hacer que el diseño responda. utilizando unidades de vista.

    Codigo inicial

    El único requisito en el frente de HTML es un elemento de bloque:

     

    Necesitaremos reutilizar Las dimensiones (ancho y alto) y los valores de ancho de borde de la div, así que los estoy presentando como variables CSS. La variable --w denota el anchura del .cb elemento de bloque, --h indica su altura, --segundo va por el ancho del borde, y --b2 para el ancho del borde multiplicado por 2. Más adelante veremos el uso de la última variable.

    Estoy dimensionando el

    relativamente al ancho de la ventana, de ahí el uso de la vw unidad (puedes usar unidades fijas si quieres).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2);  
    Explicacion rapida - vw y vh unidades

    La unidad vw representa el 1/100th de la anchura de la ventana. Por ejemplo, 50vw es 50 partes del ancho de una vista cortado verticalmente en 100 partes iguales, mientras 50vh es 50 partes de una altura de viewport cortado horizontalmente en 100 partes iguales.

    Mejoremos el código anterior agregando un fondo y configurando el borde, la altura y el ancho mediante el uso de nuestras variables predefinidas CSS.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); fondo: url (bg.jpg); borde: var (- b) sólido transparente; altura: var (- h); ancho: var (- w);  

    Así es como se supone que se verá la demo ahora mismo:

    Tamaño de la imagen de fondo

    Necesitamos la imagen de fondo para cubrir toda el área de la

    incluyendo el área fronteriza, por lo que la imagen de fondo debe ser tamaño adecuado.

    Si desea darle un tamaño fijo a la imagen de fondo, solo asegúrese de que el tamaño que está dando le permita cubrir el área del borde de la imagen de fondo.

    también. En cuanto al código utilizado en el post hasta ahora, aquí está el fondo Valor lo estoy dando:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); fondo: url (bg.jpg) centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); borde: var (- b) sólido transparente; altura: var (- h); ancho: var (- w);  

    los ancho de la imagen de fondo Elcalc (var (- w) + var (- b2))] es la suma de ancho de la div Elvar (- w)] y el ancho de los bordes izquierdo y derecho Elvar (- b2)].

    Del mismo modo, el altura de la imagen de fondo Elcalc (var (- h) + var (- b2))] es la suma de altura de la div Elvar (- h)] y el ancho de los bordes superior e inferior Elvar (- b2)].

    De esta manera, hemos dimensionado la imagen de fondo a un área que es igual al tamaño de div (incluyendo el área fronteriza).

    los centrar palabra clave alinea la imagen de fondo al centro de la div.

    Nota: Si está agregando relleno a la div, Recuerda incluir el área de relleno al tamaño del fondo también, igual que el área del borde.

    Esto es lo que tenemos ahora:

    Cubre el área exclusiva de la frontera.

    Ahora que hemos cubierto el área que incluye la frontera con la imagen de fondo, todo lo que queda es cubrir el área central dentro de la frontera (área exclusiva del borde) con un color sólido, para el cual buscamos un sombra de la caja recuadro.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); fondo: url (bg.jpg) centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); borde: var (- b) sólido transparente; cuadro de sombra: inserte var (- w) 0 0 rgba (0,120,237, .5); altura: var (- h); ancho: var (- w);  

    La sombra horizontal con valor. var (- w) cubre todo el ancho de la div. El uso de rgba la función de color permite algo de transparencia para agregar a la mezcla, sin embargo, también puede usar un color opaco si desea cubrir completamente el área central.

    Añadir un borde extra con sombra de la caja

    En la demostración de Codepen, puedes ver un borde blanco alrededor de la imagen. Hay un famoso truco de Usando recuadros para crear múltiples bordes.-Podemos usar la misma técnica para agregar uno o más bordes de colores sólidos a nuestro diseño.

    El actualizado sombra de la caja valor es:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); fondo: url (bg.jpg) centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); borde: var (- b) sólido transparente; caja sombra: recuadro var (- w) 0 0 rgba (0,120,237, .5), 0 0 0 calc (var (- b) / 2) blanco; altura: var (- h); ancho: var (- w);  

    los calc (var (- b) / 2) función crea una sombra de la la mitad del ancho del borde.

    Opcional: Disposición y estética separadas.

    En mi demostración final de Codepen, coloqué el código para la imagen de fondo y el color de la sombra de la caja en una clase separada. Esto es Opcional, Pero puede ser extremadamente útil si quieres reutilizar el diseño del diseño del borde recortado en varios elementos, y agregue la estética (imagen de fondo + color) para cada elemento de forma independiente.

    He añadido una clase llamada .poster1 al

    para alcanzar esta meta.

     .poster1 --tbgc: rgba (0,120,237, .5); imagen de fondo: url ("http://bit.ly/2eQBij2");  

    Ya que fondo es una propiedad taquigráfica, Sus propiedades a mano pueden ser anuladas / configuradas individualmente. Por lo tanto, podemos establecer imagen de fondo en .poster1, y eliminar el valor de la URL de la fondo propiedad en .cb.

    Para establecer el valor de la sombra de la caja, nosotros podemos usar otra variable CSS. los --tbgc variable mantiene el valor del color Queremos dar a la caja de sombra (lightblue en la demo), así que entre las reglas de estilo para .cb nosotros reemplazar el valor de color de la sombra de la caja propiedad con var (- tbgc).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); fondo: centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); borde: var (- b) sólido transparente; cuadro de sombra: inserte var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) blanco; altura: var (- h); ancho: var (- w);  

    Código para modo retrato

    Dado que las dimensiones están todas en la unidad vw, va a parece demasiado pequeño cuando está viendo el diseño en modo retrato (ancho más pequeño en relación con la altura), en el que están predeterminados todos los dispositivos móviles. Para resolver este problema, cambiar vw con vh, y cambiar el tamaño del diseño Como mejor te parezca para los modos de retrato.

     @media (orientación: retrato) .cb --w: 35vh; --h: 40vh; --b: 4vh;  

    Nota: No te olvides de añadir la etiqueta meta viewport a su página HTML si ha decidido optimizarlo para la vista móvil.

    © Savtec
    Información útil y consejos de desarrollo web. Programación, diseño web, CSS, HTML, JAVASCRIPT. Configure y reinstale WINDOWS. Creación de sitios y aplicaciones desde cero.