CSS:mix-blend-mode属性(设置元素的混合模式)

news2024/11/19 17:42:24

目录

一、mix-blend-mode属性介绍

二、mix-blend-mode常用属性值

三、mix-blend-mode属性应用

四、文字智能适配背景

1、原始样式

2、添加混合 

3、实现代码 


一、mix-blend-mode属性介绍

CSS中的【mix-blend-mode属性】描述了元素的内容应该与元素的直系父元素的内容元素的背景如何混合;

  • 用于设置元素的背景与前景之间的混合模式;
  • 可以应用于任何元素;
  • 可以与background-image属性一起使用,创建各种不同的视觉效果;

二、mix-blend-mode常用属性值

序号属性值混合模式及说明
1mix-blend-mode: normal;正常:此属性不应用任何混合;
2mix-blend-mode: multiply;

相乘:元素乘以背景并替换背景颜色,生成的颜色始终与背景一样暗;

3mix-blend-mode: overlay;

叠加:根据背景颜色对内容进行倍增或屏蔽,这与硬光混合模式相反;

4mix-blend-mode: screen;

屏幕:将背景和内容相乘,然后补充结果。这将导致内容比背景颜色更亮;

5mix-blend-mode: darken;变暗;当内容变暗时,背景将被替换为内容,否则将保持原样;
6mix-blend-mode: lighten;

变亮:背景被替换为内容较亮的内容;

7mix-blend-mode: color-dodge;颜色变淡:此属性使背景颜色变亮,以反映内容的颜色;
8mix-blend-mode: color-burn;颜色变淡:这会使背景变暗,以反映内容的自然颜色;
9mix-blend-mode: hard-light;硬光:根据内容的颜色,此属性将对其进行筛选或倍增;
10mix-blend-mode: soft-light;柔光:根据内容的颜色,这会使其变暗或变亮;
11mix-blend-mode: difference;差值:这将从最亮的颜色中减去两种颜色中较深的一种;
12mix-blend-mode: exclusion;排除:与差值相似,但对比度较低;
13mix-blend-mode: hue;色调:通过内容的色调与背景的饱和度和亮度相结合来创建颜色;
14mix-blend-mode: saturation;饱和度:通过内容的饱和度和背景的色调和亮度来创建颜色;
15mix-blend-mode: color;

颜色混合:根据内容的色调和饱和度以及背景的亮度创建颜色;

16mix-blend-mode: luminosity;光度:根据内容的光度和背景的色调和饱和度创建颜色。这与颜色属性相反;
  • normal : this attribute applies no blending whatsoever.
  • multiply : the element is multiplied by the background and replaces the background color. The resulting color is always as dark as the background.
  • screen : multiplies the background and the content then complements the result. This will result in content which is brighter than the background-color.
  • overlay : multiplies or screens the content depending on the background color. This is the inverse of the hard-light blend mode.
  • darken : the background is replaced with the content where the content is darker, otherwise, it is left as it was.
  • lighten : the background is replaced with the content where the content is lighter.
  • color-dodge : this attribute brightens the background color to reflect the color of the content.
  • color-burn : this darkens the background to reflect the content’s natural color.
  • hard-light : depending on the color of the content this attribute will screen or multiply it.
  • soft-light : depending on the color of the content this will darken or lighten it.
  • difference : this subtracts the darker of the two colors from the lightest color.
  • exclusion : similar to difference but with lower contrast.
  • hue : creates a color with the hue of the content combined with the saturation and luminosity of the background.
  • saturation : creates a color with the saturation of the content combined with the hue and luminosity of the background.
  • color : creates a color with the hue and saturation of the content and the luminosity of the background.
  • luminosity : creates a color with the luminosity of the content and the hue and saturation of the background. This is the inverse of the color attribute.

三、mix-blend-mode属性应用

1、应用效果

mix-blend-mode属性的应用

