• 技术文章 >web前端 >css教程

    利用css制作有趣的文字摆动动画特效

    青灯夜游青灯夜游2021-09-06 10:15:51原创222
    在之前的文章《超实用!利用CSS3将两个图片叠加在一起显示》中,我们分享了两种利用CSS3将两个图片叠加融合在一起显示的特效。这次我们给大家介绍一下利用CSS如何制作文字摆动动画特效,感兴趣的可以学习了解一下~

    文本文字是网页中最常见的一种组成部分,给文字添加动画效果可以让网页更加吸引人,今天就来给大家分享一款css标题文字摆动动画特效,快来看看。

    我们先来看看效果图:

    1.gif

    下面我们来研究一下是怎么实现这个效果的:

    首先创建HTML部分,定义一个包含文本的h1大标题

    <h1>Hello World !</h1>

    1.png

    然后开始定义css样式来进行修饰:

    背景颜色

    body {
      background: black;
    }

    h1标题文本样式,利用text-stroke属性添加白色描边

    h1 {
    text-align: center;
    margin: 200px auto;
    font-size: 4.5rem;
    font-family: arial;
    font-weight: 900;
    color: transparent;
    overflow: hidden;
    -webkit-text-stroke: 4px white; 
    }

    2.png

    h1标题文本样式,利用background系列属性和linear-gradient()添加文本背景

    background: linear-gradient(45deg, black 30%, transparent 30%, transparent 70%, black 70%), linear-gradient(-45deg, black 30%, transparent 30%, transparent 70%, black 70%), linear-gradient(90deg, crimson 30%, transparent 30%, transparent 70%, crimson 70%)red;
    background-size: 20px 20px, 20px 20px, 1px 1px;
    background-position: 0 0, 0 0, 0 0;
    -webkit-background-clip: text;

    3.png

    h1标题文本样式,利用filter属性添加边框阴影

    filter: drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 2px crimson);

    4.png

    接着是添加动画效果,让文字摆动起来,且文字背景也动起来(实现移位效果):

    给h1标签绑定animation动画,设置两个动画bg-shifth和swing:bg-shifth动画控制文字背景,swing动画控制文字摆动

    animation: bg-shift 1s ease-in-out infinite alternate-reverse, swing 2s ease-in-out infinite;

    使用两个@keyframes规则,给两个动画设置每一帧的动作即可。

    @keyframes bg-shift {
      from {
    	background-position: 0 50px;
      }
    }
    
    @keyframes swing {
      0% {
    	transform-origin: top;
    	transform: perspective(550px)rotatex(55deg);
      }
    
      50% {
    	transform: perspective(550px)rotatex(-55deg);
      }
    
      100% {
    	transform-origin: top;
    	transform: perspective(550px)rotatex(55deg);
    
      }
    }

    5.gif

    最后,最终效果在摆动时,有高光效果,我们来实现一下:

    h1::before {
      content: "Hello World !";
      position: absolute;
      background: linear-gradient(transparent 30%, white, transparent 70%);
      -webkit-background-clip: text;
      -webkit-text-stroke: 2px red;
    }

    6.gif

    给它添加一个动画效果bg-shift2,让它随着文字摆动变化位置:

    animation: bg-shift2 2s ease-in-out infinite alternate-reverse;

    使用@keyframes规则,给动画设置每一帧的动作即可。

    @keyframes bg-shift2 {
      0% {
    	background-position: 0 50px;
      }
    
      50% {
    
    	background-position: 0 -50px;
    
      }
    
      100% {
    	background-position: 0 50px;
      }
    }

    7.gif

    下面给出完整代码:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<style>
    			body {
    				background: black;
    				/* overflow: hidden; */
    			}
    
    			h1 {
    				text-align: center;
    				margin: 200px auto;
    				font-size: 4.5rem;
    				font-family: arial;
    				font-weight: 900;
    				color: transparent;
    				overflow: hidden;
    				-webkit-text-stroke: 4px white;
    				background: linear-gradient(45deg, black 30%, transparent 30%, transparent 70%, black 70%), linear-gradient(-45deg, black 30%, transparent 30%, transparent 70%, black 70%), linear-gradient(90deg, crimson 30%, transparent 30%, transparent 70%, crimson 70%)red;
    				background-size: 20px 20px, 20px 20px, 1px 1px;
    				background-position: 0 0, 0 0, 0 0;
    				-webkit-background-clip: text;
    				filter: drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 1px black)drop-shadow(0 0 2px crimson);
    				animation: bg-shift 1s ease-in-out infinite alternate-reverse, swing 2s ease-in-out infinite;
    			}
    
    			@keyframes bg-shift {
    				from {
    					background-position: 0 50px;
    				}
    			}
    
    			@keyframes swing {
    				0% {
    					transform-origin: top;
    					transform: perspective(550px)rotatex(55deg);
    				}
    
    				50% {
    					transform: perspective(550px)rotatex(-55deg);
    				}
    
    				100% {
    					transform-origin: top;
    					transform: perspective(550px)rotatex(55deg);
    
    				}
    			}
    
    			h1::before {
    				content: "Hello World !";
    				position: absolute;
    				background: linear-gradient(transparent 30%, white, transparent 70%);
    				-webkit-background-clip: text;
    				-webkit-text-stroke: 2px red;
    				animation: bg-shift2 2s ease-in-out infinite alternate-reverse;
    			}
    
    			@keyframes bg-shift2 {
    				0% {
    					background-position: 0 50px;
    				}
    
    				50% {
    
    					background-position: 0 -50px;
    
    				}
    
    				100% {
    					background-position: 0 50px;
    				}
    			}
    		</style>
    	</head>
    	<body>
    		<h1>Hello World !</h1>
    	</body>
    </html>

    PHP中文网平台有非常多的视频教学资源,欢迎大家学习《css视频教程》!

    以上就是利用css制作有趣的文字摆动动画特效的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:css 文字摆动 动画 特效
    上一篇:如何使用CSS动态调整旋转半径? 下一篇:教你使用css3给字体添加立体效果(附代码)
    线上培训班

    相关文章推荐

    • 利用CSS3创建实用的加载动画效果(两种)• 手把手教你怎么使用html+css实现轮播图效果(代码分享)• 用HTML/CSS制作有趣的动态波浪形文本行• 教你用CSS绘制一个带有渐变边框的圆!

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网