CSS 之 文字交融展开效果

一、简介

​ 本次要介绍的是文字交融展开的CSS动画效果,具体效果如下面的gif图所示。该效果看起来很简单,但实际上实现起来也很简单,其中用到了帧动画、letter-spacingfilter: blur()filter: contrast()opacity等相关CSS知识点。

​ 相对于普通的静态文字样式,该效果更加生动有趣,突出重点文字,吸引用户的兴趣和注意力,可以用于网站首页标题、广告宣传等场景。

案例效果:

在这里插入图片描述

慢放细节:

在这里插入图片描述

二、具体实现

1、实现思路

​ ① 首先要考虑如何将文字重叠在一起,位移、定位都可以做到,但是都太麻烦,可以使用CSS的letter-spacing字间距属性,根据文字具体大小设置为一个合适的负值,将文字重叠在一起。

​ ② 此时文字还仅仅是单纯的重叠,并没有实现融合。因为文字是白底黑字的样式效果,所以可以通过设置文字的blur高斯模糊,结合设置父元素的contrast对比度,去掉文字中因高斯模糊导致整体色值偏向于背景色的部分 ,实现类似于文字融合效果。

③ 接下来实现文字展开效果,由于文字展开需要一个过程,因此可以使用帧动画来实现,定义初始状态和最终状态,通过letter-spacingblur属性值的变化,将文字从初始融合状态,变为最终的文字展开状态。

​ ④ 在文字元素上使用该帧动画,并通过设置动画的填充模式,使动画结束后,文字能保持在最终展开状态。

​ ⑤ 由于初始状态时,文字完全重叠融合为一个黑色块,为了更好的页面效果,初始使其透明度为0,在页面上不显示,等文字展开到一定程度后再调整透明度显示。

2、实现代码
<!-- dom结构 -->
<p>
  <span>自由 平等 公正 法制 爱国 敬业 诚信 友善</span>
</p>

<!-- css样式 -->
<style>
    /* 定义展开动画  */
    @keyframes TextExpend {
      /* 初始状态 透明度为0 字间距为-39px 高斯模糊度3px */
      /* 此时文字重叠 经过高斯模糊和父元素的高对比度 融合为一个黑色块 为了美观 初始阶段不在页面显示 */
      0% {
        opacity: 0;
        letter-spacing: -39px;
        filter: blur(3px);
      }
      /* 5%时 透明度变为1 */
      /* 此时文字之间有了一定间距 不再是一个黑色块 元素在页面上显示 */
      5% {
        opacity: 1;
      }
      /* 最终状态 透明度为1 字间距为0 模糊度为0 */
      /* 此时文字间距正常 清晰无模糊 在页面正常显示 */
      100% {
        opacity: 1;
        letter-spacing: 0;
        filter: blur(0);
      }
    }
    /* 父元素设置背景颜色为白色 文字居中 对比度为10倍  */
    /* 通过增强对比度 结合文字的高斯模糊 去掉文字中偏向于背景色的部分 达到文字融合的效果 */
    p {
      background: #fff;
      text-align: center;
      filter: contrast(10);
    }
    /* 文字元素 设置文字样式 和 应用TextExpend动画 */
    span {
      color: #000;
      font-size: 50px;
      font-weight: 600;
      text-align: center;
      /* 应用动画  */
      animation: TextExpend 2.5s ease-out;
      /* 记得要设置动画的填充模式 否则动画结束后会回到初始的融合状态 */
      animation-fill-mode: both;
    }
</style>

请关注公众号,查看更多优质资源:

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一种实现文字画卷展开效果CSS 代码: HTML 代码: ``` <div class="text-scroll"> <div class="scroll-mask"></div> <div class="scroll-text"> <p>这里是需要展示的文本内容。</p> </div> </div> ``` CSS 代码: ``` .text-scroll { position: relative; overflow: hidden; } .scroll-mask { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 50%); transform: translateY(-100%); animation: scroll 2s ease-in-out forwards; } .scroll-text { position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 20px; box-sizing: border-box; transform: translateY(-100%); animation: scroll 2s ease-in-out forwards; } @keyframes scroll { 0% { transform: translateY(-100%); } 100% { transform: translateY(0%); } } ``` 以上代码中,我们使用了一个父级 `.text-scroll` 元素来包裹需要展示的文本内容。我们将这个父级元素设置为相对定位,并将其 `overflow` 属性设置为 `hidden`,以便隐藏其子元素溢出的部分。然后,我们创建两个子元素,一个是用于遮罩效果的 `.scroll-mask`,另一个是用于显示文本内容的 `.scroll-text`。 我们使用 `linear-gradient` 背景渐变样式和 `transform` 属性来实现遮罩效果。在这里,我们将背景渐变的起点设置为透明色,终点设置为白色,使得遮罩从顶部逐渐向下展开。`transform: translateY(-100%)` 将遮罩元素移出可视区域,`animation` 属性将 `scroll` 动画应用到遮罩元素上,使其在 2 秒内向下展开至完全覆盖文本内容。 我们将文本内容通过 `.scroll-text` 元素显示出来,同样使用 `transform` 属性和 `animation` 属性来实现一个向下展开的动画效果。最后,我们将这些样式应用到相应的元素上,就可以实现文字画卷展开效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小朱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值