Pagina inicial » Codificação » Como criar um design de borda recortada com CSS

    Como criar um design de borda recortada com CSS

    Com um design de borda recortada podemos mostrar aos usuários o que pode ser encontrado sob a área de borda de um elemento HTML. Esta tarefa é tipicamente resolvida por empilhando dois ou mais elementos de bloco (na maioria dos casos divs) de tamanhos diferentes em cima do outro. Primeiro, isso parece uma solução fácil, mas fica mais frustrante quando você deseja reutilizar o layout várias vezes, movimentar os elementos, otimizar o design para dispositivos móveis ou manter o código.

    Neste post, vou mostrar uma solução elegante somente para CSS que usa apenas um elemento HTML para conseguir o mesmo efeito. Essa técnica também é ótima para acessibilidade, já que carrega a imagem de fundo no CSS, separado do HTML.

    Até o final deste post, você saberá como exibir uma imagem de fundo na área de fronteira a fim de criar o design de borda recortada você pode ver abaixo. Eu também mostrarei como você pode tornar o design responsivo usando unidades de viewport.

    Código Inicial

    O único requisito na frente HTML é um elemento de bloco:

     

    Nós precisaremos reuso as dimensões (largura e altura) e os valores da largura da borda do div, então eu vou apresentá-los como variáveis ​​CSS. A variável --W denota o largura do .cb elemento de bloco, --h indica sua altura, --b vai para o largura da borda, e --b2 para a largura da borda multiplicada por 2. Mais tarde veremos o uso da última variável.

    Estou dimensionando o

    relativamente à largura da viewport, daí o uso do vw unidade (você pode usar unidades fixas se quiser).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; - b2: calc (var (- b) * 2);  
    Explicação rápida - vw e vh unidades

    A unidade vw representa o 1/100º da largura da viewport. Por exemplo, 50vw é 50 partes de uma largura de viewport cortado verticalmente em 100 partes iguais, enquanto 50v é 50 partes de uma altura de viewport cortado horizontalmente em 100 partes iguais.

    Vamos melhorar o código acima adicionando um fundo e definindo a borda, altura e largura usando nossas variáveis ​​CSS predefinidas.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; - b2: calc (var (- b) * 2); plano de fundo: url (bg.jpg); border: var (- b) sólido transparente; altura: var (- h); largura: var (- w);  

    Veja como a demonstração deve se parecer agora:

    Tamanho da imagem de fundo

    Precisamos da imagem de fundo para cobrir toda a área do

    incluindo a área de fronteira, então a imagem de fundo precisa ser dimensionado de acordo.

    Se você deseja dar à imagem de plano de fundo um tamanho fixo, apenas certifique-se de que o tamanho que está dando permite cobrir a área da borda da imagem.

    também. Quanto ao código usado no post até agora, aqui está o fundo valor que estou dando:

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

    o largura da imagem de fundo [calc (var (- w) + var (- b2))] é a soma do largura do div [var (- w)] e as largura das bordas esquerda e direita [var (- b2)].

    Da mesma forma, altura da imagem de fundo [calc (var (- h) + var (- b2))] é a soma do altura do div [var (- h)] e as largura das bordas superior e inferior [var (- b2)].

    Desta forma, dimensionamos a imagem de fundo para uma área que é igual ao tamanho do div (incluindo a área de fronteira).

    o Centro palavra chave alinha a imagem de fundo para o centro do div.

    Nota: Se você está adicionando preenchimento ao div, lembrar de incluir a área de preenchimento para o tamanho do plano de fundo também, o mesmo que a área de fronteira.

    É isso que temos agora:

    Cubra a área exclusiva da fronteira

    Agora que cobrimos a área de fronteira com a imagem de fundo, tudo o que resta é cobrir a área central dentro da fronteira (área exclusiva das fronteiras) com uma cor sólida, para a qual alcançamos um Sombra da caixa inserir.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; - b2: calc (var (- b) * 2); fundo: url (bg.jpg) centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) sólido transparente; box-shadow: inserção var (- w) 0 0 rgba (0,120,237, 0,5); altura: var (- h); largura: var (- w);  

    A sombra horizontal com valor var (- w) abrange toda a largura do div. O uso de rgba função de cor permite alguma transparência para ser adicionado na mistura, no entanto, você também pode usar uma cor opaca se você quiser cobrir totalmente a área central.

    Adicione uma borda extra com Sombra da caixa

    Na demonstração do Codepen, você pode ver uma borda branca ao redor da imagem. Há um famoso truque de usando sombras de caixa para criar várias bordas-podemos usar a mesma técnica para adicionar uma ou mais bordas coloridas sólidas para o nosso design.

    A atualização Sombra da caixa valor é:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; - b2: calc (var (- b) * 2); fundo: url (bg.jpg) centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) sólido transparente; box-shadow: inserção var (- w) 0 0 rgba (0,120,237, 0,5), 0 0 0 calc (var (- b) / 2) branco; altura: var (- h); largura: var (- w);  

    o calc (var (- b) / 2) função cria uma sombra do metade da largura da borda.

    Opcional: Layout e estética separados

    Na minha demonstração final do Codepen, eu coloquei o código para a imagem de fundo e a cor de sombra da caixa em uma classe separada. Isto é opcional, mas pode ser extremamente útil se você quiser reutilize o layout do design de borda recortada em vários elementos, e adicione a estética (imagem de fundo + cor) para cada elemento de forma independente.

    Eu adicionei uma classe chamada .poster1 ao

    para atingir esse objetivo.

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

    Desde a fundo é uma propriedade abreviada, suas propriedades de longhand podem ser sobrepostas / configuradas individualmente. Assim, podemos definir imagem de fundo em .poster1, e remova o valor do URL do fundo propriedade em .cb.

    Para definir o valor do Sombra da caixa, podemos usar outra variável CSS. o --tbgc variável mantém o valor da cor queremos dar para a box-shadow (lightblue na demo), então entre as regras de estilo para .cb nós substitua o valor da cor do Sombra da caixa propriedade com var (- tbgc).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; - b2: calc (var (- b) * 2); fundo: centro / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); border: var (- b) sólido transparente; box-shadow: inserção var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) branco; altura: var (- h); largura: var (- w);  

    Código para o modo retrato

    Já que as dimensões estão todas na unidade vw, será parece muito pequeno quando você está visualizando o desenho no modo retrato (largura menor em relação à altura) - todos os dispositivos móveis estão por padrão. Para resolver este problema, interruptor vw com vh, e redimensionar o design como achar melhor para modos de retrato.

     @media (orientação: retrato) .cb --w: 35vh; --h: 40vh; --b: 4vh;  

    Nota: Não se esqueça de adicionar a metatag da viewport para a sua página HTML, se você decidiu otimizá-lo para exibição móvel.

    © Savtec
    Informações úteis e dicas de desenvolvimento da web. Programação, web design, CSS, HTML, JAVASCRIPT. Configure e reinstale o WINDOWS. Criação de sites e aplicativos a partir do zero.