CSS3实现猫和狗的聊天

1.效果展示:


2.相关知识点:

  •  animation 属性是一个简写属性,用于设置六个动画属性:

    animation-name:规定需要绑定到选择器的 keyframe 名称

    animation-duration:规定完成动画所花费的时间,以秒或毫秒计

    animation-timing-function:规定动画的速度曲线

    animation-delay:规定在动画开始之前的延迟。

    animation-iteration-count:规定动画应该播放的次数

    animation-direction:规定是否应该轮流反向播放动画

    语法:animation: name duration timing-function delay iteration-count direction;

  • @keyframes 规则,您能够创建动画。

    创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。在动画过程中,您能够多次改变这套 CSS 样式。以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。0% 是动画的开始时间,100% 动画的结束时间。

3.html代码:

<body>
		<div class="left">
			<div class="cat">
				<div class="cat_ears"></div>
				<div class="cat_head">
					<div class="cat_eyes"></div>
					<div class="cat_nose"></div>
				</div>
				<div class="cat_body">
					<div class="cat_leftpaw"></div>
					<div class="cat_rightpaw"></div>
				</div>
				<div class="cat_tail"></div>
				<div class="cat_computer">
					<div class="cat_computer_screen"></div>
					<div class="cat_computer_board"></div>
				</div>
			</div>
		</div>
		<div class="right">
			<div class="dog">
				<div class="dog_ears"></div>
				<div class="dog_head">
					<div class="dog_eyes"></div>
					<div class="dog_nose"></div>
				</div>
				<div class="dog_body">
					<div class="dog_leftpaw"></div>
					<div class="dog_rightpaw"></div>
				</div>
				<div class="dog_tail"></div>
				<div class="dog_computer">
					<div class="dog_computer_screen"></div>
					<div class="dog_computer_board"></div>
				</div>
			</div>			
		</div>
	</body>

4.css代码:

<style type="text/css">

