前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >『前端必修课』视频文字特效

『前端必修课』视频文字特效

原创
作者头像
程序员 NEO
修改于 2024-11-27 01:15:13
修改于 2024-11-27 01:15:13
8200
代码可运行
举报
文章被收录于专栏:前端必修课前端必修课
运行总次数:0
代码可运行

推荐文章

简介

链接

深入解析Vue Router:路由配置的艺术与科学

这篇文章是Vue Router的全面指南,从基础安装到高级应用,内容覆盖广泛,讲解清晰,是Vue开发者必备的参考资料。

一、前言

🐤本篇文章是『前端必修课』系列文章的第 1 篇,主要介绍视频文字特效

文字燃烧怎么做?这个东西呢,可能跟很多人想象的并不一样,有的人会想象呢我就做一个燃烧的背景,是吧?然后呢再把文字的颜色呢设置为透明颜色,不就完事了吗?

不是的你要做不出来的,为啥呢,因为这个背景呢,它是个视频,你怎么把一个视频当成背景呢?所以说这篇文章,就是讲解具体的做法,得使用混合,具体怎么做呢,这代码写起来还是比较简单的。

二、实现过程

首先自行搭建一个基本的结构项目,这里我不讲解,然后就是准备一个视频,视频你自行去找吧就,我是去网上找的一个火焰燃烧的视频如下图:

项目的基本结构如下:

  • 1.mp4:本次的视频素材
  • index.html:项目的入口
  • index.css:项目的样式

首先要在 index.html 中准备好两个元素,分别是 video,div,一个是视频一个是文字,浏览器看一下效果:

上面是视频,下面呢是一个文字:

代码语言:html
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>视频文字特效</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
<div class="container">
    <video src="./1.mp4" autoplay muted loop></video>
    <div class="txt">NEO</div>
</div>
</body>
</html>

然后接下来就到 CSS 里面去看一下样式,我就是先简单的给文字设置了一下样式:

代码语言:css
AI代码解释
复制
.container .txt {
    color: #000;
    font-size: 10em;
    font-weight: bold;
    font-family: "华文宋体";
}

在给文字部分设置为绝对定位,在设置 inset 0 就是四个方向全为 0,这样呢,文字就盖上去了:

代码语言:css
AI代码解释
复制
.txt {
    position: absolute;
    inset: 0;
}

然后再让文字居中一下,display: flex; 横向居中,然后纵向居中:

代码语言:diff
AI代码解释
复制
.txt {
+   display: flex;
+   justify-content: center;
+   align-items: center;
}

这里虽然文字居中了,视觉效果还是不太好,所以我这里将视频进行横向铺满,更改 index.html:

代码语言:html
AI代码解释
复制
<div style="width: 100%; height: 100vh; overflow: hidden;">
    <video
            src="./1.mp4"
            autoplay
            muted
            loop
            style="width: 100%; height: 100%; object-fit: cover;">
    </video>
</div>

在 video 标签上套了一个 div,设置了 width: 100%height: 100%:让视频适应容器尺寸。object-fit: cover:保持视频比例填充容器,可能裁剪部分内容,但不会变形。

这个效果就好多了。

好,接下来看好了,只需要两句代码就可以实现文字燃烧,怎么来做呢?第一句代码,背景颜色为白色注意这个是设置文字的背景颜色为白色来看看效果:

代码语言:diff
AI代码解释
复制
.txt {
+   background: #fff;
}

运行到浏览器查看效果:

哎,视频没有了,好看好,第二行代码叫 mix-blend-mode,设置文字的混合模式为 screen,保存,看看效果就是本次的燃烧特效。

就是这么简单,而且不管那个背景的那个视频是啥,它都能够显现出背景的视频,那为什么会产生这样的效果呢?接下来就得要解释 mix-blend-mode: screen; 了。

三、mix-blend-mode

3.1 mix-blend-mode 是什么?

