文章目录

  • 一、transform(转换)
    • 2D转换
      • 1. translate(移动)
      • 2. rotate(旋转)
      • 3. scale(缩放)
      • 4. skew(倾斜)
    • 3D转换
      • 1. translate3d(移动)
      • 2.rotate3d(旋转)
      • 透视-perspective(产生3D效果)
      • 3D呈现 transfrom-style
  • 二、animation(动画)
    • 1.什么是动画
    • 2.动画的使用
      • 2.1语法格式(定义动画)
      • 2.2语法格式(使用动画)
      • 2.3animation属性
    • 3.效果展示

一、transform(转换)

2D转换

2D转换是改变标签在二维平面上的位置和形状,你可以让元素向左右、上下移动。想要让这个2D效果动起来,需要结合过渡(transition)进行使用。

1. translate(移动)

translate(改变元素在页面中的位置
优点:不会影响其他元素的位置-对行内标签没有效果)
可跟%;相当于本身元素的高度和宽度50%就是50px

例:

<!DOCTYPE html>
<html>
<head>
<style>
div {width: 300px;height: 100px;background-color: yellow;border: 1px solid black;-ms-transform: translate(50px,100px); /* IE 9 */transform: translate(50px,100px); /* 标准语法 */
}
</style>
</head>
<body><h1>translate() 方法</h1>
<p>translate() 方法从元素当前位置对其进行移动:</p><div>
该 div 元素从其当前位置向右移动 50 个像素,并向下移动 100 个像素。
</div></body>
</html>

让盒子实现水平居中和垂直居中

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>div {position: relative;width: 500px;height: 500px;background-color: pink;/* 1. 我们tranlate里面的参数是可以用 % *//* 2. 如果里面的参数是 % 移动的距离是 盒子自身的宽度或者高度来对比的 *//* 这里的 50% 就是 50px 因为盒子的宽度是 100px *//* transform: translateX(50%); */}p {position: absolute;top: 50%;left: 50%;width: 200px;height: 200px;background-color: purple;/* margin-top: -100px;margin-left: -100px; *//* translate(-50%, -50%)  盒子往上走自己高度的一半   */transform: translate(-50%, -50%);}span {/* translate 对于行内元素是无效的 */transform: translate(300px, 300px);}</style>
</head><body><div><p></p></div><span>123</span>
</body></html>

效果如下:

2. rotate(旋转)

2D旋转指的是让元素在二维平面内顺时针或者逆时针旋转
rotate 里面跟度数,单位是 deg
角度为正时,顺时针,角度为负时,逆时针默认旋转的中心点是元素的中心点

<!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>CSS3旋转</title><link rel="stylesheet" href="./CSS/index.css">
</head><body><div class="div"><ul><li><a href="" target="_blank"><span><img src="./images/1.png" alt=""></span><div class="next"><h2>讲师介绍</h2></div></a></li><li><a href="" target="_blank"><span><img src="./images/2.png" alt=""></span><div class="next"><h2>修改作业</h2></div></a></li><li><a href="" target="_blank"><span><img src="./images/3.png" alt=""></span><div class="next"><h2>通过考试</h2></div></a></li><li><a href="" target="_blank"><span><img src="./images/4.png" alt=""></span><div class="next"><h2>领取证书</h2></div></a></li></ul></div>
</body></html>
* {margin: 0;padding: 0;box-sizing: border-box;
}body {background: #edecec;font-family: "微软雅黑";font-size: 14px;
}.div {width: 1200px;margin: 100px auto 0;background-color: #edecec;
}li {list-style: none;
}a {text-decoration: none;text-align: center;
}span {width: 230px;height: 100px;display: block;text-align: center;margin-top: 35px;transition: all 500ms linear;
}img {width: 70px;height: 70px;
}.div ul li {overflow: hidden;float: left;width: 250px;height: 250px;border: 10px solid #f6f6f6;border-radius: 50%;background-color: #fff;margin-right: 15px;transition: all 500ms linear;/* 过渡 持续时间  linear(规定从开始到结束具有相同速度的过渡效果)*/
}.next {text-align: center;padding: 0 20px;line-height: 28px;transition: all 500ms linear;color: #8b8b8b;
}.div ul li a {display: block;width: 100%;height: 100%;
}/* 效果展示 */.div ul li:hover {width: 250px;height: 250px;background: #eeedeb;transform: rotate(360deg);/* 当鼠标触碰到li时,盒子旋转360度,同时背景颜色改变 */
}.div ul li:hover span {transform: scale(1.8, 1.8);/* 鼠标放在li上的时候,盒子旋转的同时,img放大 */
}.div ul li:hover .next {color: #252525;font-size: 20px;/* 鼠标点到li时,在旋转的同时字体放大并改变颜色 */
}

