Pagina inicial » Codificação » Criar um efeito de revelação de imagem apenas por CSS com bordas transparentes

    Criar um efeito de revelação de imagem apenas por CSS com bordas transparentes

    UMA Apenas imagem CSS revela efeito pode ser resolvido de maneiras diferentes. Na verdade, é muito fácil codificar um design em que o imagem fica fora de (é sobrevoado por) seu fundo sólido -você apenas colocar uma imagem sobre um elemento menor com um fundo sólido.

    Você pode obter o mesmo resultado se você usar bordas transparentes, onde você mantém o tamanho do elemento de fundo da mesma como a do primeiro plano e adicionar bordas transparentes, a fim de crie um espaço vazio para o primeiro plano a transbordar para.

    tem algumas vantagens em usar o último método. Como são as bordas transparentes que fornecem a área para o primeiro plano transbordar, podemos controlar a direção do estouro entre as bordas esquerda, direita, superior e inferior. Além disso, ter o mesmo tamanho para o primeiro plano e o plano de fundo torna mais fácil mover os dois elementos simultaneamente através da página.

    Em suma, vamos ver como criar um efeito de revelação de imagem somente para CSS usando um fundo sólido menor com um imagem em primeiro plano que tem bordas transparentes. Você pode conferir o demonstração final abaixo.

    1. Crie o código inicial

    HTML-wise, apenas um

    É necessário:

     

    No CSS, usamos duas variáveis ​​CSS, --bgc e --obscurecer para o Cor de fundo e a dimensões do .foo recipiente, respectivamente. No exemplo, usei o mesmo valor para a largura e altura para obter uma caixa quadrada, crie variáveis ​​separadas para a altura e a largura, se você quiser um retangular.

    Nós também adicionamos o posição: relativa regra para .foo, de modo que seus pseudo-elementos, que vamos usar para revelando a imagem, pode ser absolutamente posicionado (veja abaixo), e assim empilhados uns sobre os outros.

     .foo --bgc: # FFCC03; --dim: 300 px; largura: var (- dim); altura: var (- dim); background-color: var (- bgc); posição: relativa;  

    Nós adicione um vazio conteúdo propriedade para ambos os pseudo-elementos, .foo :: antes e .foo :: depois, para obtê-los processados ​​corretamente.

     .foo :: before, .foo :: depois de content: "; position: absolute; left: 0; top: 0; 

    o .foo elemento, seus dois pseudo-elementos, .foo :: antes, .foo :: depois, e sua :flutuar pseudo-classes arranje um transição propriedade aquilo vai adicione uma transição facilitada para eles por 500 milissegundos (meio segundo).

     .foo, .foo: hover, .foo :: antes, .foo :: depois, .foo: hover :: antes, .foo: hover :: after transição: transformar facilidade de 500ms;  

    2. Adicione a imagem

    Adicionamos a imagem ao .foo :: antes pseudo-elemento como imagem de fundo, e dimensioná-lo para cobrir todo o pseudo-elemento com o largura e altura propriedades. Nós empilhe-o logo abaixo do .foo elemento usando o z-index: -1 regra.

     .foo :: before width: 100%; altura: 100%; fundo: url (camel.png) centro / capa; z-index: -1;  

    o Centro palavra chave centra a imagem, enquanto o tampa palavra-chave dimensiona a imagem para cobrir todo o elemento mantendo a sua relação de aspecto.

    No imagem abaixo você pode ver o que temos até agora (z-index é removido de .foo :: antes para que possa ser visto):

    3. Adicione o fundo deslizante

    Para adicionar o fundo menor (slide-out) atrás da imagem, vamos usar o outro pseudo-elemento, .foo :: depois.

    Nós criamos outra variável CSS, --b, para o largura da borda. Nós damos três fronteiras transparentes ao ::depois de pseudo-elemento: superior, direita e inferior.

     .foo :: after --b: 20px; largura: calc (100% - var (- b)); altura: calc (100% - calc (var (- b) * 2)); border: var (- b) sólido transparente; border-left: nenhum; box-shadow: inserir 0 var (- dim) 0 var (- bgc); filtro: brilho (0,8); z-index: -2;  

    o largura é calculado como calc (100% - var - b)) que retorna a largura total de .foo menos a largura total de suas bordas horizontais (apenas borda direita, já que não há borda esquerda).

    o altura é calculado como calc (100% - calc (var (- b) * 2)) que retorna a altura total de .foo menos a largura total de suas bordas verticais (bordas superior e inferior).

    Com o Sombra da caixa propriedade, nós também adicione uma sombra horizontal do tamanho mesmo que .foo (qual é var (- dim)).

    Um filtro CSS de brilho (.8) escurece a cor de fundo um pouco e, finalmente, o z-index: -2 regra coloca o ::depois de pseudo-elemento por baixo ::antes que contém a imagem.

    Aqui está o captura de tela da demonstração rendido até agora (com z-index removido de ambos os pseudo-elementos para que possam ser vistos):

    4. Adicione a transformação

    Nós Adicione o transformar propriedade para os dois pseudo-elementos, então quando o usuário paira sobre .foo, ambos os pseudo-elementos são movido horizontalmente.

    Como nós já adicionou o transição propriedade para todos os elementos no final do Passo 1, o movimento da imagem e seu fundo são ambos animados.

     .foo: hover :: antes, .foo: hover :: after transformar: translateX (100%);  

    Abaixo, você pode ver o demonstração final.

    Bônus: margem opcional

    Se você exibir .foo ao lado de outros elementos em uma página e deseja que esses outros elementos afastar quando a imagem e seu plano de fundo são adicione uma margem direita da mesma largura que a de .foo ao .foo: hover elemento.

     .foo: hover margin-right: var (- dim);