【前端技巧】CSS常用知识碎片(八)

CSS常用知识碎片(八)

CSS混合模式

  • background-blend-mode 属性用于混合元素背景图案、渐变和颜色;
  • mix-blend-mode 属性用于元素与元素之间的混合;
  • isolation 属性用在祖先元素上,限制mix-blend-mode 属性设置的混合模式的应用范围。

mix-blend-mode:multiply

  • 值multiply的混合效果是正片叠底,最终效果表现的色值的计算公式是:C = A * B / 255

mix-blend-mode:screen

  • 值screen的混合效果是滤色,最终效果的色值的计算公式是:C = 255 - (255 - A)(255 - B) / 255

mix-blend-mode:overlay

  • 值overlay的混合效果是叠加,最终效果的色值的计算公式是:

    • 当A <= 128 时:C = A * B / 128
    • 当A > 128 时:C = 255 - (255 - A)(255 - B) / 128
  • 利用叠加实现文字水印

<body>
<h4>文字水印</h4>
<div class="box"><img src="/images/test.jpg" width="256">
</div>
</body>
<style>
.box {position: relative;
}
.box::before {content: "水印文字";position: absolute;mix-blend-mode: overlay;text-shadow: 10ch 2em, -10ch 2em, 10ch -2em, -10ch -2em, 0 -5em, 0 5em;transform: rotate(-30deg);left: calc(50% - 5ch); top: 90px;
}
</style>
  • 利用叠加实现文字高亮
<body>
<h4>颜色叠加(适合浅色)</h4>
<p><input type="search" placeholder="输入内容回车搜索"></p>
<p id="target">可以在上面的输入框中输入任意这段内容中出现的文字或者单词,在输入内容并按回车键确认后,就会看到文字有高亮显示效果。但是,这种高亮显示效果不是通过包裹标签元素实现的,而是将色块直接覆盖在文字上面,然后通过叠加这种混合模式实现的。</p>
</body>
<script>
var eleSearch = document.querySelector('input[type="search"]');
var eleTraget = document.querySelector('#target');eleSearch.addEventListener('input', function () {var text = eleTraget.textContent;[].slice.call(document.querySelectorAll('ui-overlay')).forEach(function (overlay) {overlay.remove();});// 匹配处理var value = this.value.trim();var length = value.length;if (!length) {return;}var arrMatchs = text.split(value);if (arrMatchs.length > 1) {var start = 0;arrMatchs.forEach(function (parts, index) {if (index == arrMatchs.length - 1) {return;}var range = document.createRange();start += parts.length;range.setStart(eleTraget.firstChild, start);range.setEnd(eleTraget.firstChild, start + length);var bound = range.getBoundingClientRect();var eleOverlay = document.createElement('ui-overlay');document.body.appendChild(eleOverlay);eleOverlay.style.left = bound.left + 'px';eleOverlay.style.top = (bound.top + window.pageYOffset) + 'px';eleOverlay.style.width = bound.width + 'px';eleOverlay.style.height = bound.height + 'px';start += length;});}
});
</script>
<style>
ui-overlay {position: absolute;background: red;mix-blend-mode: overlay;z-index: 9;
}p {color: gray;
}
</style>

mix-blend-mode:darken

  • 值darken的混合效果是变暗,表示将两种颜色的RGB通道值依次进行比较,哪个色值小就使用哪个色值。最终效果的色值的计算公式是:C = min(A, B)

mix-blend-mode:lighten

  • 值lighten的混合效果是变亮,表示将两个颜色的RGB通道值依次进行比较,哪个色值大就使用哪个色值。最终效果的色值的计算公式是:C = max(A, B)

mix-blend-mode:color-dodge

  • 值color-dodge的混合效果是颜色变淡,最终效果的色值的计算公式是:C = A + A * B / (255 - B)

mix-blend-mode:color-burn

  • 值color-burn的混合效果是颜色加深,最终效果的色值的计算公式是:C = A - (255 - A)(255 - B) / B

mix-blend-mode:hard-light

  • 值hard-light的混合效果是强光,就好像耀眼的聚光灯照射过来,表现为图像亮的地方更亮,暗的地方更暗。最终效果的色值的计算公式如下所示:
    • 当 B <= 128 时:C = A * B / 128
    • 当 B > 128 时:C = 255 - (255 - A)(255 - B) / 128

mix-blend-mode:soft-light

  • 值soft-light的混合效果是柔光,就好像发散的光源四处弥漫,它的表现效果和hard-light有类似之处,只是表现没有hard-light那么强烈。
    • 当 B <= 128 时:C = (A * B / 128) + (A / 255)^2 * (255 - 2 * B)
    • 当 B > 128 时:C = 255 - (255 - A)(255 - B) / 128

mix-blend-mode:difference

  • 值difference的混合效果是差值,最终颜色的色值是用较浅颜色的色值减去较深颜色的色值的结果,计算公式是:C = | A - B |

