1空间转换

使用transform属性实现元素在空间内的位移、旋转、缩放等效果

空间:是从坐标轴角度定义的。x 、y 和z三条坐标轴构成了一个立体空间,z轴位置与视线方向相同。

空间转换也叫3D转换

1.1空间位移

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

1.1.1translatez轴

/* 3d变换连写 transform: translate3d(x轴,y轴,z轴) */transform: translateZ(400px)

1.1.2perspective(透视)属性

使用perspective属性实现透视效果

transform: translateZ(400px);看不到z轴的变化情况,因为大小不变看不出变化;

通过给父级加perspective(透视)属性

(取值推荐800-1200透视距离也称为视距,所谓的视距就是人的眼睛到屏幕的距离。)

,实现近大远小,近实远虚的效果

<!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>/*  transform: translateZ(400px);看不到z轴的变化情况,因为大小不变看不出变化;通过给父级加perspective(透视)属性(取值推荐800-1200透视距离也称为视距,所谓的视距就是人的眼睛到屏幕的距离。),实现近大远小,近实远虚的效果 */body {perspective: 800px;}.box {width: 200px;height: 200px;background-color: pink;transition: all .8s;margin: 200px auto;}.box:hover {transform: translate3d(400px, 200px, 200px);/* 3d变换连写 transform: translate3d(x轴,y轴,z轴) */}</style>
</head><body><div class="box"></div>
</body></html>

1.2空间旋转

3d空间旋转

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

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

角度单位是:deg,turn

<!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: 200px;height: 200px;/* background-color: pink; */margin: 200px auto;}.box img {width: 100%;transition: all .8s;height: 100%;}.box:hover img{/* transform: rotatex(180deg ); *//* x轴,正值从上往下翻 *//* transform: rotatey(360deg ); *//* y轴,正值从左往右翻 *//* transform: rotatez(180deg ); *//* z轴,正值从顺时针转圈 */transform: rotate3d(1,1,1,1turn)/* 3d空间旋转 transform: rotate3d(x, y, z, 角度度数):用来设置自定义旋转轴的位置及旋转的角度;x,y,z 取值为0-1之间的数字角度单位是:deg,turn*/}</style>
</head><body><div class="box">
<img src="../images/heart.png" alt=""></div>
</body></html>

1.3立体呈现(transform-style: preserve-3d)

由于perspective透视属性不能呈现立体图形,perspective只增加近大远小、近实远虚的视觉效果。

所以我们对子元素的父元素使用transform-style: preserve-3d; 使子元素处于真正的3d空间.

<!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 {position: relative;transform-style: preserve-3d;width: 200px;height: 200px;margin: 100px auto;background-color: aqua;transition: all .9s;}.box:hover {transform: rotatey(0.5turn);}.one,.two {position: absolute;left: 0;top: 0;width: 100%;height: 100%;background-color: red;transform: translateZ(100px);}.two {background-color: pink;transform: translateZ(-100px);}</style>
</head><body><div class="box"><div class="one">前面</div><div class="two">后面</div></div>
</body></html>

1.4立体按钮

鼠标移动到'首页'时,上方的index旋转至正面,实现代码如下.