首先解释 mix-blend-mode,这个玩意叫做 混合,混合的本质是啥呢?其实就是一个函数,这个函数的作用呢就是传入两个颜色,然后经过这个函数的运算,得到一个新的颜色。

例如:f(颜色1,颜色2) return 新的颜色。

注意点:这个函数的运算,它是针对每一个像素点的

这就是为什么我要把它设置为撑满整个父元素,啥意思呢?就是说这个 txt 这个元素,它里面每一个像素点,都要经过 f(颜色1,颜色2) return 新的颜色 这个运算规则,来产生一个新的颜色。

像素点就是浏览器中的像素点,那么 f(颜色1,颜色2) return 新的颜色 中的颜色1是啥呢?颜色1就是txt元素里面的每一个像素点,比如说如下图的这个像素点:

它是什么颜色,是不是白色,好这是第一个颜色,颜色1,那么第二个颜色是啥呢,就是这个像素点背后的颜色,啥意思:

上图我圆圈框出来的位置这个像素点,背后是不是一个视频,视频对应的那个像素点的颜色,这就是两个颜色,它把这两个颜色通过一个运算,产生一个新的颜色,这个新的颜色就是这个像素点:

如上图我圆圈框选出来的这个像素点它最终产生的颜色。对于这个像素点是如此,对于所有的这个元素里面的所有像素点全部要通过这个运算来运算一遍。那有人会说,这个玩意会不会有效率问题?

你完全不用担心效率问题,效率非常高,好现在说明白了这个属性的含义,就是通过一个函数来进行运算,针对每一个像素点来运算一遍,得到新的像素点,那么到底怎么来运算呢?怎么来运算靠的就是 screen 这个属性值,它有不同的属性值,就决定了它的不同的运算方式。

3.2 screen 属性值

我目前用的属性值是 screen 它的运算方式是啥呢?

它是这样来进行运算的,它是 255 减去 255 减 A,然后乘以 255 减 B 然后除以一个 255:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
255-(255-A)(255-B)/255

这里面的 A 和 B 是啥,A 就是颜色1,B 就是颜色2,那么颜色1里边是不是就 RGB 对不对,把 R 拿过来,把 B 的 R 拿过来,算出新的 R,然后把 A 的 G 拿过来,把 B 的 G 拿过来,算出新的 G,然后把 A 的 B 拿过来,把 B 的 B 拿过来,算出新的 B。

RGB 分开运算,懂这意思吧,好,那么这个运算有什么特点呢?想这个 screen 这种运算方式,它有这么一个特点如果说某一个颜色是白色的话,比方说颜色1是白色,你看这些像素点是不是全是白色,如下图:

这些是不是都是白色,白色的像素点有什么特点?白色是不是255,其中一个颜色是 255,那么 255-(255-A)(255-B)/255 255-A 算出来个是个啥,是不是 0,255-(255-A)(255-B)/255 255-A 算出来是 0 的话那么,(255-B)/255 这一坨算出来是不是全是 0,最终就是255,也就是说,颜色1或者是颜色2,只要有一个颜色是白色的话,算出来的结果一定是白色,就是白色跟任何颜色进行 screen 来进行运算的话,得到的结果一定是白色,这就解释了为什么浏览器中所看到的点是白色,以及呢为什么我要把它背景设置为白色,设置白色的原因。

我想让除了文字以外的点保持白色,然后如果说另外一种情况呢,某一个颜色是黑色呢?比方说 255-(255-A)(255-B)/255 中的 A 这个颜色是黑色,A 就是 0 对不对,那么状态是啥,255-(255-A)(255-B)/255 就可以演变到了 255-255(255-B)/255-255/255 可以约掉。约掉的话那么这个算出来是啥最终公式为:

255(255-B)

这个算出来的是啥,算出来的不就是 B 吗,因此得出来黑色跟任何一个颜色来进行运算的话得到的结果都是另一个颜色!!!

