文章目录

  • css3过渡动画
    • 1 css3动画之2D
      • 1.1 transition过渡动画基础
        • 1.1.1 实现缓入缓出或快入快出效果
        • 1.1.2 实现一秒内变换宽度
        • 1.1.3 实现一秒后变换宽度
        • 1.1.4 实现宽高一秒后同时变换
        • 1.1.5 简便书写方式(all)
        • 1.1.6 案例:盒子转换
      • 1.2 过渡动画应用
      • 1.3 transform(变形基础)
      • 1.3 1) 变形过渡动画案例1
      • 1.3 2) 变形过渡动画案例2(幸运转盘)
    • 2 css3动画之3D
      • 2.1 transform-origin(旋转中心控制点)
      • 2.2 1) perspective 视距/透视/Z轴(设置从何处查看一个元素的角度)
      • 2.2 2) perspective-origin(定义 3D 元素所基于的 X 轴和 Y 轴)
      • 2.3 backface-visibility (定义当元素不面向屏幕时是否可见)
      • 2.3 ) 案例:正反面切换
      • 2.4 transform-style(使被转换的子元素保留其 3D 转换)
    • 3 css3自定义动画
      • 3.1 animation(动画)核心属性
      • 3.2 @keyframes规则(配合animation)
      • 3.1) 案例:太阳
      • 3.2 clip(剪裁绝对定位元素/?或已废除不用)

css3过渡动画

CSS3收纳了网页的动画领域。
过渡动画的核心属性:transition

trans-      through    过
transition   过的过程 -> 过渡
transform   形状上的过来过去->变型
transfer    fer的意思是turn   ->转移
transparent  父级的颜色透过来了->透明

可以配合伪类选择器:hover实现动画效果

兼容写法:
-webkit-transition:all 1s ease 0s;
-ms-transition:all 1s ease 0s;
-moz-transition:all 1s ease 0s;
-o-transition:all 1s ease 0s;
transition:all 1s ease 0s;
兼容(ie678)写法:
  添加PIE.js插件

1 css3动画之2D

  凡是属性值有可以转化成数字形式的属性,都可以发生过渡动画。例如:颜色、padding、width、background-position等。
  在chrome下,甚至背景图都可以发生过渡动画。

1.1 transition过渡动画基础

transition:发生变化的属性名 动画时长 缓冲曲线 等待时间
transition-property 发生变化的属性名
transition-duration 动画时长
transition-timing-function 缓冲曲线
transition-delay 等待时间

    /*整体样式*/<style>img{display:block;width: 100px;height: 100px;margin:20px;float: left;}</style><body><img src="data:images/艾伦.jpg"></body>

1.1.1 实现缓入缓出或快入快出效果

cubic-bezier() 函数定义了一个贝塞尔曲线(Cubic Bezier)。
  贝塞尔曲线曲线由四个点 P0,P1,P2 和 P3 定义。P0 和 P3 是曲线的起点和终点。P0是(0,0)并且表示初始时间和初始状态,P3是(1,1)并且表示最终时间和最终状态。

 img{/*transition要在默认样式中加*/transition:width 1s cubic-bezier(0, 0.98, 0.91, 0.18) 0s;}img:hover{width:400px;}

效果图:

1.1.2 实现一秒内变换宽度

 img{transition:height 1s ease 0s;}img:hover{width:400px;}

效果图:

1.1.3 实现一秒后变换宽度

 img{transition:width 1s ease 1s;}img:hover{width:400px;}

效果图:

1.1.4 实现宽高一秒后同时变换

 img{transition:width 1s ease 0s, height 1s ease 0s;}img:hover{width:300px;height:300px;}

效果图:

1.1.5 简便书写方式(all)

多个发生变化的属性,有一个简便的书写方式,就是用all表示所有发生变化的属性都产生过渡动画
transition:all 动画时长 缓冲曲线 等待时间

 img{transition:all 1s ease 0s;/*多个发生变化的属性,有一个简便的书写方式,就是用all表示所有发生变化的属性都产生过渡动画*/}img:hover{width:300px;height:300px;}

效果图:

1.1.6 案例:盒子转换

源码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>过渡动画基础</title><style>*{margin:0;padding:0}div{width:100px;height:100px;border:1px solid blue;background-color:green;padding:0;color:black;font-size:16px;text-align:center;/*兼容写法*/-webkit-transition:all 1s ease 0s;-ms-transition:all 1s ease 0s;-moz-transition:all 1s ease 0s;-o-transition:all 1s ease 0s;transition:all 1s ease 0s;}div:hover{width:300px;height:300px;border:20px solid green;background-color:blue;padding:50px;color:white;font-size:50px;border-radius:50%;}</style>
</head>
<body><div>过渡动画</div>
</body>
</html>

