2d和3d

移动web transform

2d平移

translate 在2d的页面上做平移的 水平 和 垂直 transform:translate(50px,50px)

translateX()

translateY()

translate(x,y)

特点: 他在进行平移的时候 是不会影响其他盒子的 类似于相对定位

​ 就是在平移百分比的时候 是相对于自己的宽和高来说的

​ 平移的时候 坐标系是跟着一起来走的 来做元素的平移的 – 只能水平 或者 垂直

绝对定位 : 脱离标准流 – 不占有位置

相对于谁来偏移呢?

首先父元素 有无定位 找到有定位的最近的父元素 没有定位的父元素 那么是按照body来偏移的

盒子水平 垂直居中: top: 50%;

​ left: 50%;

​ transform: translate(-50%, -50%);

  1. translate中的百分比单位是相对于自身元素的 translate:(50%,50%);

  2. translate类似定位,不会影响到其他元素的位置

  3. 对行内标签没有效果

    2d旋转 rotate

2d旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转 角度为正时 顺时针 负时 为逆时针

只能在2d这个平面上 单位是 deg

transform : rotate(45deg)

transform : rotate(225deg)

旋转中心 默认是以盒子的 中心点(正中间的点)

transform-origin: 来设置旋转中心

  1. transform-origin:50% 50%; 默认值 元素的中心位置 百分比是相对于自身的宽度和高度
  2. transform-origin:top left; 左上角 和 transform-origin:0 0;相同
  3. transform-origin:50px 50px; 距离左上角 50px 50px 的位置
  4. transform-origin:0; 只写一个值的时候 第二个值默认为 50%;

2d缩放 scale

  1. 给元素添加转换属性 transform

  2. 转换的属性值为 scale(宽的倍数,高的倍数) 如 宽变为两倍,高变为3倍 transform:scale(2,3)

  3. 缩放盒子的 1不缩放 1以上放大 1以下缩小

  4. transform:scale(1,1) 放大一倍 相对于没有放大

  5. transform:scale(2,2) 宽和高都放大了2倍

  6. transform:scale(2) 只写一个参数 第二个参数则和第一个参数一样 相当于 scale(2,2)

  7. transform:scale(0.5,0.5) 缩小

  8. transform:scale(-2,-2) 反向放大2倍 很少用负数 容易让人产生误解

动画

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

连写:::animation: name duration timing-function delay iteration-count direction fill-mode;

速度曲线

1.和设置过渡的速度曲线一样 animation-timing-function:linear;

  • linear: 匀速

  • ease: 慢-快-慢 默认值

  • ease-in: 慢-快。

  • ease-out: 快-慢。

  • ease-in-out: 慢-快-慢。

2.循环方向

animation-direction

如在动画中定义了 0%:红色 100%:黑色 那么 当属性值为

  1. normal 默认值 红 -> 黑
  2. reverse 反向运行 黑 -> 红
  3. alternate 正-反-正… 红 -> 黑 -> 红…
  4. alternate-reverse 反-正-反… 黑 -> 红 -> 黑 …

3.动画等待或者结束的状态

animation-fill-mode 设置动画在等待或者结束的时候的状态

  • forwards:动画结束后,元素样式停留在 100% 的样式
  • backwards: 在延迟等待的时间内,元素样式停留在 0% 的样式
  • both: 同时设置了 forwards和backwards两个属性值

CSS3的动画

​ 与过渡不一样 必须集合 hover才能用的!!!!!!

1.第一步 首先定义一个动画

​ 百分比是按照时间的 百分比 来对应的 100S

​ @keyframes 动画名(随便起) {

​ 0%{} 开始

​ 1%{}

​ 2%{}

​ 。。。

​ 100%{} 终止

​ }

2、第二步 才能用这个动画 必须有两个属性

动画名 动画要执行的时

from to 等价于 0% 和 100%

@keyframes move {

​ from {

​ transform: translate(0, 0);

​ }

​ to {

​ transform: translate(1000px, 0);

​ }

​ }

步长

连写:animation: pao 2s infinite steps(8);

​ animation: move 10s infinite 1s;

animation: name duration timing-function delay iteration-count direction fill-mode;

动画里边 新的 值 叫做 steps linear 匀速运动

3d

视距 perspertive 了解

人在看物体时,有个规律,如 远的物体看起来小 近的物体看起来大

perspertive 就是用来设置 物体 的距离

如 我们想要看到 物体 在z轴上的移动 的 远大近小 效果时

  1. 设置物体的 translateZ 一般大于 0 如 transform:translateZ(100px)
  2. 设置 人和物体的距离 - 视距 这个值规定要设置给物体的父元素 perspertive:1000px
  3. 动态改变物体的 translateZ 即可观察效果
 /* 父元素 */
 body {
  /* 视距 */
  perspective: 1000px;
}

/* 目标 */
div {
  width: 200px;
  height: 200px;
  background-color: aqua;
  margin: 100px auto;
  /* z轴的移动 */
  transform: translateZ(0px);
}

3d移动 translate3d

3d移动 translate3d

3d旋转 rotate3d

/* 沿着x轴正方向旋转90度 deg为单位 */
  transform: rotateX(90deg);
  1. transform:rotateX(45deg); 沿着x轴正方向旋转 45度
  2. transform:rotateY(45deg) 沿着y轴正方向旋转 45deg
  3. transform:rotateZ(45deg) 沿着Z轴正方向旋转 45deg
  4. transform:rotate3d(x,y,z,deg) 沿着自定义轴旋转 deg为角度 了解即可

坐标轴 是 随着 盒子的 旋转 而旋转的

Z轴是 垂直于 这个 平面的

连写的 时候 顺序 要根据实际情况来定 不是写死的

转换样式 transform-style 了解

结合3d立方体案例理解,控制子元素是否开启3维立体环境

  • transform-style: flat; 平面模式 - 不开启3维立体环境
  • transform-style: preserve-3d; 3维立体环境
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值