前端篇-CSS常用动画效果

动画效果

1、transform scale+transition

鼠标经过放大效果
在这里插入图片描述

<div>
  <a href="#">
    <img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg3.cache.netease.com%2Fphoto%2F0008%2F2011-06-10%2F765U5SP32EI00008.550x.0.jpg&refer=http%3A%2F%2Fimg3.cache.netease.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1623921591&t=3a536f99e3646497e810edfacf2d7bb2%22%20alt=" alt="">
  </a>
</div>
div {
  overflow: hidden;
  width: 300px;
  height: 200px;
}
/*为img添加放大效果*/
div:hover img {
  transform: scale(1.2);
}
/*为img添加过渡效果*/
div img {
  transition: all .4s;
}
/*转换为块级元素,宽度100%*/
img {
  display: block;
  width: 100%;
}

分页按钮动画效果

在这里插入图片描述

  li {
    float: left;
    margin: 10px;
    width: 50px;
    height: 50px;
    /*清除li样式*/
    list-style: none;
    text-align: center;
    line-height: 50px;
    border: olivedrab 1px solid;
    border-radius: 50%;
    /*添加过度效果*/
    transition: all .4s;
  }

  li:hover {
  /*鼠标经过添加放大效果*/
    transform: scale(1.3);
  }
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
</ul>

搜索框小三角动画
在这里插入图片描述

.search {
  position: relative;
  width: 300px;
  height: 50px;
  border: 2px solid steelblue;
  margin: 0 auto;
}

.search::after {
  content: "";
  position: absolute;
  top: 16px;
  right: 15px;
  width: 10px;
  height: 10px;
  border-bottom: 2px solid steelblue;
  border-right: 2px solid steelblue;
  transform: rotate(45deg);
  transition: all .3s;
}

.search:hover::after {
  transform: rotate(225deg);
  top: 20px;
}
<div class="search"></div>

矩形框旋转显示效果
在这里插入图片描述

.box {
  overflow: hidden;
  margin: 100px auto;
  width: 100px;
  height: 100px;
  border: 3px solid steelblue;
  border-radius: 10px;
}

.box::before {
  content: '';
  display: block;
  width: 100%;
  height: 100%;
  background-color: tomato;
  transform: rotate(180deg);
  transform-origin: left bottom;
  transition: all 0.2s;
  border-radius: 4px;
}

.box:hover::before {
  transform: rotate(0);
}
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>

3D-rotateX
在这里插入图片描述

body {
  perspective: 300px;
}
img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}
img:hover {
  transform: rotateX(45deg);
}
<img src="media/font.jpg" alt="">

3D-rotateY
在这里插入图片描述

body {
  perspective: 500px;
}
img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}
img:hover {
  transform: rotateY(45deg);
}
<img src="media/font.jpg" alt="">

3D-rotateZ
在这里插入图片描述

body {
  perspective: 500px;
}
img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}
img:hover {
  transform: rotate3d(1, 1, 0, 45deg);
}
<img src="media/pig.jpg" alt="">

3D呈现transform-style
在这里插入图片描述

body {
  perspective: 500px;
}

.box {
  position: relative;
  width: 200px;
  height: 200px;
  margin: 100px auto;
  transition: all 2s;
  /* 让子元素保持3d立体空间环境 */
  transform-style: preserve-3d;
}

.box:hover {
  transform: rotateY(60deg);
}

.box div {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: cadetblue;
}

.box div:last-child {
  background-color: chocolate;
  transform: rotateX(60deg);
}
<div class="box">
  <div></div>
  <div></div>
</div>

两面翻转的盒子
在这里插入图片描述

body {
  perspective: 400px;
}

.box {
  position: relative;
  width: 300px;
  height: 300px;
  margin: 100px auto;
  transition: all .4s;
  /* 让背面的紫色盒子保留立体空间 给父级添加的 */
  transform-style: preserve-3d;
}

.box:hover {
  transform: rotateY(180deg);
}

.front,
.back {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  font-size: 30px;
  color: #fff;
  text-align: center;
  line-height: 300px;
}

.front {
  background-color: darkcyan;
  z-index: 1;
}

.back {
  background-color: cornflowerblue;
  /* 像手机一样 背靠背 旋转 */
  transform: rotateY(180deg);
}
<div class="box">
  <div class="front">你好</div>
  <div class="back">Hello</div>
</div>

3D导航栏
在这里插入图片描述

ul {
  margin: 100px;
}

ul li {
  float: left;
  margin: 0 5px;
  width: 120px;
  height: 35px;
  list-style: none;
  /* 我们需要给box 旋转 也需要透视 给li加 里面的子盒子都有透视效果 */
  perspective: 500px;
  text-align: center;
  line-height: 35px;
  color: #fff;
}

.box {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: all .4s;
}

.box:hover {
  transform: rotateX(90deg);
}