<!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>* {margin: 0;padding: 0;}ul {list-style: none;}a {text-decoration: none;color: #fff;}.box {width: 800px;height: 50px;margin: 100px auto;}.box li {perspective:800px;width: 120px;height: 50px;float: left;margin-right: 50px;}.box li a {/* 开启3d */transform-style: preserve-3d;position: relative;display: block;width: 100%;height: 100%;/* background-color: pink; */transition: all .9s;}.box li a:hover {transform: rotateX(-90deg);}.box li span {position: absolute;left: 0;top: 0;display: block;width: 100%;height: 100%;text-align: center;line-height: 50px;}.box li span:first-child {transform:translatey(-25px) rotateX(90deg) ;background-color: yellowgreen;}.box li span:last-child {background-color: blue;transform: translateZ(25px);}</style>
</head><body><div class="box"><ul><li><a href="#"><span>index</span><span>首页</span></a></li><li><a href="#"><span>login</span><span>登录</span></a></li><li><a href="#"><span>register</span><span>注册</span></a></li></ul></div>
</body></html>

注意:包含'index'的span需要先y轴上升高盒子高度的一半(25px),然后再绕x轴转90度;

 .box li span:first-child {transform:translatey(-25px) rotateX(90deg) ;background-color: yellowgreen;}

1.5 3d缩放 scale

正常情况下z轴正对我们的方向,即使z轴的高放大我们也无法看到,

所以通过 perspective的近大远小效果,来看到z轴的高的放大,盒子向内转90度后,盒子的z轴高度就能被我们看到.

<!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>body {perspective: 800px;/* 透视默认中心点在盒子中间,所以以后记得把盒子居中 */}.box {width: 400px;height: 400px;background-color: pink;margin: 200px auto;transition: all .9s;}.box:hover {/* transform: scalex(2); *//* scalx,放大的是宽 *//* transform: scaley(2); *//* scaly,放大的是高 */transform: scalez(200) rotatex(90deg);/* scalz,放大的是高 */}</style>
</head><body><div class="box"></div>
</body></html>

2.动画animation

过渡与动画的区别?

1.过渡实现的是2个状态间的变化过程,而动画可以实现多个状态间的变化过程.,且动画过程可控(重复播放、最终画面、是否暂停)

2.过渡通常要与伪类选择器:hover搭配使用,而动画不必要

2.1 实现动画的步骤

2.1.1      定义一个动画  @keyframes 动画名{}

   @keyframes run {100%{background-position: -1680px 0;}

2.1.1.1定义动画第一种方式

   @keyframes move{from{transform: translate(0, 0);}to{transform: translate(1000px, 0);}}

2.1.1.2定义动画第二种方式

  @keyframes run {0%{background-position: 0 0; }100%{background-position: -1680px 0;}}

注意:

1.0%到100%之间可以写多个值,如0%,25%,50%,75%,100%

2.如果from或者0%的盒子位置状态不发生变化可以省略,如:

  @keyframes run {100%{background-position: -1680px 0;}}

2.1.2     调用动画 animation: 动画名 动画花费时长

            animation: run 2s infinite alternate linear;

2.1.3

animation的连写方式:

2.1.4

animation的部分属性和属性值:

2.2 逐帧动画

使用steps实现逐帧动画
逐帧动画:帧动画。开发中,一般配合精灵图实现动画效果。
animation-timing-function: steps(N);含义:将动画过程等分成N份

实现剑客奔跑效果

精灵图:

注意:

1.定义动画中(keyframs中)改变背景图的位置移动的距离就是精灵图的宽度.

@keyframes run {100%{background-position: -1680px 0;}}

2.添加速度曲线steps(n)时,n就是精灵图上小图的个数.

animation: run 2s  steps(12) infinite,move 3s infinite linear;

3.添加无限重复效果infinite

animation: run 2s  steps(12) infinite,move 3s infinite linear;

代码如下:

<!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: 140px;height: 140px;background-color: green;/* border-radius: 50%; */background-image: url(../images/bg.png);animation: run 2s  steps(12) infinite,move 3s infinite linear;}@keyframes run {100%{background-position: -1680px 0;}}/* @keyframes move {100%{transform: translate(1900px,0) rotate(3turn);}} */</style>
</head>
<body><div class="box"></div>
</body>
</html>

2.3 轮播图实现

实现轮播框内七个图无缝循环播放,鼠标移动上去会暂停.

注意:

当原本七个图结束后会出现空白,同时会突兀的转到第一二三张图出现在展示框内.

为了解决这个问题,使不出现空白并且使连接第一二三张图更加无缝,我们在原本的七个li后增加三个li,这三个li复制于前三张图,所以其实ul中一共有7+3=10张图.

<!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>* {margin: 0;padding: 0;}.box {width: 600px;height: 150px;border: 3px solid #000;margin: 100px auto;overflow: hidden;}.box ul {width: 2000px;list-style: none;animation: move 6s infinite linear;}ul:hover{animation: move 3s infinite linear paused;}.box ul li {float: left;}a {display: block;width: 200px;height: 150px;}img {width: 100%;height: 100%;}@keyframes move {100% {transform: translate(-1400px, 0);}}</style>
</head><body><div class="box"><ul><li><a href="#"><img src="../images/1.jpg" alt=""></a></li><li><a href="#"><img src="../images/2.jpg" alt=""></a></li><li><a href="#"><img src="../images/3.jpg" alt=""></a></li><li><a href="#"><img src="../images/tyre1.png" alt=""></a></li><li><a href="#"><img src="../images/tyre.png" alt=""></a></li><li><a href="#"><img src="../images/product.jpg" alt=""></a></li><li><a href="#"><img src="../images/rotate.png" alt=""></a></li><li><a href="#"><img src="../images/1.jpg" alt=""></a></li><li><a href="#"><img src="../images/2.jpg" alt=""></a></li><li><a href="#"><img src="../images/3.jpg" alt=""></a></li><!-- 解决动画留白问题,在后面补上最前面三个图,造成一种接到第一个的假象 --></ul></div>
</body></html>

2.css动画(空间转换,动画)相关推荐

  1. CSS的补充(3 空间转换 动画)

    一.空间转换 属性 transform 语法 transform:translate3d(x,y,z) 透视 属性 perspective(添加给父级)视距,指人眼到屏幕的距离 取值 像素单位,数一般 ...

  2. 【CSS3】 平面转换 空间转换 动画

    目录 平面转换 平移 缩放 倾斜 旋转 transform复合属性 空间转换 空间位移 空间旋转 呈现立体图形 空间缩放 动画 动画属性 steps逐帧动画 多组动画 平面转换 CSS3中动画效果包括 ...

  3. CSS 空间转换3D和动画

    空间转换3D 3D坐标系 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我们)越大,是正值,否则反之 3D位移 完整写法 tr ...

  4. CSS空间转换和动画

    一.空间转换 3D 3D坐标系 3D 坐标系比2D 多了一个Z轴. 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我们)越大, ...

  5. CSS——空间转换 和 动画

    一.空间转换 空间:x.y.z三个坐标轴,z轴和用户的视线在一条直线上,z轴的正轴指向用户自己:空间转换也叫3D转换:(不是网页开发重点.因为目前设计师追求简洁风,空间转换用得少) 属性:transf ...

  6. 浅学一点空间转换3D和动画知识

    一 . 空间转换3D 3D坐标系 3D坐标系比2D多了一个Z轴. 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我们)越大,是 ...

  7. CSS转换动画与移动web

    CSS转换与移动web 一.课前导学 1.阶段目标: 使用字体图标.平面转换.动画等C3属性丰富网页效果和呈现方式 2.CSS3 目标:使用平面.空间转换和动画属性,丰富网页元素 3.Flex 了解移 ...

  8. 空间转换 3D; 动画(重点)

    一.空间转换 3D 1.   3D坐标系 3D 坐标系比2D 多了一个Z轴. 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我 ...

  9. HTML里关于空间转换3D和动画效果的实现

    一.3D坐标系 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我们)越大,是正值,否则反之 3D 位移动 transform: ...

