• CSS & JS Effect – Image hover animation


    效果

    效果来自: webflow 的一个模板

    需求解释

    有 3 给元素, 图片, overlay(黑影), link

    mouse enter 的时候,

    图片要 zoom in.

    overlay 要 fade in.

    link 要 slide up

    mouse leave 的时候, 图片 zoom out 的速度比 zoom in 快.

    HTML 结构

    <div class="container">
      <img src="./images/img1.jpg" />
      <div class="overlay"></div>
      <div class="text-wrapper">
        <a href="#">Click here know more</a>
      </div>
    </div>

    大致思路:

    container 负责整体的 width, heigth

    图片覆盖整个 container. 等下 scale 的时候, container 要 overflow: hide.

    overlay 绝对定位覆盖图片之上. 一开始 opacity, mouse enter 才出现.

    text-wrapper 是为了 slide up 效果. link 通过 transform translate 躲在 wrapper 下面. (wrapper overflow hidden).

    CSS Style

    给 container 一个 size

    .container {
      width: 613px;
      height: 461px;
    }

    给图片一个 size

    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    效果

    给 overlay 一个颜色, 和定位

    .container {
      position: relative;
    }
    .overlay {
      background-color: rgba($color: black, $alpha: 0.3);
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }

     效果

    给 text-wrapper 定位居中

    .text-wrapper {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      a {
        color: white;
        text-decoration: underline;
      }
    }

    效果

    隐藏 overlay 和 link

    .overlay {
      opacity: 0;
    }
    
    .text-wrapper {
      overflow: hidden;
      a {
        display: inline-block;
        transform: translateY(100%);
      }
    }

    效果

    hover 时图片 zoom in/out

    .container {
      overflow: hidden;
    }
    img {
      transition: transform 0.5s ease;
    }
    .container:hover {
      img {
        transition: transform 1s ease-in-out;
        transform: scale(1.2);
      }
    }

    效果

    hover overlay 出现

    .overlay {
      transition: opacity 0.5s ease;
    }
    .container:hover {
      .overlay {
        opacity: 1;
      }
    }

    效果...等下一起看吧.

    hover slide up link

    .text-wrapper {
      a {
        transition: transform 0.5s ease;
      }
    }
    .container:hover {
      .text-wrapper {
        a {
          transform: translateY(0);
        }
      }
    }

    效果

    Final CSS Style

    .container {
      width: 613px;
      height: 461px;
      overflow: hidden;
    
      img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    
        transition: transform 1s ease;
      }
    
      position: relative;
      .overlay {
        width: 100%;
        height: 100%;
        background-color: rgba($color: black, $alpha: 0.3);
        position: absolute;
        top: 0;
        left: 0;
        opacity: 0;
        transition: opacity 1s ease;
      }
    
      .text-wrapper {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        overflow: hidden;
        a {
          display: inline-block;
          color: white;
          text-decoration: underline;
          transform: translateY(100%);
          transition: transform 0.4s ease;
          opacity: 0.8;
        }
      }
    
      &:hover {
        img {
          transition: transform 1.2s ease-out;
          transform: scale(1.2);
        }
        .overlay {
          opacity: 1;
        }
        .text-wrapper {
          a {
            transform: translateY(0);
          }
        }
      }
    }
  • 相关阅读:
    相机用的 SD Card 锁Lock 烂掉了,无法正常写入
    Cannon 60D 电池卡在电池槽了,拔不出来怎么办?
    免费好用的 Apple 工具(Windows 适用)
    𠝹 (界刂) 呢個字點打?
    学校或公司转ISP -boardband (上网公司)注意事项记录
    iis站点添加.asmx的映射
    跨页面传参
    setTimeout和setInterval
    鼠标获取屏幕上的固定点位置坐标
    把完整字符串分割为字符串数组
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15940435.html
Copyright © 2020-2023  润新知