.front,
.bottom {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

.front {
  background-color: #ffba40;
  z-index: 1;
  transform: translateZ(17.5px);
}

.bottom {
  background-color: #ff1b40;
  /* 这个x轴一定是负值 */
  /* 我们如果有移动 或者其他样式,必须先写我们的移动 */
  transform: translateY(17.5px) rotateX(-90deg);
}
<ul>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
  <li>
    <div class="box">
      <div class="front">transform</div>
      <div class="bottom">perspective</div>
    </div>
  </li>
</ul>

2、@keyframes+background-position

属性描述
@keyframes规定动画
animation所有动画属性的简写,除了animation-play-state属性。
animation-name规定@keyframes动画的名称。 (必须的)
animation-duration规定动画完成一个周期所话费的秒或毫秒,默认0 。 (必须的)
animation-timing-function规定动画的速度曲线,默认是 “ease”。
animation-delay规定动画何时开始,默认是0。
animation-iteration-count规定动画播放的次数,默认是1,无线循环infinite。
animation-duration规定动画是否在下一周期逆向播放,默认是"normal",逆向播放“alternate”。
animation-play-state规定动画是否在运行或暂停,默认是“running”,还有“pause”
animation-fill-mode规定动画结束后的状态,保持结束装态“forwards”,回到起始“backwards”

北极熊奔跑
在这里插入图片描述
图片素材

在这里插入图片描述

<style>
  body {
    background-color: #333;
  }

  div {
    position: absolute;
    width: 200px;
    height: 100px;
    background-image: url('./bear.png');
    background-repeat: no-repeat;
    /*run 根据名称调用动画run 1s 动画时长 steps(8) 设置动画步长(根据图片的动画帧决定) infinite 循环播放 两个动画之间使用逗号分隔 forwards 停留在动画结束时的状态*/
    animation: run 1s steps(8) infinite, move 2s forwards;
  }
	/*奔跑动画*/
  @keyframes run {
    0% {
    /*使用background-position制作动画效果*/
      background-position: 0 0;
    }

    100% {
    /*移动位置由图片实际大小决定*/
      background-position: -1600px 0;
    }
  }
/*奔跑至中间的动画*/
  @keyframes move {
    0% {
      left: 0;
    }

    100% {
      left: 50%;
      margin-left: -100px;
    }
  }
</style>
<div></div>

大数据热点图

在这里插入图片描述

<style>
  body {
    background-color: #333;
  }
  
  .map {
    position: relative;
    width: 747px;
    height: 616px;
    background: url(media/map.png) no-repeat;
    margin: 0 auto;
  }
  
  .city {
    position: absolute;
    top: 227px;
    right: 193px;
    color: #fff;
  }
  
  .tb {
    top: 500px;
    right: 80px;
  }
  
  .dotted {
    width: 8px;
    height: 8px;
    background-color: #09f;
    border-radius: 50%;
  }
  
  .city div[class^="pulse"] {
    /* 保证我们小波纹在父盒子里面水平垂直居中 放大之后就会中心向四周发散 */
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 8px;
    height: 8px;
    box-shadow: 0 0 12px #009dfd;
    border-radius: 50%;
    animation: pulse 1.2s linear infinite;
  }
  /*为发散点设置延迟 注意权重问题*/
  .city div.pulse2 {
    animation-delay: 0.4s;
  }
  
  .city div.pulse3 {
    animation-delay: 0.8s;
  }
    
  @keyframes pulse {
    0% {}
    70% {
      /* transform: scale(5);  我们不要用scale 因为他会让 阴影变大*/
      width: 40px;
      height: 40px;
      opacity: 1;
    }
    100% {
      width: 70px;
      height: 70px;
      opacity: 0;
    }
  }
</style>
<div class="map">
  <div class="city">
    <div class="dotted"></div>
    <div class="pulse1"></div>
    <div class="pulse2"></div>
    <div class="pulse3"></div>
  </div>
  <div class="city tb">
    <div class="dotted"></div>
    <div class="pulse1"></div>
    <div class="pulse2"></div>
    <div class="pulse3"></div>
</div>
</div>

文字展开效果

在这里插入图片描述

div {
   margin: 200px auto;
   overflow: hidden;
   font-size: 20px;
   width: 0;
   height: 30px;
   background-color: cadetblue;
   /* 让我们的文字强制一行内显示 */
   white-space: nowrap;
   /* steps 就是分几步来完成我们的动画 有了steps 就不要在写 ease 或者linear 了 */
   animation: w 4s steps(10) forwards;
}

@keyframes w {
	/*默认div 宽度为0 则不会显示内容*/
   0% {
     width: 0;
   }
   /*通过增加div宽度实现内容的显示*/
   100% {
     width: 200px;
   }
}
<div>尝试使用步长制作动画</div>
  • 23
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: CSS3动画是一种非常强大的动画技术,它可以让网页变得更加生动、美丽。本文将为大家详细介绍CSS3动画的各个属性,包括动画名称,持续时间,延迟时间,动画速度曲线,以及动画的执行次数等。 动画名称(animation-name):与CSS中的类似,动画名称是指定CSS3动画所使用的关键帧动画。这个属性用来指定一个已定义的动画名称,以便调用该动画。 持续时间(animation-duration):定义CSS3动画的持续时间。默认值为0,表示没有动画效果。通过使用单位“秒(s)”或“毫秒(ms)”来定义动画的持续时间。 延迟时间(animation-delay):指定动画开始前的等待时长。默认值为0,即动画将立即开始。通过使用单位“秒(s)”或“毫秒(ms)”来定义延迟时间。 动画速度曲线(animation-timing-function):定义动画的速度曲线,可以使动画有更加自然的过渡效果。使用缓动函数可以让动画更具有灵活性,可以在不同的时间点采用不同的速度曲线,从而实现更复杂的动画效果动画执行次数(animation-iteration-count):指定动画的执行次数。可以使用数字或者“infinite”关键字来指定动画的执行次数。如果将其设置为“infinite”则表示动画将一直持续执行下去。 动画方向(animation-direction):指定动画是否循环播放,并且指定循环播放的方向。这个属性可以使用以下值:normal,reverse,alternate和alternate-reverse。 动画填充模式(animation-fill-mode):指定动画在开始或结束时对元素的样式应该如何处理。使用这个属性可以让动画具有更加平滑的效果,可以避免由于动画结束时样式的改变而造成的过度影响。 总之,通过使用上述属性,我们可以为网页添加各种丰富的动画效果,让网页更加互动、生动,也更能吸引用户的眼球。 ### 回答2: CSS3动画是网页开发中非常常用的一种技术,通过使用动画属性可以给页面的元素增添动态的效果。本文将详细介绍CSS3动画的各个属性。 1. animation-name 该属性定义要绑定到要执行动画的@keyframes的名称。@keyframes是定义动画的关键帧的规则集合。 2. animation-duration 该属性定义了动画完成所需的时间,以秒或毫秒为单位。 3. animation-timing-function 该属性定义了动画执行的时间曲线。通过使用不同的时序函数,可以使动画更真实,更有质感。 4. animation-delay 该属性定义动画开始之前的延迟时间,以秒或毫秒为单位。 5. animation-iteration-count 该属性定义动画的迭代次数。可以将其设置为有限或无限。 6. animation-direction 该属性定义动画是否反向播放。 7. animation-fill-mode 该属性定义了元素在动画之前和之后的状态。可以设置为none、forwards、backwards或both。 8. animation-play-state 该属性定义动画的运行状态。可以将其设置为paused或running。 9. animation animation属性是所有动画属性的缩写。它接受每个属性的值作为逗号分隔列表。 总结: 上述就是CSS3动画常用属性的详细介绍。CSS3动画可以用来为页面增添动态效果,提高用户的交互体验。在实际开发中,可以通过不同的动画属性以及不同的取值方式,创建出各种不同的动画效果。在制作动画时,需要考虑兼容性问题,如果要兼容IE9及以下版本,我们还需要使用Vendor Prefix前缀来避免浏览器的兼容问题。 ### 回答3: CSS3动画是将元素从一个状态变换到另一个状态的方式,其中使用了一些简单的CSS属性。CSS3动画属性可以通过@keyframe规则或transition属性设置。它们可以用来创造一些很棒的效果,比如向上滚动的标题、浮动的按钮等。下面详细介绍一下CSS3动画涉及的各种属性。 1. animation-name:用来定义动画的名称,这个名称会由animation属性引用。 2. animation-duration:定义动画的持续时间。单位为秒(s)和毫秒(ms)。 3. animation-timing-function:定义动画的速度变化曲线。这个属性定义了过渡的速度,是一个三次贝塞尔函数。可以设置ease、linear、ease-in、ease-out、ease-in-out和cubic-bezier等值。 4. animation-delay:定义动画开始之前的延迟时间。单位为秒(s)和毫秒(ms)。 5. animation-iteration-count:定义动画的重复次数。可以设置为一个具体的数字或infinite表示无限次重复。 6. animation-direction:定义动画结束后是否负向重复播放。可以设置为normal、reverse、alternate和alternate-reverse。 7. animation-play-state:定义动画是运行还是暂停。可以设置为paused和running。 8. animation-fill-mode:定义动画结束后如何应用样式。可以设置为none、forwards、backwards和both。 以上是CSS3动画中涉及的主要属性。其中最重要的要数animation-iteration-count和animation-duration两个属性。animation-iteration-count可以定义动画的重复次数,也可以设置为infinite表示无限次重复。animation-duration用来定义动画的持续时间,如果不设置,默认值为0,此时动画是不会播放的。在设置这两个属性时,需要根据具体情况来确定合适的数值,以达到最佳的动画效果。 总的来说,CSS3动画提供了丰富的效果和属性,可以应用于页面中的各种元素和功能,让页面更加生动、美观、时尚。在开发过程中,合理应用这些属性,可以使前端开发变得更加有趣和富有挑战性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值