首页 > 其他分享 >巧用视觉障眼法,还原 3D 文字特效

巧用视觉障眼法,还原 3D 文字特效

时间:2023-01-03 10:58:11浏览次数:52  
标签:动画 translateZ 效果 transform 障眼法 文字特效 CSS 3D

最近群里有这样一个有意思的问题,大家在讨论,使用 CSS 3D 能否实现如下所示的效果:

这里的核心难点在于,如何利用 CSS 实现一个立体的数字?CSS 能做到吗?

不是特别好实现,但是,如果仅仅只是在一定角度内,利用视觉障眼法,我们还是可以比较完美的还原上述效果的。

利用距离、角度及光影构建不一样的 3D 效果

这是一种很有意思的技巧,在 奇思妙想 CSS 3D 动画 | 仅使用 CSS 能制作出多惊艳的动画? 我们曾经介绍过,当然,制作的过程需要比较多的调试。

合理的利用距离、角度及光影构建出不一样的 3D 效果。看看下面这个例子,只是简单是设置了三层字符,让它们在 Z 轴上相距一定的距离。

简单的伪代码如下:

<div>
  <span class='C'>C</span>
  <span class='S'>S</span>
  <span class='S'>S</span>
  <span></span>
  <span class='3'>3</span>
  <span class='D'>D</span>
</div>
$bright : #AFA695;
$gold : #867862;
$dark : #746853;
$duration : 10s;
div {
	perspective: 2000px;
	transform-style: preserve-3d;
	animation: fade $duration infinite;
}
span {
	transform-style: preserve-3d;
	transform: rotateY(25deg);
	animation: rotate $duration infinite ease-in;
	
	&:after, &:before {
		content: attr(class);
		color: $gold;
		z-index: -1;
		animation: shadow $duration infinite;
	}
	&:after{
		transform: translateZ(-16px);
	}
	&:before {
		transform: translateZ(-8px);
	}
}
@keyframes fade {
	// 透明度变化
}
@keyframes rotate {
	// 字体旋转
}
@keyframes shadow {
       // 字体颜色变化
}

简单捋一下,上述代码的核心就是:

  1. 父元素、子元素设置 transform-style: preserve-3d
  2. span 元素的两个伪元素复制两个相同的字,利用 translateZ() 让它们在 Z 轴间隔一定距离
  3. 添加简单的旋转、透明度、字体颜色变化

可以得到这样一种类似电影开片的标题 3D 动画,其实只有 3 层元素,但是由于角度恰当,视觉上的衔接比较完美,看上去就非常的 3D。

22.gif

为什么上面说需要合理的利用距离、角度及光影呢?

还是同一个动画效果,如果动画的初始旋转角度设置的稍微大一点,整个效果就会穿帮:

可以看到,在前几帧,能看出来简单的分层结构。又或者,简单调整一下 perspective,设置父容器的 perspective2000px 改为 500px,穿帮效果更为明显:

也就是说,在恰当的距离,合适的角度,我们仅仅通过很少的元素,就能在视觉上形成比较不错的 3D 效果。

上述的完整代码,你可以猛击这里:CSS 灵感 -- 3D 文字出场动画

基于,这个技巧,我们简单的改造一下,我们首先替换一下文字效果:

<div>
  <span class='2'>2</span>
  <span class='0'>0</span>
  <span class='2'>2</span>
  <span class='3'>3</span>
</div>

这样,我们就可以得到这样一种效果:

Wow,有点那个意思了。接下来,我们需要换上喜庆的文字效果。首先,随便在网上找一找烟花 Gif 图,也许是这样:

我们通过 background-clip: text,给 3 层文字都加上类似这个效果,核心伪代码如下:

span {
	position: relative;
	transform-style: preserve-3d;
	color: transparent;
	background: url(xxx.gif);
	background-clip: text;
	
	&:after, &:before {
		position: absolute;
		content: attr(class);
		color: transparent;
		background: url(xxx.gif);
	        background-clip: text;
	}
	
	&:before {
		transform: translateZ(-12px);
	}
	&:after {
		transform: translateZ(-6px);
	}
}