效果如下:

3. scale(缩放)

用来控制元素的放大与缩小
最大的优势:可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子

例:

* {padding: 0;margin: 0;box-sizing: border-box;
}.nav {width: 860px;height: 450px;margin: 100px auto;background-color: #666666;
}li {list-style: none;
}.nav ul li img {display: block;width: 255px;height: 195px;opacity: 0.5;/* 透明度为0.5 */
}.nav ul li {overflow: hidden;float: left;margin-left: 25px;margin-top: 20px;cursor: pointer;
}.nav ul li:hover img {transform: scale(0.5);opacity: 1;transition: all 1s;/* 当鼠标点到li时,img缩小到0.5倍,过渡持续时间为1s */
}
<!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>CSS3缩放</title><link rel="stylesheet" href="./CSS/index.css">
</head><body><div class="nav"><ul><li><img src="./images/1.jpg" alt=""></li><li><img src="./images/2.jpg" alt=""></li><li><img src="./images/3.jpg" alt=""></li><li><img src="./images/4.jpg" alt=""></li><li><img src="./images/5.jpg" alt=""></li><li><img src="./images/6.jpg" alt=""></li></ul></div>
</body></html>

效果如下:

4. skew(倾斜)

使元素沿 X 和 Y 轴倾斜给定角度

<!DOCTYPE html>
<html>
<head>
<style>
div {width: 300px;height: 100px;background-color: yellow;border: 1px solid black;
}div#myDiv {-ms-transform: skew(20deg,10deg); /* IE 9 */transform: skew(20deg,10deg); /* 标准语法 */
}
</style>
</head>
<body><h1>skew() 方法</h1>
<p>skew() 方法将元素倾斜到给定角度。</p><div>
这是一个普通的 div 元素。
</div><div id="myDiv">
该 div 元素沿 X 轴倾斜 20 度,沿 Y 轴倾斜 10 度。
</div></body>
</html>

注意:

  • 同时使用多个转换,其格式为 transform: translate() rotate() scale()
  • 顺序会影响到转换的效果(先旋转会改变坐标轴方向)
  • 但我们同时有位置或者其他属性的时候,要将位移放到最前面

3D转换

  • x 轴:水平向右 – 注意:x 轴右边是正值,左边是负值
  • y 轴:垂直向下 – 注意:y 轴下面是正值,上面是负值
  • z 轴:垂直屏幕 – 注意:往外边的是正值,往里面的是负值

1. translate3d(移动)

3D 移动就是在 2D 移动的基础上多加了一个可以移动的方向,就是 z 轴方向

注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充

语法:

transform: translate3d(x, y, z)

2.rotate3d(旋转)

左手准则:

  • 左手的拇指指向 y 轴的正方向
  • 其余的手指弯曲方向就是该元素沿着 y 轴旋转的方向(正值)

旋转指可以让元素在三维平面内沿着 x 轴、y 轴、z 轴 或者自定义轴进行旋转

  • transform: rotateX(45deg) – 沿着 x 轴正方向旋转 45 度
  • transform: rotateY(45deg) – 沿着 y 轴正方向旋转 45 度
  • transform: rotateZ(45deg) – 沿着 z 轴正方向旋转 45 度
  • transform: rotate3d(x, y, z, 45deg) – 沿着自定义轴旋转 45 deg 为角度
<!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>Document</title><style>.box {width: 300px;height: 300px;margin: 100px auto;position: relative;transition: all 2s;transform-style: preserve-3d;}.box:hover {cursor: pointer;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: pink;z-index: 1;}.back {background-color: green;transform: rotateY(180deg);}</style>
</head><body><div class="box"><div class="front">熙熙攘攘</div><div class="back">华灯初上</div></div>
</body></html>

效果图如下:

透视-perspective(产生3D效果)

写在被观察元素的父元素上 透视越小,画面越大

  • d:就是视距,视距就是指人的眼睛到屏幕的距离
  • z:就是 z 轴,z 轴越大(正值),我们看到的物体就越大

3D呈现 transfrom-style

  • 控制子元素是否开启三维立体环境
  • transform-style: flat 代表子元素不开启 3D 立体空间,默认的
  • transform-style: preserve-3d 子元素开启立体空间
  • 代码写给父级,但是影响的是子盒子

