搜索

查看: 3064|回复: 11

[CSS/HTML] 利用模糊实现视觉3D效果实例讲解

[复制链接]
发表于 2023-5-4 16:48:22 | 显示全部楼层 |阅读模式
Editor 2023-5-4 16:48:22 3064 11 看全部
目录
  • 实现一个文字的 3D 变换
  • 实现文字的模糊
  • 使用模糊构建落叶效果本文较短,将介绍巧用模糊实现视觉 3D 效果的技巧。
    我们都知道,在正常的视觉效果中,离我们越近的通常我们会看的越清晰,而离我们较远则相对没那么清晰~
    我们可以利用清晰与模糊两种状态来构建视差效果。像是这样:

    202193103054895.gif

    202193103054895.gif


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

    实现一个文字的 3D 变换
    首先,我们需要实现一个文字的 3D 变换,这个比较简单。主要是借助 transform-style: preserve-3d 和 perspective,以及让文字绕 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 文字效果:

    202193103142178.gif

    202193103142178.gif


    实现文字的模糊
    这个效果已经有了初步的 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 让文字更立体点
    这样,我们可以最终得到如下效果:

    202193103239836.gif

    202193103239836.gif


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

    使用模糊构建落叶效果
    合理运用模糊,是能在没有 transform-style: preserve-3d 和 perspective 的加持下,也能构建出不错的 3D 效果。
    之前在 Youtube 的一个视频教学网站看到了下面这个落叶效果,就是利用模糊以及简单的层级关系,让整个画面看上去非常的真实:

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

    202193103350382.gif

    202193103350382.gif


    主要就是通过清晰与模糊两种状态的对比,速度的差异,来构建视差效果。
    CodePen Demo -- Falling leaves
    以上就是利用模糊实现视觉3D效果实例讲解的详细内容,更多关于模糊实现视觉3D的资料请关注知鸟论坛其它相关文章!
  • 知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 01:42:47 | 显示全部楼层
    123456865 2023-6-29 01:42:47 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 03:25:36 | 显示全部楼层
    墙和鸡蛋 2023-6-29 03:25:36 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 19:49:23 | 显示全部楼层
    李志敏 2023-6-29 19:49:23 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 20:52:39 | 显示全部楼层
    小妖花满楼满fx 2023-6-29 20:52:39 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 21:00:08 | 显示全部楼层
    音乐之家1 2023-6-29 21:00:08 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 22:05:11 | 显示全部楼层
    米老鼠和蓝精鼠v 2023-6-29 22:05:11 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 03:35:15 | 显示全部楼层
    掌舵的鱼1987 2023-6-30 03:35:15 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 09:41:32 | 显示全部楼层
    落败的青春阳落s 2023-6-30 09:41:32 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 14:42:54 | 显示全部楼层
    123456848 2023-6-30 14:42:54 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 赞兔论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表