@keyframes catLeftType {/*cat_leftpaw*/
  2% {
    transform: translateY(-8px);
  }
  6% {
    transform: none;
  }
  8% {
    transform: translateY(-8px);
  }
  10% {
    transform: none;
  }
  14% {
    transform: translateY(-8px);
  }
  16% {
    transform: none;
  }
  18% {
    transform: translateY(-8px);
  }
  20% {
    transform: none;
  }
  22% {
    transform: translateY(-8px);
  }
  26% {
    transform: none;
  }
}
@keyframes catRightType {/*cat_rightpaw*/
  6% {
    transform: translateY(-8px);
  }
  8% {
    transform: none;
  }
  10% {
    transform: translateY(-8px);
  }
  12% {
    transform: none;
  }
  16% {
    transform: translateY(-8px);
  }
  18% {
    transform: none;
  }
  20% {
    transform: translateY(-8px);
  }
  22% {
    transform: none;
  }
  24% {
    transform: translateY(-8px);
  }
  28% {
    transform: none;
  }
}
@keyframes catRead {/*cat_eyes*/
  55% {
    transform: none;
  }
  62% {
    transform: translateX(-2px);
  }
  70% {
    transition-timing-function: ease-out;
    transform: translateX(3px);
  }
  82% {
    transform: translateX(-2px);
  }
  90% {
    transition-timing-function: ease-out;
    transform: translateX(3px);
  }
  100% {
    transform: none;
  }
}
@keyframes dogLeftType {/*dog_leftpaw*/
  50% {
    transform: none;
  }
  52% {
    transform: translateY(-8px);
  }
  56% {
    transform: none;
  }
  58% {
    transform: translateY(-8px);
  }
  60% {
    transform: none;
  }
  64% {
    transform: translateY(-8px);
  }
  66% {
    transform: none;
  }
  68% {
    transform: translateY(-8px);
  }
  70% {
    transform: none;
  }
  72% {
    transform: translateY(-8px);
  }
  76% {
    transform: none;
  }
}
@keyframes dogRightType {/*dog_rightpaw*/
  54% {
    transform: none;
  }
  56% {
    transform: translateY(-8px);
  }
  58% {
    transform: none;
  }
  60% {
    transform: translateY(-8px);
  }
  62% {
    transform: none;
  }
  66% {
    transform: translateY(-8px);
  }
  68% {
    transform: none;
  }
  70% {
    transform: translateY(-8px);
  }
  72% {
    transform: none;
  }
  74% {
    transform: translateY(-8px);
  }
  78% {
    transform: none;
  }
}
@keyframes dogRead {/*dog_eyes*/
  5% {
    transform: none;
  }
  17% {
    transition-timing-function: ease-out;
    transform: translateX(-5px);
  }
  25% {
    transform: none;
  }
  37% {
    transition-timing-function: ease-out;
    transform: translateX(-5px);
  }
  45% {
    transform: none;
  }
}

	
body{
	margin: 0;
	padding: 0;
}	
.left,.right{
	position:absolute;
	height: 100%;width: 50%;	
}
.left{background: #FFCA95;}
.right{
	background: #20314E;
	left: 50%;
}

.cat,.dog{
	width: 200px;height: 182px;
	top: 50%;
	position: absolute;
	transform: translate(0,-50%);
	/* transform功能:使元素变形的属性,配合rotate(旋转角度)、scale(缩放倍数)、skew(扭曲元素)等参数一起使用
	 translate(x,y),它表示对象进行平移,按照设定的x,y参数值,当值为负数时,反方向移动物体*/
}

.cat{right: 145px;}
.dog{left: 145px;}

.cat .cat_ears,.dog .dog_ears{
	height: 0; width: 0;
	position: relative;
}	
.cat .cat_ears{
	left: 90px;
	border-bottom: 27px solid #475881;
	border-left: 10px solid transparent;
	border-right: 23px solid transparent;
}
.dog .dog_ears{
	left: 30px;
	border-bottom: 27px solid #F07E42;
	border-left: 23px solid transparent;
	border-right: 10px solid transparent;	
}
/*:before 选择器在被选元素的内容前面插入内容,使用 content 属性来指定要插入的内容*/
.cat .cat_ears:before,.dog .dog_ears:before{
	width: 0; height: 0;
	content: "";
	display: block;
	position: relative;
}
.cat .cat_ears:before{
  left: 24px;
  border-bottom: 27px solid #475881;
  border-left: 10px solid transparent;
  border-right: 23px solid transparent;	
}
.dog .dog_ears:before{
  left: 28px;
  border-bottom: 27px solid #F07E42;
  border-left: 10px solid transparent;
  border-right: 23px solid transparent;	
}
.cat .cat_head,.dog .dog_head{
	height: 74px; width: 135px;
	position: relative;
	z-index: 2;
	border-radius: 37px;
}
.cat .cat_head{
	left: 65px;
	box-shadow: -8px 0 0 #475881;
	background: #7C85AB;
}
.dog .dog_head{
  box-shadow: 8px 0 0 #F07E42;
  border-radius: 35px;
  background: #FFA852;	
}

.cat_eyes,.dog_eyes{
	width: 12px; height: 12px;
	position: relative;
	top: 37px; 
	left: 50px;
	border-radius: 100%;
   /*animation 属性是一个简写属性,用于设置六个动画属性*/
   background: black;
}
.cat_eyes{animation: 9s catRead infinite;}
.dog_eyes{animation: 9s dogRead infinite;}
.cat_eyes:before,.dog_eyes:before{
  display: block;
  content: "";
  height: 12px;
  width: 12px;
  position: relative;
  left: 18px;
  border-radius: 100%;
  background: black;	
}
.cat .cat_head .cat_nose,.dog .dog_head .dog_nose{
	top: 40px;	
	position: relative;
	border-radius: 20px;
	background: #FBF1D8;
}
.cat_nose{
	height: 22px;width: 22px;
	left: 43px;
}
.dog_nose{
	height: 30px; width: 45px;
	left: 37px;
}
.cat_nose:before,.cat_nose:after,.dog_nose:before{
	display: block;
	content: "";
	position: relative;
}
.dog_nose:before{
	height: 0; width: 0;
	top: 3px;left: 9px;
	border-radius: 10px;
	border-top: 10px solid black;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;
}
.cat_nose:before{
	height: 22px; width: 22px;
	left: 22px;
	border-radius: 20px;
	background: #FBF1D8;
}
.cat_nose:after{
	width: 0;height: 0;
	top: -22px;left: 12px;
	border-radius: 10px;
	border-top: 10px solid #FFA5C0;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;	
}

.cat_body,.dog_body{
	width: 200px;height: 110px;
	position: relative;
	top: -30px;
	z-index: 1;
	border-radius: 55px;
}
.cat_body{background: #7C85AB;}
.dog_body{background: #FFA852;}
.cat_rightpaw,.cat_leftpaw,.dog_rightpaw,.dog_leftpaw{
	height: 25px;width: 37px;
	position: relative;
	border-radius: 12px;
	background: #FBF1D8;
}


.cat_leftpaw{
  top: 70px;
  left: 95px;
  animation: 9s catLeftType infinite;  	
}
.cat_rightpaw{
  top: 45px;
  left: 142px;
  animation: 9s catRightType infinite;  	
}
.dog_leftpaw{
  top: 70px;
  left: 15px;
  animation: 9s dogLeftType infinite;  	
}
.dog_rightpaw{
  top: 45px;
  left: 60px;
  animation: 9s dogRightType infinite;  	
}
.dog_tail,.cat_tail{
	position: relative;
	z-index: 0;
}
.dog_tail{
	height: 34px;width: 70px;
	top: -64px;left: 150px;
	border-radius: 0 17px 17px 0;
	background: #F07E42;
}
.cat_tail{
  height: 24px;width: 80px;
  top: -54px;left: -31px;
  border-radius: 17px 0 0 17px;
  background: #475881;  	
}
.cat_computer,.dog_computer{
	position: relative;
	z-index: 2;
}
.cat_computer{ top: -151px; left: 170px;}

.dog_computer{top: -161px;left: -103px;}

.cat_computer_screen,.dog_computer_screen{
	width: 130px;height: 85px;
	border-radius: 8px;
	
}
.cat_computer_screen{
  transform: skew(-18deg);/*skew(扭曲元素)*/
  background: #20314E;	
}
.dog_computer_screen{
  transform: skew(18deg);
  background: #FFCA95;	
}
.cat_computer_screen:before,.dog_computer_screen:before,.cat_computer_screen:after,.dog_computer_screen:after{
	display: block;
	content: "";
	height: 17px;width: 10px;
	position: relative;
	border-radius: 6px;
}
.cat_computer_screen:before{top: 38px;left: 56px; background: #475881;}
.dog_computer_screen:before{top: 38px;left: 50px;background: #F07E42;}

.cat_computer_screen:after{top: 21px; left: 70px; background: #475881;}
.dog_computer_screen:after{top: 21px; left: 64px;  background: #F07E42}

.cat_computer_board,.dog_computer_board{
	height: 12px;width: 132px;
	position:relative;
}
.cat_computer_board{
	left: -14px;
	border-radius: 0 6px 6px 0;
	background: #475881;
}
.dog_computer_board{
	left: 14px;
	border-radius: 6px 0 0 6px;
	background: #F07E42;
}
.cat_computer_board:before,.dog_computer_board:before{
	display: block;
	content: "";
	height: 12px;width: 72px;
	position: relative;
	border-radius: 6px;
}
.cat_computer_board:before{
	left: -68px;
	background: #20314E;
}
.dog_computer_board:before{
	left: 128px;
	background: #FFCA95;	
}
</style>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值