You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用CSS仅为网页中的文本和图片添加指定动画

如何使用CSS仅为网页中的文本和图片添加指定动画

没问题,我来帮你搞定这个需求!你想要的是让页面里的文本内容和图片执行你定义的load动画,同时避开div这类不需要动的元素,之前给body加动画导致连div一起动的问题确实挺头疼的,咱们换个思路直接精准定位目标元素就行。

解决方案思路

CSS里可以用多选择器组合的方式,直接把所有需要添加动画的文本元素(比如段落、标题、行内文本容器)和图片元素列出来,然后给它们单独应用动画,这样就不会波及其他元素了。

完整实现代码

首先保留你已经写好的@keyframes动画,然后用逗号分隔的选择器指定目标元素:

/* 保留你定义的动画 */
@keyframes load {
  0% {
    opacity: 0;
    transform: translate(-125px);
  }
  10% {
    opacity: 0;
    transform: translate(-125px);
  }
  20% {
    opacity: 0.2;
  }
  40% {
    opacity: 0.4;
  }
  60% {
    opacity: 0.6;
  }
  80% {
    opacity: 0.8;
  }
  100% {
    opacity: 1;
    transform: translate(0px);
  }
}

/* 精准定位文本元素和图片,应用动画 */
p, h1, h2, h3, h4, h5, h6, span, strong, em, img {
  animation: load 1s ease forwards;
}

细节说明

  • 上面的选择器包含了常见的文本容器:p(段落)、h1-h6(标题)、span(行内文本)、strong/em(强调文本),如果你的页面还有其他文本元素(比如a文本链接、label标签),直接把它们加到选择器里就行。
  • animation属性里的1s是动画时长,ease是缓动效果,forwards是让动画结束后保持最后一帧的状态(不会跳回初始样式),你可以根据需求调整这些参数。
  • 如果有个别文本或图片不想加动画,可以用:not()选择器排除,比如不想给class为no-animate的元素加动画,就把选择器改成:
    p:not(.no-animate), h1:not(.no-animate), ..., img:not(.no-animate) {
      animation: load 1s ease forwards;
    }
    

这样操作后,就只有你指定的文本元素和图片会执行这个从左侧滑入+渐显的动画,div等其他元素完全不会受到影响啦!

备注:内容来源于stack exchange,提问作者Mohamed Alkerde

火山引擎 最新活动