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

这篇具有很好参考价值的文章主要介绍了【前端技巧】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
  • 利用叠加实现文字水印文章来源地址https://www.toymoban.com/news/detail-558436.html

<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;
}

到了这里,关于【前端技巧】CSS常用知识碎片(八)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端需要理解的CSS知识

    CSS(层叠样式表,Cascading Style Sheets)不是编程语言,而是用来描述 HTML 或 XML(包括如 SVG、MathML 或 XHTML 之类的 XML 分支语言)文档的表现与展示效果的样式表语言。CSS3是CSS的最新标准,是 向后兼容(指的是老版本的功能和数据在新版本能完美运行, 与 向前兼容 相反 )的

    2024年02月11日
    浏览(32)
  • 前端常用js、css效果

    效果 主要整理了几个常用的,方便平时做项目的时候参考 文本横向滚动 文本无限滚动 无缝轮播 无缝滚动 盒子上下滚动 樱花飘落效果 参考代码 文本横向滚动 文本无限滚动 无缝轮播 无缝滚动 盒子上下移动 樱花飘落 添加插件sakura.js就可以了,不用什么代码

    2024年02月02日
    浏览(39)
  • CSS样式前端HTML页面常用CSS效果实现及其相关配置信息------前端入门基础教程

    !DOCTYPE html !-- 这是HTML的注释 -- html lang=\\\"en\\\" id=\\\"myHtml\\\"     head         !-- 这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码 --         meta charset=\\\"UTF-8\\\"         meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"         titleHtmlAll/title         

    2024年02月05日
    浏览(55)
  • 前端 | (五)CSS三大特性及常用属性 | 尚硅谷前端html+css零基础教程2023最新

    学习来源 :尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频 系列笔记 : 【HTML4】(一)前端简介 【HTML4】(二)各种各样的常用标签 【HTML4】(三)表单及HTML4收尾 【CSS2】(四)CSS基础及CSS选择器 【CSS2】(五)CSS三大特性及常用属性 【CSS2】(六)CSS盒子模型

    2024年02月17日
    浏览(43)
  • 【前端|CSS系列第2篇】CSS零基础入门之常用样式属性

    欢迎来到CSS零基础入门系列的第二篇博客!作为前端开发的关键技术之一,CSS(层叠样式表)能够为网页添加各种样式和布局效果。对于前端零基础的小白来说,了解和掌握CSS的常用样式属性是入门的关键。本篇博客将带你深入了解如何设置常用样式属性,包括文本属性、字

    2024年02月11日
    浏览(68)
  • 前端知识——css 之 flex 布局

    🔥🔥🔥更多知识,欢迎访问我的个人博客:Nan-ying’s Blog 长久以来,CSS 布局中唯一可靠且跨浏览器兼容的布局工具只有 floats 和 positioning 。 但是这两种方法本身存在很大的局限性, 并且他们用于布局实在是无奈之举。 一些布局上的痛点无法解决: 比如在父内容里面垂直居

    2024年02月07日
    浏览(51)
  • 『 前端三剑客 』:CSS常用属性

    一 . CSS常用元素属性 1.1 字体家族和 字体大小 设置的字体需要是 windows 上自带的字体 , 要求是系统中已经安装了的字体 使用 css 设置字体为微软雅黑 和 宋体 , 字体大小为 30 px 和 40 px font - size 设置的是字体的字符框的高度的大小 . 设置效果如下所示 1.2 设置字体粗细 font-we

    2024年02月15日
    浏览(46)
  • 前端小技巧:学会通过CSS Hover和JS实现图片放大镜效果

    数据来源: ChatGPT 今天,我们来看一个鼠标悬停出现图片放大镜效果,这是一个比较实用且炫酷的纯CSS和JS实现的页面效果。 HTML HTML代码非常简单,我们只需要一个div容器,内部嵌入一张图片,再添加一个用来显示放大镜的div元素。 CSS CSS代码是实现放大镜效果的重要部分,

    2024年02月02日
    浏览(67)
  • CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透

    一、什么是scoped 在vue文件中的style标签上,有一个特殊的属性:scoped。 当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染。 二、scoped的原理 为组件实例生成一个唯一标识,给组件中的每个标签对应的d

    2024年04月10日
    浏览(50)
  • 前端02:CSS选择器等基础知识

    CSS基础选择器、设置字体样式、文本样式、CSS的三种引入方式、能使用Chrome调试工具调试样式 HTML专注做结构呈现,样式交给CSS,即结构(HTML)和样式CSS相分离 CSS主要由量分布构成,选择器以及一条或多条声明 选择器:给谁改样式 声明:改什么样的样式 在head最后写上styt

    2023年04月25日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包