这样,我们就得到了带有烟花效果的文字,以及,一点 3D 效果:

还剩下最后一步,倒影效果怎么制作呢?

方法有很多种,比较便捷的是使用 webkit-box-reflect 元素。只需要一行代码即可:

div {
    //...
    -webkit-box-reflect: below -6vw linear-gradient(transparent 20%, rgba(255,255,255, .6));
}

当然,如果对两个伪元素生成的字形成的 3D 文字视觉上的厚度不满意,也可以同步去调整两个伪元素的 transform: translateZ(-6px) 的值,经过一番调整后,我们就简单的复刻了如题图所示的 2023 3D 文字动画效果:

88.gif

完整的代码,你可以戳这里:CodePen Demo -- CSS 3D 2023

最后

好了,本文到此结束,非常有意思的一个小技巧,希望本文对你有所帮助

标签:动画,translateZ,效果,transform,障眼法,文字特效,CSS,3D
From: https://www.cnblogs.com/coco1s/p/17021406.html

相关文章

  • 透彻感知 数字孪生智慧隧道Web3D可视化监控系统
    今天为大家分享一个采用数维图的Sovit3D构建轻量化3D可视化场景的案例——智慧隧道三维可视化系统。多维度呈现隧道内外场景,实现隧道内态势的实时监测,运维设备、控制......
  • AutoCAD Civil3D 2023安装图文教程
    ​Civil3D2023简单介绍Civil3D设计软件是土木工程师的首选软件,也是民用大众领域的综合解决方案,同时Civil3D提供了AutoCAD和AutoCADMap3D的功能,该软件使用基于模型的......
  • 《3D绘图程序设计》彭国伦
    本书分3个部分。第1~10章介绍传统的固定绘图流程和基本3D绘图概念,包括坐标转换、动画与交互、打光、贴图、混合与纹理、动态贴图、StencilBuffer和特效处理等内容。第11~1......
  • convex Adam | 快速3D配准 | Learn2Reg 2021
    微信公众号:机器学习炼丹术笔记:陈亦新参考论文:Fast3Dregistrationwithaccurateoptimisationandlittlelearningforlearn2Reg2021相关代码:​​github.com/multimoda......
  • 3D视觉算法初学概述
    SLAM是SimultaneousLocalizationandMapping的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器(单目、双目、RGB-D相机、Lidar)的主体,在没有环境先验......
  • P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior
    1.论文简介论文题目:P3Depth:MonocularDepthEstimationwithaPiecewisePlanarityPriorPaper地址:paperCode地址:GithubPaper简单评论:个人觉得是2022CVPR上depth......
  • Live Home 3D Pro - 用于公寓和房屋的室内设计,支持 3D 实时渲染
    LiveHome3DPro是一个直观的应用程序,用于公寓和房屋的室内设计,以及几乎任何复杂的景观。专业版提供了一套扩展的工具和独特的出口质量。下载►LiveHome3DPro下......
  • 3D模型场景展示制作哪家公司靠谱?
    近几年,随着3D建模技术的飞速进步,3D内容的创作展现形式也在快速地推陈出新。许多展厅、展会、展品都开始与3D、VR、Al等技术相融合,提供3D化的场景展示,打破传统时间和空间的......
  • VTK_Learning_体绘制讨论_光照&阴影、VTKLODProp3D
    1.光照与阴影通过VTKVolumeProperty可以设置体绘制阴影效果(Shading)。阴影效果主要受环境光系数、散射光系数、反射光系数和高光强度四个参数影响。vtkVolumeProperty::SetAm......
  • CodeForces 1163D Mysterious Code
    洛谷传送门CF传送门zxx的题单来的(发一个无脑kmp自动机+dp做法。看到题就很dp,考虑设计状态。显然填字母时要知道当前串与\(s,t\)的匹配位数,否则就不知道\(s,......