zoukankan      html  css  js  c++  java
  • filter+transition实现点亮图片效果

    预期效果

    最近我在朋友圈看到一篇文章,关于疫情结束,点亮一张张图片的过程,图片由黑白逐渐变得色彩缤纷,看起来效果非常不错。

    实现方式

    实现方式非常简单,不难推断出用filtertransition可以完成这一效果,filter 用于控制颜色和明亮度,而 transition 则控制这一变化的过渡效果。

    源代码

    此处采用 vue2.x 的写法。

    <template>
      <div
        @click="lightImg"
        :class="['card-gray', { 'card-lightful': isLightful }]"
      ></div>
    </template>
    
    <script>
    export default {
      name: "lightYouImage",
      data() {
        return {
          isLightful: false
        };
      },
      methods: {
        lightImg() {
          this.isLightful = !this.isLightful;
        }
      }
    };
    </script>
    
    <style lang="less" scoped>
    .card-gray {
      position: relative;
      width: 300px;
      height: 200px;
      margin: 20px auto;
      background: url(http://pic.netbian.com/uploads/allimg/170915/191948-1505474388c138.jpg)
        center center/cover no-repeat;
      filter: grayscale(1) brightness(50%);
    }
    
    .card-lightful {
      filter: none;
      transition: filter 1s ease-in;
    }
    </style>
    

    效果预览

    出于各种原因,暂无法使用个人电脑,只能简单截个静态图片。以下依次为点亮前和点亮后的效果。

    需要注意的点

    1. transition上设置的效果是作用在当前类名下的指定属性的,且该属性的值为变化后的值,它需要对应一个变化前的值,才能看到效果。

    2. grayscale 控制元素灰度,灰度>=1 表示纯灰,为 0 表示原彩;brightness 控制元素亮度,为 0 表示纯黑,为 1 表示正常亮度,大于 1 表示高于正常亮度,类似于照片中的“过曝”。

    3. ease是“放松”的意思,在 css 的 timing-function 中,它表示慢速,常见的有如下几种:

    含义
    ease-in 缓慢进入,匀速进行和结束
    ease-out 匀速进入和进行,缓慢结束
    ease-in-out 缓慢进入,匀速进行,缓慢结束
    linear 全程匀速进行
    1. transition 可以设置多组效果,不同组之间用逗号隔开,如下:
        transition: filter 1s ease-in, width 1.5s ease-out;
  • 相关阅读:
    第51天 [js] 字符串相连有哪些方式?哪种最好?为什么?
    第52天 [js] 什么是事件委托?它有什么好处?能简单的写一个例子吗?
    np.ndarray与Eigen::Matrix之间的互相转换
    C++向assert加入错误信息
    CeiT:训练更快的多层特征抽取ViT
    CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
    正式启用Danube 官方站点
    go 编译报错 package embed is not in GOROOT (/usr/local/go/src/embed)
    cloudreve兼容acme.sh脚本
    Git的交叉编译
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/12822176.html
Copyright © 2011-2022 走看看