CSS3渐变,过渡,转换,动画及浏览器兼容问题——近日总结(二)

本文总结了CSS3中的animation、transition和transform特性。重点介绍了@keyframes规则,包括animation-name、animation-duration和animation-timing-function属性。同时讲解了transition的语法和属性,以及transform的transform-origin属性,探讨了如何改变元素变形的原点。
摘要由CSDN通过智能技术生成

       ~~~~~~       CSS3中的过渡,转换和动画结合起来使用,视觉效果会更好,所以我把这三块的内容放在一起。

●animation(动画)

@keyframes规则

@keyframes myfirst {
	from {
	 	 /*样式*/
	}
	to {
		/*样式*/
	}
}
@-webkit-keyframes myfirst {
	from {
	 	 /*样式*/
	}
	to {
		/*样式*/
	}
}

属性

animation-name:规定@keyframes的名称
animation-duration:规定动画完成一个周期所花的时间
animation-timing-function:规定动画的速度曲线,默认值是“ease”
       ~~~~~~       linear: 动画速度不变
       ~~~~~~       ease:动画以低速开始,加快,在结束前变慢
       ~~~~~~       ease-in: 动画以低速开始
       ~~~~~~       ease-out:动画以低速结束
       ~~~~~~       ease-in-out:动画以低速开始和结束

●Transition(过渡)

语法

transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;

transition: property duration timing-function delay;

属性

属性描述举例
property要进行过渡的元素的属性none、all、width
duration要进行的时间(秒或者毫秒1s、100ms
timing-function过渡的曲线linear(匀速)、ease(慢速开始,加速然后慢速结束)、ease-in(慢速开始)、ease-out(慢速结束) ease-in-out(慢速开始和结束)
delay延迟的时间1s、100ms

举例

 div {
      	width: 300px;
        height: 100px;
        background-color: blue;
     }
 div:hover {
       	animation: div infinite 1s;
     }
 @keyframes div {
        0% {background-color: blue;}
        100% {background-color: blueviolet;}
     }
/*以上为css部分*/
  <div></div> /*html部分*/

●Transform(过渡)

语法

transform: none|transform-functions1 transform-functions2 transform-functions3...;
transform-origin: x-axis y-axis z-axis;

transform

描述
translate(x,y)从当前位置移动到left,top
translate3d(x,y,z)在x,y,z轴移动的像素
translateX(x)从当前位置移动到left
translateY(y)从当前位置移动到right
translateZ(z)移动到z轴的像素
scale(x,y)增加(减少)宽度和高度
scale3d(x,y,z)增加(减少)宽度,高度和z轴的值
scaleX(x)增加(减少)宽度
scaleY(y)增加(减少)高度
scaleZ(z)增加(减少)z轴上的值
rotate(angle)定义 2D 旋转
rotate3d(x,y,z,angle)定义 3D 旋转
rotateX(angle)定义沿 X 轴的 3D 旋转
rotateY(angle)定义沿 Y 轴的 3D 旋转
rotateZ(angle)定义沿 Z 轴的 3D 旋转
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style> 
    @keyframes kefu {
        from {
            -ms-transform:scale(1,1); /* IE 9 */
            -webkit-transform: scale(1,1); /* Safari */
            transform: scale(1,1); /* 标准语法 */
        }
    
        60% {
            -ms-transform:scale(1.2,1.2); /* IE 9 */
            -webkit-transform: scale(1.2,1.2); /* Safari */
            transform: scale(1.2,1.2); /* 标准语法 */
        }
        to {
            -ms-transform:scale(1,1); /* IE 9 */
            -webkit-transform: scale(1,1); /* Safari */
            transform: scale(1,1); /* 标准语法 */
        }

    }
    #kefu {
        position: fixed;
        right: 40px;
        bottom: 50px;
        width: 150px;
        height: 48px;
        border-radius: 20px;
        box-shadow: 5px 6px 26px -6px rgba(23, 92, 255, 0.55) ;
        background: -webkit-linear-gradient(left,#2e6ef0, #1c4be6); /* Safari 5.1 - 6.0 */
        background: -o-linear-gradient(right, #2e6ef0, #1c4be6); /* Opera 11.1 - 12.0 */
        background: -moz-linear-gradient(right, #2e6ef0, #1c4be6); /* Firefox 3.6 - 15 */
        background: linear-gradient(to right, #2e6ef0, #1c4be6);
        animation: kefu 1.5s ease-in-out infinite;
    }
    #kefu a {
        text-align: center;
        color: white;
        font-size: 16px;
        line-height: 48px;
    }
    #kefu a span {
        margin-left: 5px;
    }
    </style>
</head>
<body>
    <div id="kefu">
        <a href="javascript:void(0);">
            <i class="iconfont icon-liaotian"></i>
            <span>点我咨询</span>
        </a>
    </div>
</body>
</html>

transform-origin

transform-origin作用
这个属性是用来改变元素变形的原点,一般用来配合旋转来使用最多。接收参数可为一个、两个、三个。当为两个值,分别代表距离盒模型左侧的值,如transform-origin: 50px 50px;,表示该容器的旋转中心变为以盒模型左上角为原点,X和Y轴距离50px为原点进行旋转。
在这里插入图片描述

描述
x-axis定义视图被置于 X 轴的何处
y-axis定义视图被置于 Y 轴的何处
z-axis定义视图被置于 Z 轴的何处

x,y轴可能的值有:left,center,right,length,%
z轴的值是:length

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于谷歌官方提供的3D翻转示例进行修改,修复了在不同设备上显示效果差异过大的问题。项目地址:https://github.com/GcsSloop/Rotate3dAnimation 效果图:如何使用:// 计算中心点(这里是使用view的中心作为旋转的中心点)         final float centerX = view.getWidth() / 2.0f;                 final float centerY = view.getHeight() / 2.0f;        //括号内参数分别为(上下文,开始角度,结束角度,x轴中心点,y轴中心点,深度,是否扭曲)         final Rotate3dAnimation rotation = new Rotate3dAnimation(this, start, end, centerX, centerY, 1.0f, true);         rotation.setDuration(1500);                               //设置动画时长         rotation.setFillAfter(true);                              //保持旋转后效果         rotation.setInterpolator(new AccelerateInterpolator());   //设置插值器         rotation.setAnimationListener(new AnimationListener() {   //设置监听器             @Override             public void onAnimationStart(Animation animation) {             }            @Override             public void onAnimationRepeat(Animation animation) {             }            @Override             public void onAnimationEnd(Animation animation) {             }         });         view.startAnimation(rotation);                            //开始动画
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值