效果展示:

1.2 过渡动画应用

可以通过对背景图片的替换,实现更好的效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>过渡动画的运用</title><style>html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img{margin:0;padding:0}div{width:355px;height:355px;margin:100px auto;border:1px solid black;background-image:url(../images/dong.jpg);transition: all 1s ease 0s;}div:hover{background-image: url(../images/ailun.png);}</style>
</head>
<body><div></div>
</body>
</html>

效果图:

1.3 transform(变形基础)

  transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等。
下面每个值都有 (x,y) 3d(x,y,z) X Y Z五种语法。
  none 定义不进行转换。
  rotate:定义 2D 旋转,在参数中规定角度。
  skew:定义沿着 X 和 Y 轴的 2D 倾斜转换。
  scale:定义 2D 缩放转换。
  translate:定义 2D 平移转换。
旋转45度

             transform: rotate(45deg);

斜切

             transform: skew(10deg,10deg);

水平和竖直方向缩小一半

             transform: scale(.5);

向左移动30px 向下移动30px

             transform: translate(30px,30px);

先旋转45度 向x轴负方向移动30px

             transform: rotate(45deg) translate(-30px,0);

先水平方向斜切10度 向x轴负方向移动30px

             transform: skew(10deg,10deg) translate(-30px,0);

效果展示:

1.3 1) 变形过渡动画案例1

效果展示:
源码:
注意:这里我没有写浏览器兼容写法,测试用的是谷歌89版

<!doctype html>
<html><head><meta charset="utf-8"><title>CSS3动画平滑过渡效果</title><style>body { background:#000; width: 100%; font-family: 'Viga'; margin: 0; padding: 0;}div.container { width:1800px; margin: 10% auto;}h3 {color: #fff;text-align: center;text-shadow: 2px 2px 2px rgba(150, 150, 150, 1);}ul {list-style: none;}li {float: left;margin: 30px;}.img {width: 300px;height: 300px;border: 10px solid #fff;border-radius: 15px;overflow: hidden;}.img:hover {cursor: pointer;}.morph {transition: all 1s ease;}.morph:hover {border: 10px solid #fff;border-radius: 50%;box-shadow: 0 0 40px rgba(255, 255, 255, 0.6), inset 0 0 40px rgba(255, 255, 255, 1);}.zoom img {width: 300px;height: 300px;transition: all 2s ease;}.zoom img:hover {width: 400px;height: 400px;}.zoom:hover {box-shadow: 0 0 40px rgba(255, 255, 255, 0.6), inset 0 0 40px rgba(255, 255, 255, 1);}.tilt {transition: all 0.3s ease;}.tilt:hover {transform: rotate(10deg);box-shadow: 0 0 40px rgba(255, 255, 255, 0.6), inset 0 0 40px rgba(255, 255, 255, 1);}.color {transition: all 1s ease;}.color:hover {filter: grayscale(100%);box-shadow: 0 0 40px rgba(255, 255, 255, 0.6), inset 0 0 40px rgba(255, 255, 255, 1);}</style>
</head><body><div class="container"><ul><li><h3>ONE</h3><!--变圆--><div class="morph img"><img src="data:images/21.jpg" /></div></li><li><h3>TWO</h3><!--放大--><div class="zoom img"><img src="data:images/22.jpg" /></div></li><li><h3>THREE</h3><!--倾斜--><div class="tilt img"><img src="data:images/23.jpg" /></div></li><li><h3>FOUR</h3><!--变灰--><div class="color img"><img src="data:images/24.jpg" /></div></li></ul></div></body></html>

1.3 2) 变形过渡动画案例2(幸运转盘)

可以实现随机转到什么位置出现相应提示。
效果展示:

源码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>抽奖大转盘</title><style>html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img{margin:0;padding:0}div#turntable-wrapper{width:650px;height:600px;background-image: url(../images/38/turntable-bg.jpg);position: relative;margin:10px auto}div#turntable-wrapper .turntable{position:absolute;left:116px;top:59px;transition: all 3s ease 0s;transform: rotate(0deg);}div#turntable-wrapper #pointer{position: absolute;left:255px;top:155px;cursor: pointer;/*鼠标移动上去出现手指*/}</style><script>window.onload=function(){var pointer = document.getElementById("pointer")var turntable= document.getElementById("turntable")var click_count = 0 var timer;pointer.onclick=function(){console.log(11111111111111111111)click_count++//抽中奖品提示var gifts   = ["未中奖","免单4999元","免单50元","免单10元","免单5元","免费分期服务费","提高白条额度"]//度数var degrees = [0,56,108,160,208,260,308]//从下标0-6之间随机抽取一个数  0.2var gifts_index  = Math.floor(Math.random()*7)var degrees_index= gifts_index //要转到的度数console.log(3*360*click_count+degrees[degrees_index])turntable.style.transform = "rotate("+(3*360*click_count+degrees[degrees_index])+"deg)";//3秒后弹出中奖信息clearTimeout(timer)timer=setTimeout(function(){alert(gifts[gifts_index])},3000)}   }</script></head>
<body><div id="turntable-wrapper"><img src="../images/38/turntable.png" class="turntable" id="turntable" alt=""><img src="../images/38/pointer.png" id="pointer"  alt=""></div>
</body>
</html>

2 css3动画之3D

2.1 transform-origin(旋转中心控制点)

transform-origin:设置旋转元素的中心点位置
2D转换元素可以改变元素的X和Y轴。 3D转换元素,还可以更改元素的Z轴。
效果展示:
源码:css部分

         div{width:400px;height:400px;margin:100px auto;border: 1px solid red;}div img{/* 1 默认 *//* transform-origin: 50% 50%; *//* 2 让绕着左下角旋转 *//* transform-origin: left bottom; *//* transform-origin: 0 250px; *//* transform-origin:0 100%; *//* 3 随意定义旋转中心点 */transform-origin: 200px 200px;transition: all 1s ease 0s; }div:hover img{transform:rotate(360deg);}

2.2 1) perspective 视距/透视/Z轴(设置从何处查看一个元素的角度)

perspective:设置从何处查看一个元素的角度(Z轴从上往下看)
  perspective属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。

  当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
以下皆设置有:perspective:500px;
默认旋转轴向

          transform: rotate(45deg);

沿着Z轴进行旋转

          transform:rotateZ(45deg) ;

沿着X进行旋转

          transform:rotateX(45deg) ;

沿着Y轴进行旋转

          transform: rotateY(45deg);

依次效果图如下:

2.2 2) perspective-origin(定义 3D 元素所基于的 X 轴和 Y 轴)

  perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。(从左右看)
  perspective-origin: px | % 表示人的眼睛看的是哪一点。(默认值是center center。)

  当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身。

注释:该属性必须与 perspective 属性一同使用,而且只影响 3D 转换元素。

2.3 backface-visibility (定义当元素不面向屏幕时是否可见)

backface-visibility 属性定义当元素不面向屏幕时是否可见。
backface-visibility: hidden/visible; /* 0-90deg 可见 90deg-180 不可见 */
visible 背面是可见的。
hidden 背面是不可见的。

2.3 ) 案例:正反面切换

源码:

<style>div{width:300px;height:400px;margin:100px auto;border:3px solid orange;position: relative;perspective: 500px;}div img{position:absolute;left:0;top:0;transition: all 1s ease 0s;}/* 旋转180deg 设置背面不可见 */div img:nth-of-type(1){transform: rotateY(180deg);backface-visibility: hidden;}div img:nth-of-type(2){backface-visibility: hidden;}/* 从0deg - 180deg   */div:hover img:nth-of-type(2){transform: rotateY(180deg);}/* 从180deg  -   360deg  */div:hover img:nth-of-type(1){transform: rotateY(360deg);}</style>
///
<body><div><!-- 第一张图放背面   旋转180deg 设置背面不可见  --><img src="../images/42/backface.jpg" alt=""><!-- 第二张图放正面  --><img src="../images/42/foreface.jpg" alt=""></div>
</body>

效果展示:

2.4 transform-style(使被转换的子元素保留其 3D 转换)

transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素。
transform-style: flat|preserve-3d;
flat 子元素将不保留其 3D 位置。
preserve-3d 子元素将保留其 3D 位置。
注释:该属性必须与 transform 属性一同使用。

3 css3自定义动画

3.1 animation(动画)核心属性

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

animation-name 规定需要绑定到选择器的 keyframe(关键帧) 名称。(自己命名的)
animation-duration 规定完成动画所花费的时间,以秒或毫秒计。默认值为 0,意味着没有动画效果。
animation-timing-function 规定动画的速度曲线。

linear   动画从头到尾的速度是相同的。
ease    默认。动画以低速开始,然后加快,在结束前变慢。
ease-in 动画以低速开始。
ease-out    动画以低速结束。
ease-in-out 动画以低速开始和结束。
cubic-bezier(n,n,n,n)   在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

animation-delay 规定在动画开始之前的延迟,以秒或毫秒计。默认值为0。

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

