前端实现给文字添加动态背景

news2024/12/27 12:45:54

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:前端实用小demo🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

目录

    • 📋 个人简介
  • 前言
    • 方式一:mix-blend-mode
      • 实现思路
      • 案例:文字火焰特效
      • 案例:文字闪电特效
    • 方式二:background-clip
      • 实现思路
      • 案例-文字波纹特效
    • 素材获取
  • 结语

前言

今天依旧更新一个前端有趣小案例,给文字添加动态背景,这篇博客我将用两种方式来实现这个效果!

方式一:mix-blend-mode

实现思路

这第一种方式的思路就是我们找一些特效素材,然后借用定位,将文字定位到这个视频素材上面,然后接下来将视频只显示在文字上才是最重要的!
这里就要借用css的一个属性mix-blend-mode。
下面来看看这个这个属性的介绍:

CSS3 新增了一个很有意思的属性 – mix-blend-mode ,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合混合模式,当然,我们通常称之为混合模式。
mix-blend-mode 用于多个不同标签间的混合模式 。
mix-blend-mode 描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合

主要值有:

mix-blend-mode: normal; // 正常
mix-blend-mode: multiply; // 正片叠底
mix-blend-mode: screen; // 滤色
mix-blend-mode: overlay; // 叠加
mix-blend-mode: darken; // 变暗
mix-blend-mode: lighten; // 变亮
mix-blend-mode: color-dodge; // 颜色减淡
mix-blend-mode: color-burn; // 颜色加深
mix-blend-mode: hard-light; // 强光
mix-blend-mode: soft-light; // 柔光
mix-blend-mode: difference; // 差值
mix-blend-mode: exclusion; // 排除
mix-blend-mode: hue; // 色相
mix-blend-mode: saturation; // 饱和度
mix-blend-mode: color; // 颜色
mix-blend-mode: luminosity; // 亮度

上面黄色背景的字体就是这个案例的实现原理,这里我再解释一下:
主要由三个元素背景进行叠加:

  1. 元素里字体的颜色,我们将其设为黑色字体。
  2. 元素背景颜色,即字体所在容器的背景色,我们将其设为白色
  3. 元素的直系父元素的颜色,这里父元素放置一个视频做背景,即颜色为视频颜色。

黑色和视频背景色叠加为色,白色和视频背景色叠加为白色,所以最终实现了文字颜色为视频背景色,即文字有了动态背景!

好了,接下来我们通过案例来看看!

案例:文字火焰特效

<!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">
    <title>给文字添加动态背景</title>
    <style>
        .container{
            position: relative; /*相对定位*/
        }
        .txt{
            position:absolute; /*绝对定位   --父相子绝*/
            width: 100%;
            height: 100%;
            left: 0;
            top: 0;
            background-color: #fff; /*元素背景颜色白色*/
            display: flex;
            justify-content: center; /* 成员居中对齐*/
            align-items: center;   /* 成员垂直对齐 */
            mix-blend-mode: screen;
        }
        .txt span{
            font-family:'KaiTi';
            color: #000; /*文字颜色黑色*/
            font-size: 12em;
            font-weight: bold;     
        }
    </style>
</head>
<body>
    <div class="container">
        <video src="动态火焰.mp4" width="100%" autoplay muted loop></video>
        <div class="txt">
            <span>馆主阿牛</span>
        </div> 
    </div>  
</body>
</html>

请添加图片描述

案例:文字闪电特效

现在代码都是一样的,我们只需更换所需要的视频就行,这里我在放一个闪电的。
请添加图片描述

方式二:background-clip

实现思路

background-clip: text 其核心就在于以区块内的文字作为裁剪区域向外裁剪,文字的背景即为区块的背景,文字之外的区域都将被裁剪掉。
简单而言,就是运用了 background-clip: text 的元素,其背景内容只保留文字所在区域部分,配合透明文字 color: transparent,就能够利用文字透出背景。
这里文字的背景我就用gif动图了,当然我们对于文字的背景可以用css做动画,也可以用一张静态图片,然后添加动画让图片动起来,这里我便用最简单的gif图片做动图了,对不会写动画的盆友比较友好!

