Jinuss's blog Jinuss's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

东流

前端可视化
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • HTML

  • CSS

    • CSS教程和技巧收藏
    • flex布局语法
    • flex布局案例-基础
    • flex布局案例-骰子
    • flex布局案例-圣杯布局
    • flex布局案例-网格布局
    • flex布局案例-输入框布局
    • CSS3之transition过渡
    • CSS3之animation动画
    • CSS自定义设置滚动条样式
    • 「布局技巧」图片未加载前自动撑开元素高度
    • 文字在一行或多行时超出显示省略号
    • 从box-sizing属性入手,了解盒子模型
    • 水平垂直居中的几种方式-案例
    • 如何根据系统主题自动响应CSS深色模式
    • CSS-function汇总
    • 网格布局中的动画
    • CSS属性background-position-y实现动画
    • CSS实现github右上角图标
    • CSS3实现购物车动画效果
    • css-functions-属性函数
    • css-functions-图形函数
    • CSS3换装达人原理
      • iconfont图标字体库介绍
      • css关键字currentColor
      • css伪类选择器系列一
      • css伪类选择器系列二
      • 动态修改iconfont图标配色
      • 使用CSS3实现loading效果
      • CSS滚动驱动动画
      • CSS实现图片3D立体效果
      • iconfont中svg图片颜色动态修改第二弹
    • 浏览器

    • 页面
    • CSS
    东流
    2024-08-31
    目录

    CSS3换装达人原理

    # 引言

    换装或者是换皮肤是常见的行为,我们可以先看下效果:

    选择不同的颜色,就可以秒变人物服装的颜色,原理其实非常简单

    # 实现步骤

    主要分为三步,即素材的提供、布局样式、动态控制

    # 图片提供

    提供两张图片,一张人物图片,一张除衣服外其余透明的图片

    # 布局和样式

    布局主要是元素的定位,两张图片的叠加,需要用到相对定位和绝对定位

    /**  底图(人物)*/
    .person {
      width: 256px;
      height: 512px;
      background: url(../Demo/image/dress.jpg);
      position: relative;
    }
    
    1
    2
    3
    4
    5
    6
    7
    /** 服装 */
    .dress {
      position: absolute;
      inset: 0;
      mask: url(../Demo/image/下载.png);
      background-color: var(--color);
      mix-blend-mode: multiply;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 动态赋值

    动态赋值用到了 CSS3 的var()函数,动态改变.dress的背景颜色。

    # 原理

    素材的提供很重要,因为蒙版图片需要进行抠图,核心就是.dress的三个 css 属性:mask、background-color、mix-blend-mode。

    # mask属性

    mask属性允许通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。上面例子中就是使用图片(位图)来做遮罩。位图非透明的部分会采用background-color的值,而透明的部分就是透明的。

    # mix-blend-mode属性

    mix-blend-mode属性就是描述了元素的内容应该与元素的直系父元素的内容和元素的背景混合,简单来说就是决定元素和其第一个父元素的颜色采用哪种算法或策略进行颜色的叠加混合。示例中用到multiply,该属性用到的策略是:元素 rgb * 父元素 rgb /255= 显示 rgb,所以如果其中有一个为白色,显示的颜色就是另一个的颜色;若其中有一个是黑色,那么显示就是黑色。

    编辑 (opens new window)
    上次更新: 2024/09/01, 03:20:02
    css-functions-图形函数
    iconfont图标字体库介绍

    ← css-functions-图形函数 iconfont图标字体库介绍→

    最近更新
    01
    GeoJSON
    05-08
    02
    Circle
    04-15
    03
    CircleMarker
    04-15
    更多文章>
    Theme by Vdoing | Copyright © 2024-2025 东流 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式