2、相关代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>mix-blend-mode属性的应用</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .container {
            /* 定义变量 */
            --mix-blend-mode: normal;

            position: relative;
            width: 300px;
            height: 400px;
            margin: 60px;
            padding: 20px;
            box-shadow: 0 0 6px 1px #999;
            border-radius: 6px;
            caret-color: transparent;
        }

        h3,
        h4 {
            margin-bottom: 10px;
        }

        .info-box {
            width: 100%;
            height: 24px;
            line-height: 24px;
        }

        .circle {
            position: absolute;

            width: 200px;
            height: 200px;
            border-radius: 50%;

            mix-blend-mode: var(--mix-blend-mode);
        }

        .red-box {
            left: 70px;
            top: 160px;
            background-color: red;
        }

        .green-box {
            left: 30px;
            top: 220px;
            background-color: lightgreen;
        }

        .blue-box {
            left: 110px;
            top: 220px;
            background-color: blue;
        }
    </style>
</head>

<body>
    <div class="container">
        <h3>mix-blend-mode属性的应用</h3>
        <h4 class="value-box"></h4>
        <div class="info-box"></div>
        <div class="circle red-box"></div>
        <div class="circle green-box"></div>
        <div class="circle blue-box"></div>
    </div>
</body>
<script>
    // 获取元素
    var container = document.querySelector(".container");
    var valueBox = document.querySelector(".value-box");
    var infoBox = document.querySelector(".info-box");

    // mix-blend-mode属性的取值列表及说明;
    var values = [
        {
            id: 1,
            name: "正常",
            value: "normal",
            info: "此属性不应用任何混合;"
        },
        {
            id: 2,
            name: "相乘",
            value: "multiply",
            info: "元素乘以背景并替换背景颜色,生成的颜色始终与背景一样暗;"
        },
        {
            id: 3,
            name: "叠加",
            value: "overlay",
            info: "根据背景颜色对内容进行倍增或屏蔽;这与硬光混合模式相反;"
        },
        {
            id: 4,
            name: "屏幕",
            value: "screen",
            info: "将背景和内容相乘,然后补充结果。这将导致内容比背景颜色更亮;"
        },
        {
            id: 5,
            name: "变暗",
            value: "darken",
            info: "当内容变暗时,背景将被替换为内容,否则将保持原样;"
        },
        {
            id: 6,
            name: "变亮",
            value: "lighten",
            info: "背景被替换为内容较亮的内容;"
        },
        {
            id: 7,
            name: "颜色变淡",
            value: "color-dodge",
            info: "此属性使背景颜色变亮,以反映内容的颜色;"
        },
        {
            id: 8,
            name: "颜色变淡",
            value: "color-burn",
            info: "这会使背景变暗,以反映内容的自然颜色;"
        },
        {
            id: 9,
            name: "硬光",
            value: "hard-light",
            info: "根据内容的颜色,此属性将对其进行筛选或倍增。"
        },
        {
            id: 10,
            name: "柔光",
            value: " soft-light",
            info: "根据内容的颜色,这会使其变暗或变亮;"
        },
        {
            id: 11,
            name: "差值",
            value: "difference",
            info: "这将从最亮的颜色中减去两种颜色中较深的一种;"
        }, {
            id: 12,
            name: "排除",
            value: "exclusion",
            info: "与差值相似,但对比度较低;"
        },
        {
            id: 13,
            name: "色调",
            value: "hue",
            info: "通过内容的色调与背景的饱和度和亮度相结合来创建颜色;"
        },
        {
            id: 14,
            name: "饱和度",
            value: "saturation",
            info: "通过内容的饱和度和背景的色调和亮度来创建颜色;"
        },
        {
            id: 15,
            name: "颜色混合",
            value: "color",
            info: "根据内容的色调和饱和度以及背景的亮度创建颜色;"
        },
        {
            id: 16,
            name: "亮度",
            value: "luminosity",
            info: "根据内容的光度和背景的色调和饱和度创建颜色。这与颜色属性相反;"
        }
    ]

    changeMode();
    // 改变mix-blend-mode
    function changeMode() {
        let index = 0;
        modAttr(index);
        let timerId = setInterval(() => {
            if (index >= values.length) {
                clearInterval(timerId);
                return;
            }
            index++;
            modAttr(index)
        }, 3000)
    }
    function modAttr(index) {
        // 设置mix-blend-mode的属性值
        container.style.setProperty('--mix-blend-mode', values[index].value);
        valueBox.innerHTML = `mix-blend-mode : ${values[index].value};`;
        infoBox.innerHTML = `${values[index].name}(${values[index].value}): ${values[index].info}`
    }