案例-文字波纹特效

<!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">
    <title>给文字添加动态背景</title>
    <style>
        .txt{
            width:100%;
            font-size: 5em;
            font-weight: bold;
            text-align: center;
            background: url(./波纹.gif) no-repeat center;
            background-clip: text;
            -webkit-background-clip: text;
            color:transparent; /*文字颜色透明*/
        }

    </style>

</head>
<body>
    <div class="txt">馆主阿牛</div>
</body>
</html>

请添加图片描述

素材获取

素材都放到百度网盘了,需要的小伙伴自行去提取:
链接:https://pan.baidu.com/s/1sVUAijyvNBJ6mebu028QlQ
提取码:waan

结语

其实mix-blend-mode和background-clip这两个属性相结合可以弄出很多有趣的新花样,感兴趣的小伙伴可以去试试哦!

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉flask框架快速入门
👉java 小白到高手的蜕变

其他专栏请前往博主主页查看!

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

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

相关文章

【JAVA开发】提高开发效率的工具分享

代码管理工具 仓库&#xff1a; GitHub or GitLab or 本地仓库 版本控制&#xff1a; git or svn 推荐gitLabgit 多分支敏捷开发 开发工具 IDEA 最方便开发工具了 当然如何你是全栈也可以考虑使用VS(visual studio)、HBuider、AS(android studio) 文本工具 Sublime text …

Redis数据结构之整数集合

目录 基本数据结构 例子 升级 升级之后新元素的摆放位置 好处 降级 整数集合可以理解为一个有序&#xff08;升序&#xff09;的不允许元素重复的数组。 基本数据结构 intset会根据 编码格式分配空间。 例子 升级 当新添加的元素超过了当前编码格式所能 表示的范围&…

Linux常用命令工具

1、查找特定文本中的特定字符 cat filename | grep myStr eg: cat .config | grep KCOV 2、查找特定文本中的特定字符并打印具体行数 cat filename | grep -n myStr eg:: cat .config | grep -n KCOV 3、查找一个文件夹中的特定字符 grep -r myStr filedir eg: grep -r __NR_…

Mysql注入

&#x1f4aa;&#x1f4aa;mysql注入前言1.mysql之union注入1.1.判断是否有注入&#xff1a;1.2.信息收集1.3.进行注入1.4.完整注入实列2. mysql 跨库注入&#xff1a;2.1第一步就是找到数据库2.2第二步就是注入3.自己写union注入4.其他注入操作前言 &#x1f48e;&#x1f48…

JVM笔记:垃圾回收及垃圾回收算法

垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理&#xff0c;那么&#xff0c;这些垃圾对象所占的内存空间会一直保留到应用程序结束&#xff0c;被保留的空间无法被其他对象使用。甚至可能导致内存溢…

【Vue项目回顾】网络模块的封装

选择什么网络模块 选择一: 传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢? 非常好解释, 配置和调用方式等非常混乱.编码起来看起来就非常蛋疼.所以真实开发中很少直接使用, 而是使用jQuery-Ajax 选择二: 在前面的学习中, 我们经常会使用jQuery-Ajax 相对于传统的A…

【PyTorch深度学习项目实战100例】—— 基于Pytorch的语音情感识别系统 | 第71例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

C#和Python使用C++编译的dll

C代码如下: extern "C" __declspec(dllexport) int __stdcall add(int a, int b) {return a b; } 因为是显示链接&#xff0c;所以只需要获得生成的dll即可 因为C#无法直接调用C的dll&#xff0c;所以我们使用了extern"C" 使用vs自带的工具x86_x64 Cross…

Vue中KeepAlive 原理与源码分析

概念 keep-alive是Vue的一个内置实例&#xff0c;用于缓存组件。当keep-alive包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是摧毁它们。keep-alive 是一个抽象组件&#xff1a;它自身不会渲染一个 DOM 元素&#xff0c;也不会出现在父组件链之中。如需要…

网课查题API接口-搜题api

网课查题API接口-搜题api 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#x…

