css动画和特效

特效

知识点1.box-shadow盒子阴影

定义:盒在显示时产生阴影效果。
box-shadow:  X轴偏移量  Y轴偏移量 模糊距离  阴影尺寸  颜色 投影方式
box-shadow: h-shadow v-shadow blur spread color inset;
h-shadow 必需。水平阴影的位置。允许负值。
是指阴影水平偏移量其值可以取正负值,如果值为正值,则阴影在对象的右边,反之其值为负值时,阴影在对象的左边;
v-shadow 必需。垂直阴影的位置。允许负值。
是指阴影的垂直偏移量,其值也可以是正负值,如果为正值,阴影在对象的底部,反之其值为负值时,阴影在对象的顶部;

blur 可选。模糊距离。
此参数是可选,,但其值只能是为正值,如果其值为0时,表示阴影不具有模糊效果,其值越大阴影的边缘就越模糊;

spread 可选。阴影的尺寸。
此参数可选,其值可以是正负值,如果值为正,则整个阴影都延展扩大,反之值为负值时,则缩小;

color 可选。阴影的颜色。请参阅 CSS 颜色值。
此参数可选,如果不设定任何颜色时,浏览器会取默认色,但各浏览器默认色不一样,特别是在webkit内核下的safari和chrome浏览器将无色,也就是透明,建议不要省略此参数。

inset 可选。将外部阴影 (outset) 改为内部阴影。
此参数是一个可选值,如果不设值,其默认的投影方式是外阴影;如果取其唯一值“inset”,就是将外阴影变成内阴影,也就是说设置阴影类型为“inset”时,其投影就是内阴影;
box-shadow: h-shadow v-shadow blur spread color inset;
在这里插入代码片

知识点2.text-shadow文本阴影

text-shadow: h-shadow v-shadow blur color;
text-shadow: X轴偏移量 Y轴偏移量 阴影模糊半径 阴影颜色
h-shadow 必需。水平阴影的位置。允许负值。
这两个参数为阴影离开文字的横方向位移距离和纵方向位移距离。使用text-shadow属性时必须指定这两个参数,可以对这两个参数指定负数值。
v-shadow 必需。垂直阴影的位置。允许负值。
在这里插入代码片
blur 可选。模糊的距离。
text-shadow:所使用的第三个参数是阴影的模糊半径,代表阴影向外模糊时的模糊范围。这个半径越大,则外阴影向外模糊的范围也就越大,模糊半径的值越小,阴影向外模糊的范围越小。
模糊半径参数为可选参数,省略这个参数时,该参数默认值为0,代表阴影不向外模糊。
color 可选。阴影的颜色。
text-shadow属性所使用的参数中第四个参数是绘制阴影时所使用的颜色,该参数可以放置在其他三个参数之后,也可放在其他三个参数之前,成为第一个参数。该参数为可选参数,不对这个参数进行指定时,使用文字颜色。

知识点3.gradient渐变

所谓渐变是指从一种颜色慢慢过渡到另外一种颜色。渐变分为径向渐变和线性渐变。
绘制线性渐变
线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
background:linear-gradient(to bottom,red,yellow);
第一个参数可指定的参数值如下:
参数值	       渐变方向
to bottom	从上往下
to  right	从左往右
to  top	       从下往上
to  left	从右往左
 
第二个参数和第三个参数分别表示渐变的起点色和终点色。
径向渐变(Radial Gradients)- 由它们的中心定义
background:radial-gradient(red,yellow);
     第一个参数和第二个参数分别表示渐变的起点色和终点色。
background:radial-gradient(circle at left top,red,yellow);

知识点4.transform

第1项.transform-origin转换原点
ransform-origin 属性用来指定元素的转换原点位置
默认情况下,转换的原点在元素的中心点
或者是 X 轴和 Y 轴的 50% 处
transform-origin : 数值/百分比/关键字;

两个值:表示 X 轴和 Y 轴
三个值:表示 X 轴、Y 轴和 Z 轴
#d1
{
    transform:rotate(90deg) scale(0.5);
    transform-origin:right top;
}

#d2
{
    transform:rotate(90deg) scale(0.8);
    transform-origin:100% 100%;
}