mix-blend-mode:exclusion

  • 值exclusion的混合效果是排除,最终的混合效果和difference模式是类似的,区别在于exclusion的对比度要更低一些。最终效果的色值的计算公式是:C = A + B - A * B / 128

mix-blend-mode:hue

  • 值hue表示色调混合,作用是将颜色混合,使用底层元素的亮度和饱和度,以及上层元素的色调。

mix-blend-mode:saturation

  • 值saturation表示饱和度混合,混合后的颜色保留底图的亮度和色调,并使用顶图的饱和度。

mix-blend-mode:color

  • 值color表示颜色混合,混合后的颜色保留底图的亮度,并使用顶图的色调和饱和度。

mix-blend-mode:luminosity

  • 值luminosity表示亮度混合,混合后的颜色保留底图的色调和饱和度,并使用顶图的亮度,效果和color模式正好是相反的。

滤镜和混合模式的化合反应

  1. 使用白天素材模拟夜晚
.night {width: 256px; height: 256px;background: rgba(0,40,140,.6) url(./house-bed.jpg);background-size: 100%;background-blend-mode: darken;filter: brightness(80%) grayscale(20%) contrast(1.2);
}
  1. 照片美化处理
._1977 {position: relative;/* 应用滤镜 */filter: contrast(1.1) brightness(1.1) saturate(1.3);
}
._1977:after {content: '';height: 100%; width: 100%;position: absolute;left: 0; top: 0;pointer-events: none;background: rgba(243,106,188,.3);/* 应用混合模式 */mix-blend-mode: screen;
}
  1. 照片风格化处理
.sketch {width: 256px; height: 171px;background: url(10.jpg) -2px -2px, url(10.jpg);background-size: 258px 173px;background-blend-mode: difference;filter: brightness(3) invert(1) grayscale(1);
}

background-blend-mode 提升背景重叠的颜色丰富性

.pattern {width: 300px; height: 180px;--gradient: transparent 20px, lightcoral 0 40px, transparent 0 60px;background: repeating-linear-gradient(var(--gradient)),repeating-linear-gradient(90deg, var(--gradient)), floralwhite;/* 应用正片叠底混合模式 */background-blend-mode: multiply;
}

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

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

相关文章

Sentinel整合OpenFegin

之前学习了openFeign的使用&#xff0c;我是超链接 现在学习通过Sentinel来进行整合OpenFegin。 引入OpenFegin 我们需要在当前的8084项目中引入对应的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

mermaid语言绘制图形

mermaid语言绘制图形 绘制流程图 graph TD; A-->B A-->C B-->D C-->D#mermaid-svg-bENj2N7h8AfGvgYF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bENj2N7h8AfGvgYF .error-icon{fill:#552222;}#me…

栈练习题(逆波兰表达式,有效括号,出入栈次序匹配,最小栈)

目录 基础知识: 中缀表达式和后缀表达式(逆波兰式) 中缀表达式转后缀表达式 后缀表达式求结果 有效括号 栈的压入,弹出序列 最小元素栈 基础知识: 栈:是一种先入后出的数据结构,它的底层是由数组实现的 入栈:push(),出栈pop(),查看栈顶元素peek() 中缀表达式和后缀表…

SpringBoot 集成 EasyExcel 3.x 实现 Excel 导出

目录 EasyExcel官方文档 EasyExcel是什么&#xff1f; EasyExcel注解 springboot集成EasyExcel 简单入门导出 &#xff1a; 实体类 自定义转换类 测试一下 复杂表头一对多导出 &#xff1a; 自定义注解 定义实体类 自定义单元格合并策略 测试一下 EasyExcel官方文档 …

Spring mvc 组件介绍

1. 组件介绍 1.1 DispatcherServlet 统一收口&#xff0c;接收请求&#xff0c;响应结果&#xff0c;相当于转发器&#xff0c;中央处理器。 有了 DispatcherServlet 减少了其它组件之间的耦合度。 1.2 HandlerMapping-处理器映射器 根据请求的url查找Handler&#xff0c;既…

SpringCloud学习路线(5)—— Nacos配置管理

一、统一配置管理 需求&#xff1a; 微服务配置能实现统一的管理&#xff0c;比如希望改动多个配置&#xff0c;但不希望逐个配置&#xff0c;而是在一个位置中改动&#xff0c;并且服务不用重启即用&#xff08;热更新&#xff09;。 &#xff08;一&#xff09;使用配置管理…

AN OVERVIEW OF LANGUAGE MODELS RECENT DEVELOPMENTS AND OUTLOOK

LLM系列相关文章&#xff0c;针对《AN OVERVIEW OF LANGUAGE MODELS: RECENT DEVELOPMENTS AND OUTLOOK》的翻译。 语言模型综述&#xff1a;近年来的发展与展望 摘要1 引言2 语言模型的类型2.1 结构化LM2.2 双向LM2.3 置换LM 3 语言单元3.1 字符3.2 单词和子单词3.2.1 基于统…