所以说你可以看到文字它由于是黑色,因此它算出来呢它就会把背后的那个视频的颜色展现出来,这就是为什么这个文字部分它是可以完成透视到背后的背景的原因,这就解释清楚了,当然你要说什么情况下用什么样的函数来进行运算那我就不清楚了这个问题要去问设计师,我只知道这些不同的取值,它的颜色运算的方式。

那具体在什么场景下,要用那个颜色,用那个运算方式这个问题最好去问设计师他比较轻清楚一点。

四、总结

通过本文的学习,您可以掌握以下知识点:

  • 1.视频与文字的融合特效:通过 mix-blend-modescreen 属性值,轻松实现文字与背景视频的完美融合,形成炫酷的文字燃烧效果。
  • 2.混合模式的基础原理:理解了混合模式的工作方式:通过每个像素点的颜色计算生成新的颜色,并通过公式分析了 screen 模式的特点和运算原理。
  • 3.实用性与适配性:掌握了如何通过 CSS 的 object-fit 属性,让视频适应容器尺寸,保持良好的视觉效果,同时避免变形。
  • 4.灵活运用混合模式:明白了如何根据实际需求调整混合模式的不同属性值,灵活打造多样化的视觉效果。

希望本文对您有所启发,如果您喜欢这篇文章,不妨点赞、收藏或分享给更多需要的朋友!您的支持是我创作的最大动力! 😊

如果有任何疑问或讨论的地方,欢迎在评论区留言,让我们共同进步!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
神奇的 CSS,让文字智能适配背景颜色
页面上有一段文本,能否实现这段文本在不同背景色下展示不同的颜色?也就是俗称的智能变色。像是下面这样:
Sb_Coco
2022/04/28
2.2K0
神奇的 CSS,让文字智能适配背景颜色
超强的苹果官网滚动文字特效实现
每年的苹果新产品发布,其官网都会配套更新相应的单页滚动产品介绍页。其中的动画特效都非常有意思,今年 iPhone 14 Pro 的介绍页不例外。
Sb_Coco
2022/10/31
2.3K0
奇思妙想 CSS 文字动画
本文将会和这篇 -- CSS 奇思妙想边框动画类似,讲一些文字效果,利用不同的属性搭配,实现各式各样的文字动效。
Sb_Coco
2021/03/11
3.5K0
奇思妙想 CSS 文字动画
mix-blend-mode 利用混合模式让文字智能适配背景颜色
我们可以发现,代码非常简单,关键是这个属性:mix-blend-mode: difference
白雾茫茫丶
2024/05/22
1870
mix-blend-mode 利用混合模式让文字智能适配背景颜色
谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节。 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧。 不断更新,不断更新,不断更新,重要的事情说三遍。 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣的CSS题目
Sb_Coco
2018/05/28
9140
CSS中的混合模式,制作高级特效的必备技巧 进入mix-Blend-Mode
在CSS中,有两个属性负责混合。 mix-blend-mode用于混合DOM元素,background-blend-mode用于组合多个CSS背景。
前端小智@大迁世界
2020/05/26
3.6K0
CSS中的混合模式,制作高级特效的必备技巧
                            进入mix-Blend-Mode