小学生python游戏开发pygame--设置内容整理

游戏开发&#xff0c;相关设置内容单独放在一个文件中 如长宽&#xff0c;大小&#xff0c;颜色等起名shezhi.py&#xff0c;如下&#xff1a; # _*_ coding: UTF-8 _*_ # 开发团队&#xff1a; 信息化未来 # 开发人员&#xff1a; Administrator # 开发时间&#xff1a;2022…

微信小程序中如何实现省市区街道四级地址级联选择

大家好&#xff0c;我是雄雄。 前言 微信小程序中支持省市区地址级联吗&#xff1f;微信小程序中的地址级联最多支持到几级&#xff1f; 今天&#xff0c;我们就来看看&#xff0c;微信小程序中的地址级联的使用&#xff0c;以及一些坑…希望大家看完之后能避免踩坑啊。 省市…

JS(受人以鱼 不如受人以渔)第十七课

比你优秀的人都比你努力&#xff0c;你有什么理由不去努力。基础来自己的累秒累天累月的积累 没有一个人是从天而降的天才&#xff0c;也没有哪个人想做一个一生贫庸的人。今天我想说 受人以鱼 不如受人以渔 推荐几个官网可以自己主动去学习 JavaScript中文网-JavaScript教程…

虚拟物品(游戏)交易平台的设计与实现(Java+SSM+MySQL)

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景及意义 1 1.2研究现状 1 1.3研究主要内容 2 第2章 相关技术介绍 4 1.1 SSM的技术原理 4 1.1.1 SSM语言及其特点 4 1.1.2 Java及Java Servlets概述 6 1.1.3 JavaBean简介 6 1.2 服务器配置 7 1.2.1 Tomcat安装及配置 7 1.2.2…

工业控制系统所面临的安全威胁

年新增漏洞严重程度分析 因本文收集处理的公开漏洞基本上都被 CVE 所收录&#xff0c; 所以本文在分析这些漏洞的严重 性时&#xff0c;将主要根据 CVE 的 CVSS 评估值①来判断&#xff0c;并划分为高、中、低三种情况。 根据图 2.9 的统计分析 &#xff0c;2013 年的新增漏洞…

MySQL索引优化

索引优化 EXPLAIN查询分析 参考另一篇&#xff0c;通过explain我们可以确定查询语句的访问类型&#xff0c;用到的索引&#xff0c;扫描行数以及extra信息。 回表查询与覆盖索引 InnoDB索引有聚簇索引和辅助索引。聚簇索引的叶子节点存储行记录&#xff0c;InnoDB必须要有&…

sql查询面试题复习

基础 查所有的数据 select * from user_profile;查询某几列 select device_id,gender,age,university from user_profile;取出学校的去重数据。 select distinct university from user_profile; #distinct 关键字查看前2个用户明细设备ID数据 select device_id from user_p…

反射、枚举和lambda表达式

文章目录一、反射反射的相关类获得Class对象的三种方法反射的基本使用反射优点和缺点二、枚举背景及定义枚举的使用为什么Enum源码中找不到values()方法&#xff1f;枚举与反射总结三、Lambda表达式函数式接口Lambda表达式的基本使用lambda在集合中的应用总结一、反射 Java的反…

SQL(及存储过程)跑得太慢怎么办?

SQL作为目前最常用的数据处理语言&#xff0c;广泛应用于查询、跑批等场景。当数据量较大时&#xff0c;使用SQL&#xff08;以及存储过程&#xff09;经常会发生跑得很慢的情况&#xff0c;这就要去优化SQL。优化SQL有一些特定的套路&#xff0c;通常先要查看执行计划来定位SQ…

性能优化:MySQL使用优化(1)

参考资料&#xff1a; 《explain | 索引优化的这把绝世好剑&#xff0c;你真的会用吗&#xff1f;》 《一张图彻底搞懂MySQL的 explain》 《MySQL 性能优化神器 Explain 使用分析》 《MySQL索引应用篇&#xff1a;建立索引的正确姿势与使用索引的最佳指南&#xff01;》 《…