例:

 <div class="box"><div></div><div></div></div>
<style>/* div {width: 100px;height: 100px;border-color: pink;/* transform: translateX(100px) translateY(100px) translateZ(100px); transform: translate3d(100px, 100px, 100px);} */body {perspective: 500px;}.box {width: 200px;height: 200px;margin: 100px auto;position: relative;transition: all 1s;transform-style: preserve-3d;}.box:hover {transform: rotateY(60deg);}.box div {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background-color: pink;}.box div:last-child {transform: rotateX(60deg);background-color: purple;}</style>

二、animation(动画)

1.什么是动画

动画是 CSS3 中最具颠覆性的特征之一,可通过设置多个节点来精确的控制一个或者一组动画,从而实现复杂的动画效果

2.动画的使用

  • 先定义动画
  • 在调用定义好的动画

2.1语法格式(定义动画)

@keyframes 动画名称 {0% {width: 100px;}100% {width: 200px}
}

2.2语法格式(使用动画)

div {/* 调用动画 */animation-name: 动画名称;/* 持续时间 */animation-duration: 持续时间;
}

动画序列:

  • 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列
  • 在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果
  • 动画是使元素从一个样式逐渐变化为另一个样式的效果,可以改变任意多的样式任意多的次数
  • 用百分比来规定变化发生的时间,或用 fromto,等同于 0% 和 100%

2.3animation属性

3.效果展示

代码:

<!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>阴阳师f4</title><link rel="stylesheet" href="./css/index.css">
</head><body><div class="f4_box"><div class="wek01"><div class="wek_1"></div></div><div class="wek02"><div class="wek_2"></div></div><div class="wek03"><div class="wek_3"></div></div><div class="wek04"><div class="wek_4"></div></div></div>
</body></html>
* {padding: 0;margin: 0;box-sizing: border-box;
}.f4_box {position: fixed;width: 100%;height: 180px;left: 0;bottom: 0;z-index: 99;transition: all 2.3s ease;
}.wek01 {position: absolute;bottom: 0;left: 0;opacity: 0;width: 154px;height: 121px;animation: wek01 15s linear infinite;
}.wek_1 {width: 154px;height: 121px;background: url(../images/txgc_6d0e9e5.png) no-repeat;animation: wek_1 .4s steps(2) infinite;
}@keyframes wek_1 {0% {background-position: 0 0;}100% {background-position: -308px 0;}
}@keyframes wek01 {0% {transform: translate(-200px, 0);opacity: 1;}100% {transform: translate(1920px, 0);opacity: 1;}
}.wek02 {position: absolute;bottom: 0;left: 0;opacity: 0;width: 165px;height: 175px;animation: wek02 15s linear 2s infinite;/* 这里的2s是指在前面一个盒子走了2s之后在开始移动 */
}.wek_2 {width: 165px;height: 175px;background: url(../images/txgh_fee2457.png) no-repeat;animation: wek_2 .4s steps(2) infinite;
}@keyframes wek_2 {0% {background-position: 0 0;}100% {background-position: -334px 0;}
}@keyframes wek02 {0% {transform: translate(-200px, 0);opacity: 1;}100% {transform: translate(1920px, 0);opacity: 1;}
}.wek03 {position: absolute;bottom: 0;left: 0;opacity: 0;width: 180px;height: 142px;animation: wek03 15s linear 4s infinite;/* 这里的2s是指在前面一个盒子走了4s之后在开始移动 */
}.wek_3 {width: 180px;height: 142px;background: url(../images/txgl_c15cfd8.png) no-repeat;animation: wek_3 .4s steps(2) infinite;
}@keyframes wek_3 {0% {background-position: 0 0;}100% {background-position: -334px 0;}
}@keyframes wek03 {0% {transform: translate(-200px, 0);opacity: 1;}100% {transform: translate(1920px, 0);opacity: 1;}
}.wek04 {position: absolute;bottom: 0;left: 0;opacity: 0;width: 166px;height: 155px;animation: wek04 15s linear 6s infinite;/* 这里的2s是指在前面一个盒子走了6s之后在开始移动 */
}.wek_4 {width: 166px;height: 155px;background: url(../images/txgq_d281c9b.png) no-repeat;animation: wek_4 .4s steps(2) infinite;
}@keyframes wek_4 {0% {background-position: 0 0;}100% {background-position: -334px 0;}
}@keyframes wek04 {0% {transform: translate(-200px, 0);opacity: 1;}100% {transform: translate(1920px, 0);opacity: 1;}
}

