Web前端开发——html5+css3进阶

CSS3-2D转换——transform

转换(transform)是css3中具有颠覆性的特征之一,可以实现元素的位移,旋转,缩放。
2D转换是改变标签在二维平面上的位置和形状的一种技术。
位移(transalte)
旋转(rotate)
缩放(scale)

2D转换——位移(translate)

可以改变元素在页面中的位置,类似定位
单位: 像素px,百分比%

transform:transalte(x,y);
transform:transalteX();
transform:transalteY();

特点:

  • 定义2D转换中的移动,沿着X和Y轴移动元素。
  • 最大的优点:不会影响其他元素的位置
  • translate中的百分比是相对于自身元素transform:transalte(50%,50%);
    对行内块元素没有效果。

让盒子实现水平垂直居中

<style>
        div {
            position: relative;
            width: 600px;
            height: 600px;
            background-color: pink;
            margin: 50px auto;
        }
        
        p {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 200px;
            background-color: deeppink;
            transform: translate(-50%, -50%);
        }       
    </style>
<body>
    <div>
        <p></p>
    </div>
</body>

2D转换——旋转(rotate)

元素在二维平面上顺时针或者逆时针旋转
单位:deg;
transform:rotate();
特点:

  • rotate度数单位 deg
  • 角度为正数时为顺时针旋转,负数时为逆时针旋转
  • 默认旋转中心点是元素的中心点,默认是Z轴转动

设置中心点转换

transform-origin:(x y);
单位:像素px,百分比%,方位名词(left,right,top,bottom,center)
注意:

  • x,y之间用空格隔开。
  • 默认中心transform-origin:(50% 50%);

2D转换——缩放(scale)

元素进行缩小或者放大
transform:scale(x,y);

  • x,y之间用逗号分隔开 里面的数字不加单位
  • transform:scale(1,1);宽高都放大一倍没有效果
  • transform:scale(2);宽高等比例放大两倍
  • transform:scale(0.5);数值小于1为缩小,等比例缩小
  • scale最大的优势:可以设置中心点缩放,不会影响其他盒子。

2D转换综合写法

transform:translate() rotate() scale();

  • 其顺序会影响转换效果(先旋转会改变坐标方向)
  • 当我们同时有位移和其他属性时,一定把位移放到前面。

CSS3动画——animation

动画(animation)是CSS3具有颠覆性的特征之一,可以设置多个节点来精确控制一个或者一组动画
相比过渡,动画可以实现更多变化,更多控制,连续自动变化播放等效果
分两步:
1.先定义动画
2.在调用动画

用@keyframes定义动画

 @keyframes move {
            /* 开始 */
            0% {
                transform: translateX(0px);
            }
            /* 结束 */
            100% {
                transform: translate(1000px, 50px);
            }
        }

调用动画

 div {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* 2. 调用动画 */
            /* 动画名称 */
            animation-name: move;
            /* 持续时间 */
            animation-duration: 2s;
        }

动画序列

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

动画属性

描述
@keyfarmes规定动画
animation所有动画属性的简写
animation-name动画属性的名称
animation-duration规定动画属性完成一个周期所需要的时间
animation-timing-function规定动画运动的曲线
animation-delay规定动画何时开始的时间
animation-iteration-count规定动画被播放的次数默认是1 无限是infinite
animation-direction规定动画的下一周期是否逆向播放 默认normal 逆向为alternate
animation-fill-mode规定动画结束后的状态保持forwards回到起始backwards
animation-play-state规定动画是否暂停(一般与hover搭配,不能写在复合属性中)

动画属性简写

animation:动画名称 持续时间 运动曲线  何时开始  播放次数  是否反方向  动画起始或者结束的状态;
animation: name duration timing-function delay iteration-count direction fill-mode;

速度曲线细节

animation-timing-function:规定动画的速度曲线,默认是“ease”

描述
linear动画从头到尾的速度是相同的。匀速
ease默认。动画以低速开始,然后加快,在结束前变慢。
ease-in动画以低速开始。
ease-out动画以低速结束。
ease-in-out动画以低速开始和结束。
steps()指定了时间函数中的间隔数量(步长)

CSS3 3D转换

近大远小
物体后面遮挡不可见

三维坐标系

X轴:水平向右     X右边是正值,左边负值
Y轴:垂直向上     Y下边是正值,上边负值
Z轴:垂直向外     Z外边是正值,里边负值

3D位移——transform

3D移动在2D移动的基础上多加了一个可以移动的方向,z轴方向。
transform:transalteX();
transform:transalteY();
transform:transalteZ();
transform:transalte(x,y,z);其中xyz不可省略没有就写0;

透视perspective

想要在网页上产生3D效果就需要透视
单位:px像素
透视是要写到父盒子上的其子盒子受影响。
距离视觉点越近平面成像越大,越远越小。

3D旋转——rotate3d

3D旋转可以在三维平面内沿着x轴,y轴,z轴或者自定义旋转。
transform:rotateX();
transform:rotateY();
transform:rotateZ();
transform:rotate3d(x,y,z,deg);

  • xyz表示旋转轴的矢量是标示你是否希望沿着该轴旋转,最后一个标示旋转角度。
  • transform:rotate3d(1,0,0,45deg);沿着x轴旋转45deg
  • transform:rotate3d(1,1,0,45deg);沿着xy轴的对角线旋转45deg

3D呈现——transfrom-style(重要)

控制子元素是否开启三维立体环境
transform-style:flat;子元素不开启3d立体空间,默认。
transform-style:preserve-3d;子元素开启立体空间

代码写给父盒子,其影响到的是子盒子。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值