视频中间的文字竟然还能这样玩?CSS 色彩差值混合技巧
友儿
2024/08/16
1040
视频中间的文字竟然还能这样玩?CSS 色彩差值混合技巧
CSS 奇技淫巧 | 妙用混合模式实现文字镂空波浪效果
本文将介绍一个小技巧,通过混合模式 mix-blend-mode 巧妙的实现文字的镂空波浪效果。
Sb_Coco
2021/09/29
1K0
CSS 奇技淫巧 | 妙用混合模式实现文字镂空波浪效果
动效案例:纯手工写一个滚动视差效果
大家好,今天我们一起来实践一个滚动视差的动画效果。虽然我们不是设计师,不擅长PS、AE,但是我们完全可以通过前端技术设计一幅漂亮的画面,今天我们要设计一幅月下山间小道开车视觉动效。在介绍之前,我们首先了解下什么是滚动视差,有助于我们实现这个案例。
前端达人
2020/04/01
2.1K0
动效案例:纯手工写一个滚动视差效果
除了 filter 还有什么置灰网站的方式?
当然,通常而言,全站置灰是非常简单的事情,大部分前端同学都知道,仅仅需要使用一行 CSS,就能实现全站置灰的方式。
@超人
2023/05/12
8520
除了 filter 还有什么置灰网站的方式?
不可思议的混合模式 background-blend-mode
本文接前文:不可思议的混合模式 mix-blend-mode 。由于 mix-blend-mode 这个属性的强大,很多应用场景和动效的制作不断完善和被发掘出来,遂另起一文继续介绍一些使用 mix-blend-mode 制作的酷炫动画。 CSS3 新增了一个很有意思的属性 -- mix-blend-mode ,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合混合模式,当然,我们我们通常称之为混合模式。 混合模式最常见于 photoshop 中,是 PS 中十分强大的功能之
Sb_Coco
2018/05/28
7970
CSS 实现“故障”特效
这些效果要是综合运用到业务中应该很吸引眼球。今日早读文章由腾讯@chokcoco投稿分享。
Nealyang
2020/02/19
2.3K0
CSS 实现“故障”特效
【动画进阶】极具创意的鼠标交互动画
思索了一番,觉得这个效果利用 CSS 配合部分 Javascript 代码完全也是可以做到的。
Sb_Coco
2024/05/12
2910
【动画进阶】极具创意的鼠标交互动画
使用 backdrop-filter 实现滤镜遮罩
当然,通常而言,全站置灰是非常简单的事情,大部分前端同学都知道,仅仅需要使用一行 CSS,就能实现全站置灰的方式。
Sb_Coco
2022/12/13
2.8K0
使用 backdrop-filter 实现滤镜遮罩
css特殊操作和效果
(8) 渐变 background-image: repeating-linear-gradient(red, yellow 10%, green 20%);
前端小tips
2021/12/07
4150
css特殊操作和效果
现代 CSS 解决方案:文字颜色自动适配背景色!
其核心功能就是,让我们能够基于一个现有颜色 A,通过一定的转换规则,快速生成我们想要的颜色 B。
Sb_Coco
2024/01/09
9080
现代 CSS 解决方案:文字颜色自动适配背景色!
【Web前端】CSS 高级区块效果
CSS提供了多种工具和属性,使我们能够创建视觉上引人注目的效果。今天我们继续将深入了解几种高级CSS效果:盒子阴影、滤镜、混合模式和文本背景裁剪,提升网页设计的质感和深度。
一条晒干的咸鱼
2024/11/19
770
【Web前端】CSS 高级区块效果
轻松使用纯css3打造有点意思的故障艺术(附React加强组件版)
很早之前就看到国外很多酷炫的网站在实践"故障艺术", 或者错位动画", 感觉非常有意思, 现在APP端的抖音启动界面有着这种设计的影子, 作为一名用于探索未知的前端工程师, 有必要好好实践一下这一设计.
徐小夕
2020/07/22
6750
CSS 3.0中的混合模式的妙用
给大家分享一个用CSS 3.0的混合模式实现的特效,不用给文字设置多种颜色,滚动页面时,能够让文字能够根据背景颜色自动发生改变,效果如下:
越陌度阡
2020/11/26
5800
CSS 3.0中的混合模式的妙用
开局一张图,构建神奇的 CSS 效果
在这篇文章中 --CSS 故障艺术,我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。有点类似于抖音的 LOGO。
Sb_Coco
2022/12/20
5521
开局一张图,构建神奇的 CSS 效果
推荐阅读
相关推荐
神奇的 CSS,让文字智能适配背景颜色
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文