</script>

</html>

四、文字智能适配背景

很多时候,文字需要压着图片显示,如果文字和图片的颜色接近,可读性就会受到严重影响;

如何能让文字自动适配背景?

就可以利用mix-blend-mode属性,设置文字与背景的颜色混合,实现文字适配背景效果;

1、原始样式

文字颜色为白色;在一些图片上的可读性很差;

.grid-item > h3 {
    color: rgb(255, 255, 255);
    ......
}

2、添加混合 

设置mix-blend-mode属性为difference

文字颜色的初始值是白色,但会与父元素背景对应的每像素颜色值进行差值计算,得到一个新的颜色值;

文字颜色值 - 背景颜色值 = 混合后的像素值;(每一像素)

例如:文字颜色(255, 255, 255),背景颜色(255, 255, 255),计算后的值(0, 0, 0),显示为黑色;

.grid-item>h3 {
    color: rgb(255, 255, 255);
    /* 设置混合模式 -- 计算差值 */
    mix-blend-mode: difference;
    ......
}

注意:这里的差值混合模式是应用在文字上的;

3、实现代码 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文字智能适配背景</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .container {
            display: flex;
            width: 100vw;
            height: 60vh;
            justify-content: center;
            align-items: center;
        }

        .grid-container {
            display: grid;
            grid-template-columns: 400px 400px 400px;
            grid-template-rows: 200px 200px;
            gap: 10px;
        }

        .grid-item {
            background-repeat: no-repeat;
            background-size: cover;
            border-radius: 6px;
            box-shadow: 0 0 6px 1px #999;
        }

        .grid-item>h3 {
            color: rgb(255, 255, 255);
            font-size: 36px;
            /* 设置混合模式 -- 计算差值 */
            mix-blend-mode: difference;
        }

        .grid-item:nth-child(1) {
            /* background-image: url("D:\\test\\zyl-img\\bg_1.jpg"); */
            background-color: red
        }

        .grid-item:nth-child(2) {
            /* background-image: url("D:\\test\\zyl-img\\bg_2.jpg"); */
            background-color: purple;
        }

        .grid-item:nth-child(3) {
            /* background-image: url("D:\\test\\zyl-img\\bg_3.jpg"); */
            background-color: yellow;
        }

        .grid-item:nth-child(4) {
            /* background-image: url("D:\\test\\zyl-img\\bg_4.jpg"); */
            background-color: green;
        }

        .grid-item:nth-child(5) {
            /* background-image: url("D:\\test\\zyl-img\\bg_5.jpg"); */
            background-color: teal;
        }

        .grid-item:nth-child(6) {
            /* background-image: url("D:\\test\\zyl-img\\bg_6.jpg"); */
            background-color: blue;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="grid-container">
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
            <div class="grid-item">
                <h3>mix-blend-mode属性的应用</h3>
            </div>
        </div>
    </div>
</body>

</html>

=========================================================================

每天进步一点点~!

记录一下CSS中的这个属性~~!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs安装及环境配置轨道交通运维检测系统App-OA人事办公排班故障维修

✌网站介绍&#xff1a;✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围&#xff1a;Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容&#xff1a;免费功能设计、免费提供开题答辩P…

【前端 09】JavaScript中的对象与JSON

JavaScript中的对象与JSON 在JavaScript中&#xff0c;对象和JSON&#xff08;JavaScript Object Notation&#xff09;是两个紧密相连但又有区别的概念。它们都在数据处理和交换中扮演着重要角色。本文将详细讲解JavaScript中的自定义对象以及JSON对象的基本概念、格式、用法…

赵本山:我跟你找游大队去,王平:实话告诉你,我就是游队长——小品《卖梨》(下)的台词与解说

赵本山&#xff1a;我跟你找游大队去&#xff0c;王平&#xff1a;实话告诉你&#xff0c;我就是游队长 ——小品《卖梨》&#xff08;下&#xff09;的台词与解说 &#xff08;接上&#xff09; 王平&#xff08;饰演警察&#xff09;&#xff1a;你少废话 你赶紧给我挪地方…

视觉SLAM第二讲

SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类&#xff1a;基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图&#xff0c;结合传感器数据进行全局定位。SLAM中的全局…

USB 2.0 协议专栏之 USB 2.0 连接与枚举(二)

前言&#xff1a;本篇博客为手把手教学的 USB 2.0 协议栈类精品博客&#xff0c;该专栏博客侧重针对 USB 2.0 协议进行讲解。本篇博客将针对 USB 2.0 中的连接与枚举进行教学&#xff0c;USB 的枚举过程是 USB 协议中至关重要的一环&#xff0c;也是嵌入式工程师必须掌握的内容…

杂谈(杂鱼谈论c语言)——2.大小端字节序

⼤⼩端字节序和字节序判断 当我们了解了整数在内存中存储后&#xff0c;我们调试看⼀个细节&#xff1a; #include <stdio.h> int main() {int a 0x11223344;return 0; } 调试的时候&#xff0c;我们可以看到在a中的 0x11223344 这个数字是按照字节为单位&#xff0c;…

【多模态大模型】 ALBEF in NeurIPS 2021

一、引言 论文&#xff1a; Align before Fuse: Vision and Language Representation Learning with Momentum Distillation 作者&#xff1a; Salesforce Research 代码&#xff1a; ALBEF 特点&#xff1a; 该方法使用ViT进行图像特征提取&#xff0c;提出将BERT分两部分&am…

解密阿里大神写的天书般的Tree工具类,轻松搞定树结构!

首发公众号&#xff1a;赵侠客 一、引言 最近公司新进了不少新人&#xff0c;包括一些来自阿里、网易等大型企业的资深工程师。我们组的一位新同事是阿里来的专家&#xff0c;我在CR&#xff08;Code Review, 简称CR&#xff09;时看到了他编写的一个关于树操作的工具类&#…

用qt调试can通信,波特率如何设置

硬件环境介绍&#xff1a; 1、usb转can通信模块型号为创芯科技的USB-CAN适配器&#xff0c;厂家提供的测试软件和demo程序&#xff0c;如下图所示&#xff1b; 2、下位单片机STM32&#xff0c;can通信参数如下图&#xff0c;该测试程序时单片机一直在发送数据&#xff1b; 测试…

STM32F103 RT-thread配置LCD的FMC

使用的正点原子F103ZET6开发板&#xff0c;屏幕是一块4.3寸的TFTLCD&#xff0c;接下来直接讲配置流程 参考文章&#xff1a;基于正点原子F103精英板和CubeIDE的Hal库LCD驱动移植&#xff08;从零开始&#xff09;_正点原子 cubeide-CSDN博客 1&#xff0c;使用RT_Thread Stu…

最新版Bertom降噪,压缩,均衡,简单好用有效,win和mac,支持Intel和M芯片

一。Denoiser Classic 3.07 win&mac 1&#xff09; Denoiser Classic是一个零延迟降噪插件&#xff0c;用于音乐&#xff0c;后期制作和现场使用。 2&#xff09;产品特点&#xff1a; Bertom Denoiser是一个专为音乐和后期制作/对话设计的降噪插件。 一个简单的用户界面&…

深入理解计算机系统 CSAPP 家庭作业11.8

回收子进程是书本537页的内容 在tiny.c文件加以下代码,记得重新编译哦 书中提到CGI是在动态内容中的,所以题目的意思应该是在动态内容里面回收 void handler1(int sig) {int olderrno errno;while (waitpid(-1,NULL,0)>0){Sio_puts("Handler reaped child\n");…

光伏电站气象站:现代光伏系统的重要组成部分

光伏电站气象站&#xff0c;作为现代光伏系统的重要组成部分&#xff0c;集成了气象学、电子信息技术、数据处理与分析等多学科技术于一体&#xff0c;能够实时监测并记录包括温度、湿度、风速、风向、太阳辐射强度、降雨量在内的多种气象参数。这些数据不仅是评估光伏板发电效…

基于粒子群优化算法(PSO)永磁同步电机电流环多参数辨识MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 仿真模型简介 在同步旋转dq 轴坐标系下建立PMSM 数学模型&#xff0c;将定子dq 轴电压设为辨识模型和实际测量值的输入&#xff0c;设计了PSO 辨识PMSM 参数的适应度函数。该辨识方法不需推导复杂的电机数学…

动态开辟字符串—malloc

该函数包含在头文件<stdlib.h>中. 函数原型 void * malloc (size_t size) ——分配所需的内存空间&#xff0c;并返回一个指向它的指针 size_t size, 该参数的类型是size_t(无符号整型),它表示要开辟的内存块的大小(以字节为单位),它的作用是告诉函数需要动态开辟多少个…

从代码层面熟悉UniAD,开始学习了解端到端整体架构

0. 简介 最近端到端已经是越来越火了&#xff0c;以UniAD为代表的很多工作不断地在不断刷新端到端的指标&#xff0c;比如最近SparseDrive又重新刷新了所有任务的指标。在端到端火热起来之前&#xff0c;成熟的模块化自动驾驶系统被分解为不同的独立任务&#xff0c;例如感知、…

USB 2.0 协议专栏之 USB 2.0 概述(一)

前言&#xff1a;本篇博客为手把手教学的 USB 2.0 协议栈类精品博客&#xff0c;该专栏博客侧重针对 USB 2.0 协议进行讲解。Universal Serial Bus 作为如今最常见的通信接口&#xff0c;被广泛应用于&#xff1a;Keyboard、Mouse、Communication Device Class 和 Mass Storage…

Scrapy + Django爬虫可视化项目实战(一)

目录 一、项目介绍 (一) 项目背景 (二) 项目介绍 二、系统实现 (一) 爬虫 1. 实现步骤 一、爬取字段 二、分析页面 三、具体实现 2. 爬虫结果 系列文章 Python升级打怪—Django入门 Python升级打怪—Scrapy零基础小白入门 实现技术 ScrapyDjangoEcharts 一、项目…

物联网精密空调监控指标解读:松越_TCP7022EX_精密空调

监控易是一款专业的IT和物联网设备监控软件&#xff0c;能够实时监控各类IT资源和物联网设备的运行状态&#xff0c;确保系统的稳定运行。在物联网精密空调领域&#xff0c;监控易对松越_TCP7022EX_精密空调进行了全面的监控&#xff0c;以下是对其监控指标的详细解读。 监控指…

2. Class 文件的组成

16 进制打开class文件 可以通过Notepad下载一个HexEditor插件&#xff0c;下载好该插件后可以以16进制的方式打开class看&#xff0c;打开后我们可以看到如下所示的图片&#xff1a; class 文件的组成 class 文件的组成部分为&#xff1a;魔数&#xff0c;版本号&#xff0c;…