第2项.translate位移
translate() 方法将元素从其当前位置移动
移动到 x 坐标和 y 坐标位置参数
translate(x) 或者 translate(x,y)
可取值
数值、百分比
也可以是负值
也可以使用单向位移函数
translateX(x)
translateY(y)
是css3得属性;渲染效率高,相比较定位来说;
第3项.scale缩放
scale() 方法用于改变元素的尺寸
根据给定的宽度(X 轴)和高度(Y 轴)
scale(x) 或者 scale(x,y)
一个参数时,第二个参数默认与第一个值相等
可取值
默认值为1
缩小:0 到 1 之间的数值
放大:大于 1 的数值
也可以使用单向缩放函数
scaleX(x)
scaleY(y)


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #imgs
        {
            position: absolute;
            width: 108px;
            height: 67px;
        }
        #imgs::after,#imgs::before
        {
            display: block;
            content: "";
            position: absolute;
            left:0;
            right: 0;
            top: 0;
            bottom: 0;
            background-image:url("image/icon_c.jpeg");
            background-size: cover;
            background-position: center;
        }
        #imgs::before
        {
            top: 0;
            bottom: 49%;
            transform: scaleY(-1);
        }
        #imgs::after
        {
            top:49%;
            bottom: 0;
        }

    </style>

</head>

<body>
<div id="imgs" ></div>


</body>
</html>

第4项.Rotate旋转
rotate() 方法用于旋转元素
根据原点,将元素按照顺时针旋转给定的角度
允许负值,元素将逆时针旋转
rotate(deg)
div
{
    width:150px;
    height:150px;
    border:1px solid black;
}
#d1
{
    transform:rotate(45deg);
    background-color:#ccc;
}
#d2
{
    transform:rotate(-45deg);
    transform-origin:right top;
    background-color:#ccc;
}

rotateY

3D旋转

perspective透镜

父级元素的透镜
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #div0
        {
            width: 400px;
            height: 400px;
            perspective: 500px;
        }
        #div0 div
        {
            width: 200px;
            height: 200px;
            background-color: chartreuse;
            transition: all 1s;
            margin: auto;
        }
        #div0 div:hover
        {
            transform: rotateY(30deg);
            transition: all 1s;
        }
    </style>
</head>
<body>
<div id="div0">
    <div></div>
</div>
</body>
</html>
第5项.Skew倾斜(skewX,skewY)
skew() 方法用于让元素倾斜
以原点位置,围绕 X 轴和 Y 轴按照一定的角度倾斜
可能会改变元素的形状
skew(x) 或者 skew(x,y),取值为角度
也可以使用单向倾斜函数
skewX(x)
skewY(y)
div {
    width:150px;
    height:150px;
    border:1px solid black;
}
#d1 {
    transform:skewX(45deg);
    background-color:#ccc;
}
#d2 {
    transform:skewY(45deg);
    transform-origin:right top;
    background-color:#ccc;
}

简写transform:translate(60px,-120px) scale(2);
3D动画

3D转换

转换是使元素改变形状、尺寸和位置的一种效果。

您可以使用 2D 或 3D 转换来转换您的元素。

Internet Explorer 10 和 Firefox 支持 3D 转换。
Chrome 和 Safari 需要前缀 -webkit-。
Opera,ie9仍然不支持 3D 转换 它只支持 2D 转换




CSS3 允许您使用 3D 转换来对元素进行格式化。
3D 翻转方法:
rotateX(30deg)
rotateY(30deg)
注: Internet Explorer 和
 Opera 
不支持 rotateX, rotateY 方法。
扩展
rotate和rotateZ()效果一样
	

3D位移

3D位置移动 的3种写法
transform: translate3d(30px,30px,800px)
transform:translateZ(800px) translateX(30px) translateY(30px);
transform:translateZ(800px) translate(30px,30px);

在2D的基础上多了1D (Z轴)
	

3D视距

3D视距
perspective
元素要使用3D效果 需要perspective属性配合
方法1:
<div>
<p></p>
</div> 
方法2:
<p></p>	