效果如下:

css3动画的神奇之处相关推荐

  1. (30)css3动画

    一.CSS3动画介绍 css3 中提供了自己的动画制作方法,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. 二.CSS3动画制作方式 css3 动画制作分为两步:1.创建 ...

  2. 一起领略css3动画的强大

    CSS3的确出了不少高大上的功能,3D效果/动画/多列等等;今天写篇文章记录怎么一下怎么用CSS3写一个动画;不过还是要提醒大家:IE9及以下版本不支持CSS3动画(需要可以考虑用js,不过估计效果不 ...

  3. svg配合css3动画_如何使用CSS制作节日SVG图标动画

    svg配合css3动画 正是这个季节,因此在本教程中,我将逐步创建一些CSS动画,以假日为主题的SVG图标. Iconmelon上有一些很棒的图标,该网站上有许多免费的矢量图标集,可让您尽其所能 . ...

  4. Html+css3动画效果

    Html+css3动画效果 开发工具与关键技术:DW 作者:彭春怡 撰写时间:2019/1/16 1.下面是通过html+css3完成的一个动画效果,"跳跳球".实现的代码如图所示 ...

  5. CSS3动画那么强,requestAnimationFrame还有毛线用--摘抄

    CSS3动画那么强,requestAnimationFrame还有毛线用? 这篇文章发布于 2013年09月30日,星期一,19:12,归类于 web综合. 阅读 197124 次, 今日 84 次 ...

  6. 美妙的 CSS3 动画!一组梦幻般的按钮效果

    今天给大家带来的是五款梦幻般的动画按钮效果.下面是在线演示,把鼠标放在按钮上试试,有惊喜哦!CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果. 温馨提示:为保 ...

  7. [css3动画教程]:逐帧自适应精灵图

    一.animation属性设置 要启用css3动画,就要先了解 animation 属性, animation 属性是一个简写属性,用于设置六个动画属性: animation-name 规定 @key ...

  8. CSS入门八、CSS3动画

    零.文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789 个人博客-GiteePages:https://bluecusliyou.gi ...

  9. svg配合css3动画_与Sarah Drasner一起使用CSS,JS和SVG进行动画处理,并避免倦怠

    svg配合css3动画 In this episode of the Versioning Show, Tim and David are joined by Sarah Drasner, a tea ...

最新文章

  1. R语言广义线性模型函数GLM、R中有几种泊松回归扩展和变异、变时段泊松回归、零膨胀泊松回归、鲁棒泊松回归、pscl包的zeroinfl拟合零膨胀泊松回归、robust包中的glmRob函数拟合鲁棒模型
  2. yytextview多种格式_Android 一个TextView字体设置多种不同颜色
  3. java 坦克重叠_【Java】我所知道坦克大战(单机版)之画出坦克的实心圆、让圆动起来、双缓冲解决闪烁问题...
  4. sql语句截断_SQL Server中SQL截断和SQL删除语句之间的区别
  5. 共享GPU来了!投身去中心化机器学习,比挖矿多赚3倍
  6. XAML实例教程系列 - 类型转换器(Type Converter)
  7. Linux上通过SUU更新Dell服务器固件
  8. NGN学习笔记5——IMS技术
  9. Linux修改用户名(主机名)
  10. 千图成像!祝可爱的小伙伴们圣诞快乐!给女朋友一个惊喜吧!
  11. yate工具的使用求教
  12. js 翻转数组 倒序排列
  13. php微云上传,API - 微云
  14. APISpace 绕口令API
  15. 编译原理:LL(1)文法 语法分析器(预测分析表法)
  16. 基础的JavaScript编码规范
  17. 商场会员营销系统 购物中心会员精细化运营体系
  18. 数据中台之OneID (ID-Mapping)架构设计细节全解
  19. DCM4CHE处理多帧图像
  20. Linux服务器下挂载存储

热门文章

  1. Python列表和元组的详细区别
  2. 补习系列(6)-SpringBoot 整合Shiro 一指禅
  3. arcgis栅格按掩膜提取后unique value变多
  4. win7无法识别linux usb设备,win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)...
  5. 大学计算机基础考试2试题,2016大学计算机基础试题及答案(2)
  6. 443端口被占用无法启动解决办法
  7. 软件工程师,不懂点设计模式怎么行
  8. 10开根号,如何求?
  9. Android Studio简单计算器App实现
  10. Ubuntu Desktop 删除文件