怎么使用CSS混合模式让文字智能适配背景颜色

页面上有一段文本,能否实现这段文本在不同背景色下展示不同的颜色?也就是俗称的智能变色。像是下面这样:

怎么使用CSS混合模式让文字智能适配背景颜色

文本在黑色底色上表现为白色,在白色底色上表现为黑色。看似很复杂的一个效果,但是其实在 CSS 中非常好实现,今天就介绍这样一个小技巧,在 CSS 中,利用混合模式 mix-blend-mode: difference,让文字智能适配背景颜色。

混合模式 mix-blend-mode: difference

CSS3 新增了一个很有意思的属性 — mix-blend-mode ,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合混合模式,当然,我们我们通常称之为混合模式。一共有下图所示的一些混合模式:

怎么使用CSS混合模式让文字智能适配背景颜色

其中,本文的主角是 mix-blend-mode: difference,意为差值模式。该混合模式会查看每个通道中的颜色信息,比较底色和绘图色,用较亮的像素点的像素值减去较暗的像素点的像素值。

与白色混合将使底色反相;与黑色混合则不产生变化。

通俗一点就是上方图层的亮区将下方图层的颜色进行反相,暗区则将颜色正常显示出来,效果与原图像是完全相反的颜色

该混合模式最常见的应用场景就是文章开头描述的场景,实现文本在不同背景色下展示不同的颜色。

非常适合于黑白场景,非常简单的一个 DEMO:

<div></div>
div {    height: 100vh;    background: linear-gradient(45deg, #000 0, #000 50%, #fff 50%);    &::before {        content: "LOREM IPSUM";        position: absolute;        较好: 50%;        left: 50%;        transform: translate(-50%, -50%);        color: #fff;        mix-blend-mode: difference;        animation: move 3s infinite linear alternate;    }}@keyframes move {    0% {        transform: translate(-30%, -50%);    }    100% {        transform: translate(-70%, -50%);    }}

效果如下:

怎么使用CSS混合模式让文字智能适配背景颜色

CodePen Demo — linear-gradient + Mix-blend-mode

当然,不一定是黑色或者白色,看看下面这个例子,有这样一种场景,有的时候我们不太确定背景颜色的最终表现值(可能是后台配置,传给前端),但是又需要让文字能够在任何背景颜色下都正常展出,此时,也可以尝试使用 mix-blend-mode: difference

<ul class="flex-box">  <div class="box">    <p>开通会员查看我的VIP等级</p>  </div>   // ..... </ul>
div {    // 不确定的背景色}p {    color: #fff;    mix-blend-mode: difference;}

无论背景色是什么颜色,设置了 mix-blend-mode: difference<p> 元素都可以正常展示出文本:

怎么使用CSS混合模式让文字智能适配背景颜色

CodePen Demo — mix-blend-mode:difference实现文字颜色自适应底色

mix-blend-mode:difference 的缺点

当然,这个方法不是完美的,因为通过 mix-blend-mode:difference 与底色叠加之后的颜色,虽然能够正常展示,但是不一定是非常适合的颜色,展示效果的较好的颜色。

这里实际使用的时候,在非黑白场景下,还需要多加实验加以取舍。

关于“怎么使用CSS混合模式让文字智能适配背景颜色”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

文章标题:怎么使用CSS混合模式让文字智能适配背景颜色,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/23868

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月8日 下午10:38
下一篇 2022年9月8日 下午10:39

相关推荐

  • windows 0x80070002错误代码如何解决

    0x80070002错误代码解决方法: 方法一: 1、点击左下角开始,在“windows系统”中打开“控制面板”。 2、进入后点击查看方式选择“大图标”。 3、然后在下面找到“管理工具”。 4、在管理工具中点击“服务”双击进入。 5、下拉找到“windows update”右击选择“停止”即可。 6…

    2022年9月18日
    1.3K00
  • javascript数值型只有一种吗

    javascript数值型只有一种:浮点类型。JavaScript内部存储数字都是按64位浮点类型存储的,所以在JavaScript中实际上是没有整数类型的。按照JavaScript中的数字格式能够表示的整数范围为“[-2^53 ~ 2^53]”,包含边界值;但需要注意的是,数组索引、位操作符等使用…

    2022年9月24日
    58600
  • unlocker如何使用

    unlocker使用方法: 方法一: 1、找到被锁定的文件或软件,右键选中它,点击右键菜单中的“Unlocker”按钮。 2、然后在左边选择要对它进行的动作,再点击“确定”就可以了。 方法二: 1、直接打开软件,它会自动扫描电脑中正在运行的进程。 2、选中需要操作的进程,然后在下方点击“过程结束”,…

    2022年9月24日
    59200
  • mysql如何删除数据库

    删除方法:1、使用“win+r”键打开“运行”窗口,输入“cmd”,回车进入cmd命令窗口;2、在cmd窗口中,执行“mysql -u root -p”命令登录MySQL服务器;3、执行“DROP DATABASE IF EXISTS 数据库名;”命令来删除指定数据库中的所有表并永久删除该数据库,“…

    2022年9月26日
    1.8K00
  • 怎么利用idea快速搭建一个springcloud

    package com.example.consumer; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;im…

    2022年9月18日
    39400
  • 电脑0xc0000011如何解决

    0xc0000011修复方法: 方法一: 1、首先我们需要查看是否是软件问题,开机时按住“F8”直到进入系统修复界面。 2、接着在其中选择“最后一次正确的配置”回车进入。 3、如果我们无法进入系统,那么说明就不是安装的软件或驱动等问题。 方法二: 1、这时候就需要采用系统盘进行修复了。 2、如果我们…

    2022年9月18日
    66300
  • Thinkphp5.0对数据库的操作方法有哪些

    基本使用 查询操作 Db::query(‘select * from think_user where id=?’,[8]); 写入操作 Db::execute(‘insert into think_user (id, name) values (?, ?)’,[8,’thinkphp’]); 查询…

    2022年9月26日
    60300
  • MySQL中数据库优化的常见sql语句有哪些

    1.SHOW ENGINES 查看执行引擎以及默认引擎。 2.SHOW PROCESSLIST SHOW PROCESSLIST查看当前数据库连接的使用情况,以及各种状态信息,非常有用。SHOW PROCESSLIST; 只列出前100条,如果想全列出请使用SHOW FULL PROCESSLIST…

    2022年9月1日
    40000
  • 做好APP测试的8条法则是什么

    一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项。但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能。 下面主要说说移动测试,对于产品的手机项目(应用软件),主要是进行系统测试。而针对手机应用软件APP的系统测试,我们…

    2022年9月6日
    59200
  • ​CSS如何写出三角形

    CSS 写出三角形 /* create an arrow that points up */div.arrow-up { width:0px; height:0px; border-left:5px solid transparent; /* left arrow slant */ border-r…

    2022年9月1日
    35100
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部