• 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;
  • 相关阅读:
    datatime,time,string转换和format格式化处理
    迭代器和生成器进一步的认识
    对数据结构的新认识
    python StringIO中的 read()与 getvalue()
    git 分支策略
    js词法分析
    js作用域
    注解
    MapReduce过程详解(基于hadoop2.x架构)
    指数基金
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/12822176.html
Copyright © 2020-2023  润新知