千家信息网

怎么用filter和transform-style属性创建视觉3D特效

发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要讲解了"怎么用filter和transform-style属性创建视觉3D特效",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用filt
千家信息网最后更新 2025年02月19日怎么用filter和transform-style属性创建视觉3D特效

这篇文章主要讲解了"怎么用filter和transform-style属性创建视觉3D特效",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用filter和transform-style属性创建视觉3D特效"吧!

我们都知道,在正常的视觉效果中,离我们越近的通常我们会看的越清晰,而离我们较远则相对没那么清晰~

我们可以利用清晰模糊两种状态来构建视差效果。像是这样:

而在 CSS 中,我们可以利用模糊滤镜 filter: blur()transform-style: preserve-3d 来实现它们。

实现一个文字的 3D 变换

首先,我们需要实现一个文字的 3D 变换,这个比较简单。主要是借助 transform-style: preserve-3dperspective,以及让文字绕 Y 轴进行旋转即可。

简单的代码如下:

CSS3DEFFECT

body {    perspective: 160vmin;}p {    font-size: 24vmin;    transform-style: preserve-3d;    animation: rotate 10s infinite ease-in-out;}@keyframes rotate {    0% {        transform: rotateY(-45deg);    }    50% {        transform: rotateY(45deg);    }    100% {        transform: rotateY(-45deg);    }}

我们就可以得到这样一个 3D 文字效果:

实现文字的模糊

这个效果已经有了初步的 3D 效果,但是仅仅是这样,会觉得少了些什么。接下来我们就需要补充一下模糊的效果,让距离我们近的文字清晰,远离我们的文字模糊。

但这样就需要对每个文字进行精细化处理,上面的 HTML 结构无法做到对每一个文字的单独处理,我们简单改造一下结构:

C S S 3 D E F F E C T

完整的代码大概是这样:

@import url('https://fonts.googleapis.com/css2?family=Lobster&display=swap');$count: 12;body, html {    font-family: 'Lobster', cursive;    perspective: 160vmin;    overflow: hidden;}p {    margin: auto;    font-size: 24vmin;    transform-style: preserve-3d;    animation: rotate 10s infinite ease-in-out;        span {        text-shadow:             1px 1px 0 rgba(0, 0, 0, .9),            2px 2px 0 rgba(0, 0, 0, .7),            3px 3px 0 rgba(0, 0, 0, .5),            4px 4px 0 rgba(0, 0, 0, .3),            5px 5px 0 rgba(0, 0, 0, .1);                &:nth-child(-n+5) {             animation-delay: -5s;         }    }}@for $i from 1 to 7 {    span:nth-child(#{$i}),     span:nth-last-child(#{$i}) {        animation: filterBlur-#{$i} 10s infinite ease-in-out;    }    @keyframes filterBlur-#{$i} {        0% {            filter: blur(0px) contrast(5);        }        50% {            filter: blur(#{7 - $i}px) contrast(1);        }        100% {            filter: blur(0px) contrast(5);        }    }}@keyframes rotate {    0% {        transform: rotateY(-45deg);    }    50% {        transform: rotateY(45deg);    }    100% {        transform: rotateY(-45deg);    }}

简单解析下,这里有几个小技巧,仔细观察我们需要的效果:

  1. 第一个字符和最后一个字符在旋转的最左效果和最右效果下分别会离我们最近和最远,它们的效果其实应该是一致的,所以第一个字符和最后一个字符应该统一处理,依次类推,第二个字符和倒数第二字符统一处理,这里可以借助 SASS 利用 :nth-child:nth-last-child 高效编写 CSS 代码

  2. 每次有一半是清晰的,一半的是模糊的,需要区分对待,利用 animation-delay 让一半的动画延迟一半进行

  3. 可以再配合 text-shadow 让文字更立体点

这样,我们可以最终得到如下效果:

完整的代码,你可以戳这里 -- CSS 灵感 -- 利用 filter:blur 增强文字的 3D 效果

https://csscoco.com/inspiration/#/./filter/use-filter-blur-enhance-text-3d-effect

使用模糊构建落叶效果

合理运用模糊,是能在没有 transform-style: preserve-3dperspective 的加持下,也能构建出不错的 3D 效果。

譬如下面这个落叶效果,就是利用模糊以及简单的层级关系,让整个画面看上去非常的真实:

Falling Leaves

// 重复第二组
// 重复第三组
.leaf {  position: absolute;  width: 100%;  height: 100%;  top: 0;  left: 0;}.leaf img {  width: 75px;  height: 75px;}.leaf div:nth-child(1) {  left: 20%;  animation: fall 22s linear infinite;  animation-delay: -2s;}.leaf div:nth-child(2) {  left: 70%;  animation: fall 18s linear infinite;  animation-delay: -4s;}.leaf div:nth-child(3) {  left: 10%;  animation: fall 21s linear infinite;  animation-delay: -7s;}.leaf div:nth-child(4) {  left: 50%;  animation: fall 24s linear infinite;  animation-delay: -5s;}.leaf div:nth-child(5) {  left: 85%;  animation: fall 19s linear infinite;  animation-delay: -5s;}.leaf div:nth-child(6) {  left: 15%;  animation: fall 23s linear infinite;  animation-delay: -10s;}.leaf div:nth-child(7) {  left: 90%;  animation: fall 20s linear infinite;  animation-delay: -4s;}.leaf2 {  transform: scale(1.6) translate(5%, -5%) rotate(15deg);  filter: blur(1px);  z-index: 10;}.leaf3 {  filter: blur(2px);  transform: scale(0.8) translate(-5%, 10%) rotate(170deg);}@keyframes fall {  0% {    top: -30%;    transform: translateX(20px) rotate(0deg);  }  20% {    transform: translateX(-20px) rotate(45deg);  }  40% {    transform: translateX(20px) rotate(90deg);  }  60% {    transform: translateX(-20px) rotate(135deg);  }  80% {    transform: translateX(20px) rotate(180deg);  }  100% {    top: 150%;    transform: translateX(-20px) rotate(225deg);  }}

主要就是通过清晰模糊两种状态的对比,速度的差异,来构建视差效果。

感谢各位的阅读,以上就是"怎么用filter和transform-style属性创建视觉3D特效"的内容了,经过本文的学习后,相信大家对怎么用filter和transform-style属性创建视觉3D特效这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

效果 文字 视觉 字符 属性 特效 代码 处理 就是 学习 内容 状态 结构 落叶 视差 变换 统一 不错 最远 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库应用在超市论文 惠普服务器 初始密码 省图书馆网络安全解决方案 杨浦区品牌软件开发服务电话 宝塔面板插件怎么换服务器 支付宝里怎么搭建服务器 计算机网络技术升本考试试题 网吧管理依据网络安全法处罚 安徽跃讯网络技术 服务器磁盘管理基础知识 广东erp软件开发外包 专科计算机能学软件开发吗 软件开发 需要的团队 广州东信网络技术有限公司 协议软件开发工程师 坦克世界登陆显示服务器忙 自动化和网络安全工程师 山东春考网络技术类 蚂蚁互联网络科技 甘肃黑犇互联网科技有限公司 电脑软件开发项目经验 网络技术支持面试题 软件开发商开发运维模式 海淀区实用软件开发报价 数据库脱敏开源系统 物流软件开发零基础实习生 腾讯微信的数据库在天津港吗 天津点金网络技术有限公 我的世界ios服务器 专科学软件开发需要多少分
0