• HTML transform空间转换 CSS animation动画


    空间位移:使用translate实现元素空间位移效果

    语法
    l transform: translate3d(x, y, z);
    l transform: translateX(值);
    l transform: translateY(值);
    l transform: translateZ(值);
    l
    使用 perspective 属性实现 透视 效果
    取值( 正负 均可)
    l 像素单位数值
    l 百分比
    取值:像素单位数值, 数值一般在 800 – 1200
    Z轴是视线方向,移动效果应该是距离的 远或近 , 电脑屏幕是平面,默认无法观察远近效果
    perspective只增加近大远小、近实远虚的视觉效果
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>空间位移</title>
    8. <style>
    9. body{
    10. perspective: 200px;
    11. }
    12. .box{
    13. width: 200px;
    14. height: 200px;
    15. margin: 100px auto;
    16. background-color: antiquewhite;
    17. transition: all 8s;
    18. }
    19. .box:hover{
    20. /* transform: translate3d(50px,100px,200px); */
    21. /* transform: translateX(100px);
    22. transform: translateY(100px); */
    23. transform: translateZ(-500px);
    24. transform: translateZ(500px);
    25. /* transform:translate3d(100px); */
    26. }
    27. </style>
    28. </head>
    29. <body>
    30. <!-- transform: translate3d(x, y, z);-->
    31. <div class="box"></div>
    32. </body>
    33. </html>

    空间旋转rotate

    判断旋转方向: 左手握住旋转轴, 拇指指向正值方向, 手指弯曲方向为旋转正值方向

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>空间旋转</title>
    8. <style>
    9. .box{
    10. width: 300px;
    11. margin: 100px auto;
    12. /* perspective: 1000px; */
    13. }
    14. img{
    15. width: 300px;
    16. transition: all 2s;
    17. }
    18. /* .box img:hover{
    19. transform: rotateZ(360deg);
    20. } */
    21. /* transform: rotateX(60deg); X旋转 */
    22. /* transform: rotateY(60deg); Y旋转 */
    23. /* transform: rotateY(60deg); Y旋转 */
    24. .box img:hover{
    25. transform: rotateY(-60deg);
    26. }
    27. </style>
    28. </head>
    29. <body>
    30. <div class="box">
    31. <img src="./images/hero.jpeg" alt="" >
    32. </div>
    33. </body>
    34. </html>

     使用rotate实现元素空间旋转效果

      rotate3d(x, y, z, 角度度数) :用来设置自定义旋转轴的位置及旋转的角度

     x,y,z 取值为0-1之间的数字

    立体呈现

    使用transform-style: preserve-3d呈现立体图形

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>立体呈现</title>
    8. <style>
    9. .cube {
    10. position: relative;
    11. width: 200px;
    12. height: 200px;
    13. margin: 100px auto;
    14. background-color: pink;
    15. transition: all 2s;
    16. transform-style: preserve-3d;
    17. }
    18. .cube div {
    19. position: absolute;
    20. left: 0;
    21. top: 0;
    22. width: 200px;
    23. height: 200px;
    24. }
    25. .front {
    26. background-color: orange;
    27. /* 向我走近200px */
    28. transform: translateZ(200px);
    29. }
    30. .back {
    31. background-color: green;
    32. }
    33. /* cube hover 为了看空间感效果 */
    34. .cube:hover {
    35. transform: rotateY(90deg);
    36. }
    37. </style>
    38. </head>
    39. <body>
    40. <div class="cube">
    41. <div class="front">前面</div>
    42. <div class="back">后面</div>
    43. </div>
    44. </body>
    45. </html>

     使用scale实现空间缩放效果

    l 语法
    Ø transform: scaleX(倍数);
    Ø transform: scaleY(倍数);
    Ø transform: scaleZ(倍数);
    Ø transform: scale3d(x, y, z);
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>3D导航</title>
    7. <style>
    8. ul {
    9. margin: 0;
    10. padding: 0;
    11. list-style: none;
    12. }
    13. .navs {
    14. width: 300px;
    15. height: 40px;
    16. margin: 50px auto;
    17. }
    18. .navs li {
    19. position: relative;
    20. float: left;
    21. width: 100px;
    22. height: 40px;
    23. line-height: 40px;
    24. transition: all .5s;
    25. transform-style: preserve-3d;
    26. /* 旋转: 让大家在写代码的过程中看到立体盒子 */
    27. /* transform: rotateX(-60deg) rotateY(20deg) ; */
    28. /* 测试缩放效果 */
    29. /* transform: scale3d(0.5, 1.1, 2); */
    30. }
    31. .navs li a {
    32. position: absolute;
    33. left: 0;
    34. top: 0;
    35. display: block;
    36. width: 100%;
    37. height: 100%;
    38. text-align: center;
    39. text-decoration: none;
    40. color: #fff;
    41. }
    42. .navs li a:first-child {
    43. background-color: green;
    44. transform: translateZ(20px);
    45. }
    46. .navs li a:last-child {
    47. background-color: orange;
    48. /* 躺平x轴旋转 立方体的顶部,位移z(确保看到这个盒子) */
    49. transform: rotateX(90deg) translateZ(20px);
    50. }
    51. /* li:hover 立方体旋转 */
    52. .navs li:hover {
    53. transform: rotateX(-90deg);
    54. }
    55. </style>
    56. </head>
    57. <body>
    58. <div class="navs">
    59. <ul>
    60. <li>
    61. <a href="#">首页</a>
    62. <a href="#">Index</a>
    63. </li>
    64. <li>
    65. <a href="#">登录</a>
    66. <a href="#">Login</a>
    67. </li>
    68. <li>
    69. <a href="#">注册</a>
    70. <a href="#">Register</a>
    71. </li>
    72. </ul>
    73. </div>
    74. </body>
    75. </html>

    CSS动画

    使用 animation 添加 动画 效果
    动画效果:实现 多个状态 间的变化过程,动画 过程可控 (重复播放、最终画面、是否暂停)
    过渡可以 实现2个状态间的变化过程
    动画的本质是快速切换大量图片时在人脑中形成的具有 连续性的画面
    l 构成动画的最小单元: 帧或动画帧
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>01-动画实现步骤</title>
    8. <style>
    9. .box{
    10. width: 200px;
    11. height: 100px;
    12. background-color: pink;
    13. /*使用动画*/
    14. /* animation:change 2s linear; */
    15. /* animation: change 1s steps(3); 分布动画分成几等分steps */
    16. /*3 重复三次播放*/
    17. /* animation: change 2s steps(2) 1s 3; */
    18. /*无线循环infinite*/
    19. /*无线循环infinite 动画方向 alternate*/
    20. animation: changes 1s infinite alternate;
    21. /*执行完毕状态*/
    22. /* animation: change 1s backwards;默认值 动画停留在最初的状态 */
    23. /* animation: changes 1s forwards;/*动画停留在结尾状态forwards/ */
    24. }
    25. /* 定义动画 改变大小 */
    26. @keyframes change {
    27. from{
    28. width: 200px;
    29. }
    30. to{
    31. width: 600px;
    32. }
    33. }
    34. /* 二. 定义动画:200 到 500*300 到 800*500 */
    35. /* 百分比指的是动画总时长的占比 */
    36. @keyframes changes {
    37. 0% {
    38. width: 200px;
    39. }
    40. 50% {
    41. width: 500px;
    42. height: 300px;
    43. }
    44. 100% {
    45. width: 800px;
    46. height: 500px;
    47. }
    48. }
    49. </style>
    50. </head>
    51. <body>
    52. <div class="box"></div>
    53. </body>
    54. </html>
    注意:
    Ø 动画名称和动画时长必须赋值
    Ø 取值不分先后顺序
    Ø 如果有2个时间值,第一个时间表示动画时长,第二个时间表示延迟时间
    使用animation相关属性控制动画执行过程

     逐帧动画实现 使用steps实现逐帧动画

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>逐帧动画</title>
    8. <style>
    9. .box{
    10. width: 140px;
    11. height: 140px;
    12. background-image:url(./images/bg.png);
    13. animation:
    14. move 2s steps(12) infinite,
    15. run 8s forwards
    16. }
    17. @keyframes move {
    18. /* from{
    19. background-position: 0 0;
    20. } */
    21. to{
    22. /* 1680: 精灵图的宽度 */
    23. background-position: -1680px 0;
    24. }
    25. }
    26. /* 定义一个盒子移动的动画 800px */
    27. @keyframes run {
    28. /* 动画的开始状态和盒子的默认样式相同的, 可以省略开始状态的代码 */
    29. /* from {
    30. transform: translateX(0);
    31. } */
    32. to {
    33. transform: translateX(800px);
    34. }
    35. }
    36. </style>
    37. </head>
    38. <body>
    39. <div class="box"></div>
    40. </body>
    41. </html>

    走马灯效果

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    6. <title>Document</title>
    7. <style>
    8. * {
    9. padding: 0;
    10. margin: 0;
    11. }
    12. li {
    13. list-style: none;
    14. }
    15. img {
    16. width: 200px;
    17. }
    18. .box {
    19. width: 600px;
    20. height: 112px;
    21. border: 5px solid #000;
    22. margin: 100px auto;
    23. overflow: hidden;
    24. }
    25. .box ul {
    26. width: 2000px;
    27. animation: move 5s infinite linear;
    28. }
    29. .box li {
    30. float: left;
    31. }
    32. /* 定义动画:位移, ul 左侧使用 x -1400 */
    33. @keyframes move {
    34. to {
    35. transform: translateX(-1400px);
    36. }
    37. }
    38. /* 用户鼠标移入box,动画暂停 */
    39. .box:hover ul {
    40. animation-play-state: paused;
    41. }
    42. </style>
    43. </head>
    44. <body>
    45. <div class="box">
    46. <ul>
    47. <li><img src="./images/zm/1.jpg" alt="" /></li>
    48. <li><img src="./images/zm/2.jpg" alt="" /></li>
    49. <li><img src="./images/zm/3.jpg" alt="" /></li>
    50. <li><img src="./images/zm/4.jpg" alt="" /></li>
    51. <li><img src="./images/zm/5.jpg" alt="" /></li>
    52. <li><img src="./images/zm/6.jpg" alt="" /></li>
    53. <li><img src="./images/zm/7.jpg" alt="" /></li>
    54. <!-- 第567移动的时候,显示区域不能留白 -->
    55. <li><img src="./images/zm/1.jpg" alt="" /></li>
    56. <li><img src="./images/zm/2.jpg" alt="" /></li>
    57. <li><img src="./images/zm/3.jpg" alt="" /></li>
    58. </ul>
    59. </div>
    60. </body>
    61. </html>

  • 相关阅读:
    小谈设计模式(12)—迪米特法则
    Kubernetes之Pod
    Netty(三)- NIO三大组件之Channel
    rust流程控制
    【LeetCode】39、组合总和
    K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路
    Cisco交换机关于DHCP SNOOPING的配置指令
    【附源码】计算机毕业设计java支持协作知识建构的Python程序设计课程学习活动平台设计与实现
    Python 中的 with 语句用法和 Pytorch 中的 with torch.no_grad() 解析
    C++ IO流_数据的旅行之路
  • 原文地址:https://blog.csdn.net/weixin_40746230/article/details/125542593