n    一个数字,定义应该播放多少次动画。
infinite    指定动画应该播放无限次(永远)。

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

normal   默认值。动画按正常播放。    测试 »
reverse 动画反向播放。 测试 »
alternate   动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。 测试 »
alternate-reverse   动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。

animation-fill-mode 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。

none 默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards    在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
backwards   动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。
这些都是 from 关键帧中的值(当 animation-direction 为 "normal" 或 "alternate" 时)或to 关键帧中的值(当 animation-direction 为 "reverse" 或 "alternate-reverse" 时)。
both    动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。

animation-play-state 指定动画是否正在运行或已暂停。

paused   指定暂停动画  测试 »
running 指定正在运行的动画

后三个属性共有的值。

initial  设置该属性为它的默认值。
inherit 从父元素继承该属性。

写法:

animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation:自定义动画名称 动画时长 缓冲曲线 等待时间 是否停留在终点(forwards) 播放次数(infinite表示无数次播放) 是否交替运动(alternate) 是否暂停(paused);

默认:animation:none 0 ease 0 1 normal
注释:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了。
使用案例:
从左到有移动(一次)

            animation:gogo  2s ease 0s;

从左到右移动(一次) 停到终点

            animation:gogo  2s ease 0s forwards;

从左到右移动(一次) 延迟2s再开始 停到终点

            animation:gogo  2s ease 2s forwards;

从左到右移动(三次) 马上开始 停到终点

            animation:gogo  2s ease 0s forwards 3;

从左到右移动(n次) 马上开始

            animation:gogo  2s ease 0s  infinite;

从左到右移动(n次) 交替运动

            animation:gogo  2s ease 0s  infinite alternate;

从左到右移动(n次) 交替运动 暂停

            animation:gogo  2s ease 0s  infinite alternate paused;
       /* @keyframes gogo{from{left:10px;}to{left:1000px;}} */@keyframes gogo{0%{/* 起始位置 */left:100px;}40%{ /* 度过40%的时间 */left:250px}100%{ /* 结束位置 */left:500px}}

3.2 @keyframes规则(配合animation)

  使用@keyframes规则,你可以创建动画。
  创建动画是通过逐步改变从一个CSS样式设定到另一个。
  在动画过程中,您可以更改CSS样式的设定多次。

  指定的变化时发生时使用%,或关键字"from"和"to",这是和0%到100%相同。
  0%是开头动画,100%是当动画完成。
注意: 使用animation属性来控制动画的外观,还使用选择器绑定动画。
为了获得最佳的浏览器支持,您应该始终定义为0%和100%的选择器。
写法:
@keyframes animationname {keyframes-selector {css-styles;}}

animationname    必需的。定义animation的名称。keyframes-selector   必需的。动画持续时间的百分比。
合法值:0-100%
from (和0%相同)
to (和100%相同)
注意: 您可以用一个动画keyframes-selectors。css-styles   必需的。一个或多个合法的CSS样式属性

3.1) 案例:太阳


源码:

<!doctype html>
<html><head><meta charset="utf-8"><title>发光的太阳</title><style type="text/css">span {font-size: 26px;color: #FFF;text-align: center;display: block;width: 280px;height: 280px;line-height: 280px;margin: 200px;background-image: linear-gradient(to bottom, rgb(247, 212, 53), rgb(224, 173, 30) 60%, rgb(161, 21, 21));border-radius: 150px;animation: faguang 1s linear 0s infinite alternate;}@keyframes faguang {from {box-shadow: 0px 0px 10px 10px purple;}to {box-shadow: 0px 0px 150px 72px red;}}</style>
</head><body><span>发光的太阳</span>
</body></html>

3.2 clip(剪裁绝对定位元素/?或已废除不用)

MDN提示:

  该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。
建议使用 clip-path 。
clip 属性剪裁绝对定位元素。

  当一幅图像的尺寸大于包含它的元素时会发生什么呢?“clip” 属性允许您规定一个元素的可见尺寸,这样此元素就会被修剪并显示为这个形状。

说明:
  这个属性用于定义一个剪裁矩形。对于一个绝对定义元素,在这个矩形内的内容才可见。出了这个剪裁区域的内容会根据 overflow 的值来处理。剪裁区域可能比元素的内容区大,也可能比内容区小。
用法:
clip:rect(上,右,下,左);

img{position:absolute;clip:rect(0px,60px,200px,0px);}

CSS3动画(2D,3D,自定义动画)相关推荐

  1. 前端 css3动画2D|3D

    css3动画&2D|3D 一.css3的transform属性 2d坐标轴(图示) x轴:水平,向右为正,向左为负 y轴:垂直,向下为正,向上为负 2d转换的方法 1.2D变形:平移.旋转.缩 ...

  2. 纯CSS3炫酷3D星空动画特效

    效果: 源码: <!DOCTYPE html> <html lang="zh"> <head><meta charset="UT ...

  3. CSS3 2 2D 3D转换

    CSS3 2 2D 3D转换 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 转换是使元素改变形状.尺寸和位置的一种效果,使用 2D或 3D 转换来转换元素. 1浏览器支持 I ...

  4. jQuery动画(jQuery预制动画,jQuery自定义动画,jQuery停止动画和延迟动画)

    目录 jQuery预制动画 显示隐藏动画 上拉下拉动画(高度动画) 淡入淡出动画(透明度动画) jQuery自定义动画 jQuery停止动画和延迟动画等 jQuery预制动画 jquery的预制动画 ...

  5. php星空背景动态,纯CSS3炫酷3D星空动画特效

    简要教程 这是一款使用纯CSS3制作的炫酷3D星空动画特效.该特效中,以飞船向前快速移动为视角,所有的星星都快速的变大并向后移动,效果非常逼真. 使用方法 HTML结构 该3D星空特效只使用一个 元素 ...

  6. [HTML/CSS]动画效果以及自定义动画效果

    一,实现div或者文字的当鼠标浮于其上时的动画效果: 1,transition加在div中,实现动画效果的过渡效果,transition: all 3s;其中all表示所有样式都参与过渡,3s表示实现 ...

  7. 哪个计算机软件可以编辑动画文字,3d文字动画制作软件 3d动画字制作教程

    在网络上时常看到各种加了技术特效的3d动态文字,要多炫有多炫,超漂亮,应该是牛人才能做出来的吧,许多喜欢设计的普通用户只有望洋兴叹的份了.其实不然,你也可以不需要掌握专业技巧,就能快速制作出专业品质的 ...

  8. jquery动画效果 animate() 自定义动画 stop() 停止运行动画 fadeIn()/fadeOut()/fadeTo() 淡入淡出

    jquery动画效果 今天给大家介绍一下jQuery当中的几种动画效果. . animate() 自定义动画 stop() 停止运行动画 fadeIn()/fadeOut()/fadeTo() 淡入淡 ...

  9. CSS3动画(2D/3D转换、过渡、动画和多列)

    [index.html] <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

  10. Unity 程序动画 2D,3D程序蜘蛛脚,人物程序性动画

    强大的程序腿效果 程序脚完全使用算法完成,没有复杂的物理运算 3D蜘蛛脚算法 public class SpiderProceduralAnimation : MonoBehaviour{public ...

最新文章

  1. java程序猿必读的学习书籍,良心推荐!
  2. 深度排序模型在淘宝直播的演进与应用
  3. DNS之一:编译安装
  4. c# 访问hbase_C#教程之通过Thrift实现C#与Hbase交流
  5. 大数据生态及其技术栈
  6. 利用Vagrant and VirtualBox搭建core os环境
  7. 服务器安装红帽系统进入不图形界面,CentOS 安装图形化界面方法
  8. Python中的元类及元类实现的单例模式
  9. javascript 图表_我如何使用JavaScript数据透视表和图表库分析开发人员趋势
  10. asio c++20 协程在windows下和linux下设定
  11. 专访华为杨海松:立足合作伙伴价值,构建健康HarmonyOS生态
  12. 什么是Dropthings
  13. 矩阵分解之奇异值分解
  14. 就地升级Lync Server 到Skype for Business Server
  15. unity3D用鼠标和射线控制物体移动(二)
  16. 吹气球 Burst Balloons
  17. QT中的explicit关键字的意思
  18. 如何在OUTLOOK签名中自动加入日期
  19. Meta今年不再招人!小扎还说跳槽越多越好
  20. CIO烦恼之七:企业文化僵化,系统思想难以贯彻

热门文章

  1. 在没有 IIS 的条件下运行 ASMX
  2. 采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测(附完整代码)
  3. .Net 反射(Reflection)
  4. iPhone6S发售,S6 edge+存在感爆棚,苹果与三星又一轮厮杀
  5. 存储过程(带参数及不带参数)如何调用
  6. UG/NX10二次开发学习视频目录整理(NXOPEN制图篇)
  7. Jetpack Lifecycle
  8. 夏天面试男生穿什么_夏天什么时候?
  9. 蓝牙耳机什么牌子好用?五款高性价比低延迟蓝牙耳机推荐
  10. 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第十弹 超能力系道馆