div{perspective:200px;}
p{width:100px;height:100px;
transform:translate3d(0,0,-50px);background:#ff9;}
				p{width:100px;height:100px;
transform:perspective(200px) translate3d(0,0,-50px);
background:#ff9;}

3D视角

3D缩放翻转
scaleZ
父框设置
perspective:1200px(3D视距)
transform-style:preserve-3d;(3D视角)
(子元素保持3D位置)
transform-origin:left/top/right/bottom
翻转位置
例:preserve-3d.html

平面上看3D是看视距,但是旋转上观看是看3D视角(在加视角的时候删除视距)

动画

知识点1.过渡动画(transition)

过渡效果一般是通过一些简单的 CSS 动作触发平滑过渡功能,比如::hover。CSS3 提供了 transition 属性来实现这个过渡功能
transition-property
设置过渡的第一个属性就是指定过渡的属性。同样,你需要指定你要过渡某个元 素的两套样式用于用户和页面的交互。那么就使用 transition-property 属性
设置背景和文字颜色采用过渡效果 
transition-property: background-color, color, margin-left;
		none
		all
		指定样式属性
		就是那些属性需要进行设置该过度的
transition-duration
如果单纯设置过渡的样式,还不能够立刻实现效果。必须加上过渡所需的时间,因为默 认情况下过渡时间为 0。 
transition-duration: 1s;
		就是变化的过度需要的时间
transition-timing-function
当过渡效果运行时,比如产生缓动效果。默认情况下的缓动是:元素样式从初始状态过 渡到终止状态时速度由快到慢,逐渐变慢,即 ease。也是默认值,其他几种缓动方式如下 表所示:

ease:慢快慢

由快到慢

linear:匀速

恒速

ease-in:慢开始

越来越快,加速

ease-out:慢结束

越来越慢,减速

ease-in-out:慢开始慢结束

先加速再减速
cubic-bezier:自定义贝兹尔曲线
transition-delay延迟多长时间开始
这个属性可以设置一个过渡延迟效果,就是效果在设置的延迟时间后再执行。使用 transition-delay 属性值。如果有多个样式效果,可以设置多个延迟时间,以空格隔开。 
transition 简写
我可以直接使用 transition 来简写,有两种形式的简写。第一种是,每个样式单独声 明;第二种是不去考虑样式,即使用 all 全部声明。 //单独声明 
transition: background-color 1s ease 0s, color 1s ease 0s, margin-left 1s ease 0s;
//如果每个样式都是统一的,直接使用 all 
transition: all 1s ease 0s;

知识点2.动画(animation )

CSS3 提供了类似 Flash 关键帧控制的动画效果,通过 animation 属性实现。那么之前的 transition 属性只能通过指定属性的初始状态和结束状态来实现动画效果,有一定的局限性。 
animation 实现动画效果主要由两个部分组成: 
1.通过类似 Flash 动画中的关键帧声明一个动画; 
2.在 animation 属性中调用关键帧声明的动画。
第1项.animation 与关键帧

animation 属性

animation: name duration timing-function delay iteration-count direction;
			animation-name	规定需要绑定到选择器的 keyframe 名称。。
			animation-duration	规定完成动画所花费的时间,以秒或毫秒计。
			animation-timing-function	规定动画的速度曲线。
						ease由快到慢
						linear恒速
						ease-in越来越快,加速
						ease-out越来越慢,减速
						ease-in-out先加速再减速
			animation-delay	规定在动画开始之前的延迟。
			animation-iteration-count	规定动画应该播放的次数。
						n
						infinite无限次
			animation-direction	规定是否应该轮流反向播放动画。
						normal
						alternate一次前一次后交替效果
			animation-fill-mode 结束后不返回
						forwards 结束停留在最后一帧
						none

关键帧 @keyframes

@keyframes myani { 
0% { 
background-color: white; 
margin-left:0px; } 
50% { 
background-color: black; 
margin-left:100px; } 
100% { 
background-color: white; 
margin-left:0px; } 
}


重复
@keyframes myani { 
0%, 100% { 
background-color: white; 
margin-left:0px; 
} 
50% { 
background-color: black; 
margin-left:100px;
}
}

的先设置动画,之后就可以启动动画
第2项.animate css插件的使用

1、首先引入animate css文件

<link rel="stylesheet" href="animate.min.css">

2、给指定的元素加上指定的动画样式名

animate.css 的默认设置也许有些时候并不是我们想要的,所以你可以重新设置,比如:
#jq22{
    animate-duration: 2s;    //动画持续时间
    animate-delay: 1s;    //动画延迟时间
    animate-iteration-count: 2;    //动画执行次数
}
<div class="animated bounceOutLeft"></div>
这里包括两个class名,第一个是基本的,必须添加的样式名,任何想实现的元素都得添加这个。第二个是指定的动画样式名。

3、如果说想给某个元素动态添加动画样式,可以通过jquery来实现:

$('#yourElement').addClass('animated bounceOutLeft');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值