如何使用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