Sublime Text 文件采用Unix行尾格式

仅仅设置"default_line_ending": "unix"是不够的&#xff0c;因为这不能自动转换Windows文件。 import sublime_pluginclass SetUnixLineEndingsCommand(sublime_plugin.TextCommand):def run(self, edit):self.view.set_line_endings("unix")c…

十八、Unity游戏引擎入门

1、下载 首先需要下载Unity Hub,下载网址:https://unity.com/cn。 然后在其中下载Unity编辑器并安装,可选择最新版本。 接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件…

CRM排名前三的的系统有哪些特点?

crm经过多年的发展&#xff0c;不仅可以管理好客户关系还是企业重要的战略武器。让企业的销售、市场营销和客服服务部门建立密切联系&#xff0c;在crm一个平台上处理商机&#xff0c;简化业务流程&#xff0c;为组织降本增效。国内crm系统排名哪些技术商更靠前&#xff1f; 1…

微服务sleuth+zipkin——链路追踪

一、链路追踪&#x1f349; 1.什么是链路追踪&#xff1f;&#x1f95d; 在大型系统的微服务化构建中&#xff0c;一个系统被拆分成了许多模块。这些模块负责不同的功能&#xff0c;组合成系统&#xff0c;最终可以提供丰富的功能。在这种架构中&#xff0c;一次请求往往需要…

scrapy----setting配置

基础配置 #1 了解 BOT_NAME "firstscrapy" #项目名字&#xff0c;整个爬虫名字 #2 爬虫存放位置 了解 SPIDER_MODULES ["firstscrapy.spiders"] NEWSPIDER_MODULE "firstscrapy.spiders" #3 记住 是否遵循爬虫协议&#xff0c;一般都设为…

vue或react当中canvas实现电子签名组件和使用canvas进行图片压缩

<template><div><h1>vue3</h1><canvas id"canvasWrite"> 浏览器不支持Canvas,请升级浏览器 </canvas><div><button class"submit" click"submitWrite">提交签名</button><button clas…

jsoncpp源码篇(二)

使用jsoncpp时主要使用到的类有 Json::Value和 Json::Reader; 1. Json::Value类 1.1 提供的转换接口 const char* asCString() const; String asString() const; Int asInt() const; UInt asUInt() const; Int64 asInt64() const; UInt64 asUInt64() const; LargestInt asLarg…

23.Linux查看系统进程

在 Linux 中&#xff0c;您可以使用 ps 命令来查看系统进程。下面是一些常用选项和示例&#xff1a; ps aux&#xff1a;显示当前所有进程的详细信息&#xff0c;包括所有用户的进程。 示例输出&#xff1a; USER PID %CPU %MEM VSZ RSS TTY STAT START TIME…

vscode debug的方式

在.vscode文件夹下建立launch.json 例子1&#xff1a;调试python 来自 https://github.com/chunleili/tiPBD/tree/amg {"version": "0.2.0","configurations": [{"name": "hpbd 5 5","type": "python&quo…

Java开发中使用sql简化开发

引语&#xff1a; 在Java开发中&#xff0c;我们更希望数据库能直接给我们必要的数据&#xff0c;然后在业务层面直接进行使用&#xff0c;所以写一个简单的sql语句有助于提高Java开发效率&#xff0c;本文由简单到复杂的小白吸收&#xff0c;还请多多指教。 使用MySQL数据库…

Stable Diffusion学习笔记

一些零散笔记 灰常好的模型网站 LiblibAI哩布哩布AI-中国领先原创AI模型分享社区 出图效率倍增&#xff01;47个高质量的 Stable Diffusion 常用模型推荐 - 优设网 - 学设计上优设 关键词Prompt顺序 画质 风格 主体 外表、描述 表情、情绪 姿势 背景 杂项 同时可以…

23家企业推出昇腾AI系列新品 覆盖云、边、端智能硬件

[中国&#xff0c;上海&#xff0c;2023年7月6日] 昇腾人工智能产业高峰论坛在上海举办。论坛现场&#xff0c;大模型联合创新启动&#xff0c;26家行业领军企业、科研院所与华为将共同基于昇腾AI进行基础大模型与行业大模型应用创新。同时&#xff0c;华为携手伙伴联合发布昇腾…

【C++进阶之路】list的基本使用和模拟实现

文章目录 初步认识①定义②底层原理③迭代器的分类 一、基本使用1.插入结点元素2.删除结点元素3.合并两个有序链表4.将一条链表的某一部分转移到另一条链表5.对链表排序并去重6.vector与list排序的比较 二、模拟实现①要点说明②基本框架③迭代器构造函数- -*->list里的迭代…