最新文章

  1. iOS安全攻防(十七):Fishhook
  2. asp.net模版页面的高级应用
  3. 用C++开发与调用WebService的例子
  4. [转]Django 好用的第三方包
  5. 记一次海洋cms任意代码执行漏洞拿shell(url一句话)
  6. MSSQL 同步两个数据库的示例
  7. python爬虫框架论文开题报告范文_论文开题报告范文
  8. 关于HikariCP的见解
  9. DongTai--被动型IAST工具部署体验
  10. 找不到本地计算机策略组,Win10家庭版找不到本地组策略gpedit.msc解决办法
  11. 国内首款红外测温5G手机;华为5G汽车模组正式商用;台湾发放首张5G牌照
  12. NET Reflector 8 使用
  13. 用数学语言说我爱你怎么说_你会说我的语言吗
  14. 计算机二级考试公网入口和教育网入口,考试入口
  15. IT经理-从新手到老鸟
  16. 【Bugfix系列】/usr/bin/ld: cannot find -lxxx 的解决办法
  17. 2019年淘宝新店如何引流
  18. Java将对象的属性值合并
  19. Python数据可视化第 2 讲:matplotlib 绘图中文字体设置
  20. Spring基于AspectJ实现AOP操作

热门文章

  1. 【vscode远程开发】使用SSH远程连接服务器 「内网穿透」
  2. 【网络安全】嘴对嘴教你利用XSS攻击,体验一次当黑客的感觉
  3. TDDFT计算软件Octopus学习笔记(四):带隙优化方法
  4. 基于python3.6的OpenCV读取并打印图片数据
  5. 网络调试信息点怎么计算机,网络调试助手
  6. 远程办公常态化,百度Hi延伸能力边界
  7. 关于华强北悦虎耳机破解开启苹果手机弹窗动画学习教程
  8. 施工员证书建筑八大员证书施工员市政给排水施工HDPE施工工艺
  9. 【Python的自学之路】(二):学习python的基础知识
  10. Dynamic-IPSec