CSS3过渡效果

过渡简介

过渡效果一般是通过一些简单的CSS动作触发平滑过渡功能,比如::hover、:focus、:active、:checked等。CSS3提供了transition属性来实现这个过渡功能,主要属性如下:

transition-property指定过渡或动态模拟的CSS属性

transition-duration指定完成过渡所需的时间

transition-timing-function指定过渡的函数

transition-delay指定过渡开始出现的延迟时间

transition简写形式,按照上门四个属性值连写

我们先创建一个没有过渡效果的元素,然后通过:hover来触发它。在没有任何过渡效果的触发,会立即生硬的执行触发。

//设置元素样式

div{

width:200px;

height:200px;

background-color:white;

border:1px solid green;

}

//鼠标悬停后背景变黑,文字变白

div:hover{

background-color:black;

color:white;

margin-left:50px;

}

transition-property

首先,设置过渡的第一个属性就是指定过渡的属性。同样,你需要指定你要过渡某个元素的两套样式用于用户和页面的交互。那么就使用transition-property属性,详细属性值如下:

none没有指定任何样式

all默认值,指定元素所支持transition-property属性的样式

指定样式指定支持transition-property的样式

从上门的列表中来看,一般来说,none用于本身有过渡样式从而取消。而all,则是支持所有transition-property样式,还有一种是指定transition-property中的某些样式。那么transition-proerty支持的样式有哪些?如下表所示:

background-color color(颜色)

background-imageonlygradients(渐变)

background-position percentage,length(百分比,长度值)

border-bottom-color color

border-bottom-width length

border-color color

border-left-color color

border-left-width length

border-right-color color

border-right-width length

border-spacing length

border-top-color color

border-top-width length

border-width length

bottom length,percentage

color color

crop rectangle

font-size length,percentage

font-weight number

grid-*  various

height length,percentage

left length,percentage

letter-spacing length

line-height number,length,percentage

margin-bottom length

margin-left length

margin-right length

margin-top length

max-height length,percentage

max-width length,percentage

min-height length,percentage

min-width length,percentage

opacity number

outline-color color

outline-offset integer

outline-width length

padding-bottom length

padding-left length

padding-right length

padding-top length

right length,percentage

text-indent length,percentage

text-shadow shadow

top length,percentage

vertical-align keywords,length,percentage

visibility visibility

width length,percentage

word-spacing length,percentage

z-index integer

zoom number

//设置背景和文字颜色采用过渡效果(过渡时间为1S)

div {

    width: 200px;

    height: 200px;

    border: 1px solid green;

    background-color: white;

    transition-property: background-color, color, margin-left;

    //这是指定过渡的属性,也可以只写margin-left

    transition-property: all; //所有的属性都参与过渡 【和上面属性二选一】

    transition-duration: 1s;

}

 

div:hover {

    background-color: black;

    color: white;

    margin-left: 100px;

};

transition-duration

如果单纯设置过渡的样式,还不能够立刻实现效果。必须加上过渡所需的时间,因为默认情况下过渡时间为0。

//设置过渡时间为1秒钟,如果是半秒钟可以设置为.5

stransition-duration:1s;

transition-timing-function

当过渡效果运行时,比如产生缓动效果。默认情况下的缓动是:元素样式从初始状态过渡到终止状态时速度由快到慢,逐渐变慢,即ease。也是默认值,其他几种缓动方式如下表所示:

ease默认值,元素样式从初始状态过渡到终止状态时速度由快到慢,逐渐变慢。等同于贝塞尔曲线(0.25,0.1,0.25,1.0)

linear元素样式从初始状态过渡到终止状态速度是恒速。等同于贝塞尔曲线(0.0,0.0,1.0,1.0)

ease-in元素样式从初始状态过渡到终止状态时,速度越来越快,呈一种加速状态。等同于贝塞尔曲线(0.42,0,1.0,1.0)

ease-out元素样式从初始状态过渡到终止状态时,速度越来越慢,呈一种减速状态。等同于贝塞尔曲线(0,0,0.58,1.0)

ease-in-out元素样式从初始状态过渡到终止状态时,先加速,再减速。等同于贝塞尔曲线(0.42,0,0.58,1.0)

//恒定速度

transition-timing-function:linear;

以上五种都是设定好的属性值,我们也可以自定义这个缓动。使用cubic-bezier()属性值,里面传递四个参数p0,p1,p2,p3,值在0~1之间。

//自定义缓动transition-timing-function:cubic-bezier(0.25,0.67,0.11,0.55);

    /*transition-timing-function: ease;*/

    /*transition-timing-function: linear;*/

    /*transition-timing-function: ease-in;*/

    /*transition-timing-function: cubic-bezier(0.25, 0.65, 0.88, 0.25);*/

transition-delay

这个属性可以设置一个过渡延迟效果,就是效果在设置的延迟时间后再执行。使用transition-delay属性值。如果有多个样式效果,可以设置多个延迟时间,以空格隔开。

//设置延迟效果

transition-delay:0s,1s,0s;

div:hover {

    background-color: black;

    color: white;

    margin-left: 100px;

};

 

transition-delay: 0s, 2s, 0s;// 指color过了2秒后才变白

简写和版本

我可以直接使用transition来简写,有两种形式的简写。第一种是,每个样式单独声明;第二种是不去考虑样式,即使用all全部声明。

//单独声明

transition:background-color 1s ease 0s,

color 1s ease 0s,

margin-left 1s ease 0s;

属性 过渡时间 过渡效果 延迟时间

//如果每个样式都是统一的,直接使用all

transition:all 1s ease 0s; //所有属性一样值

为了兼容旧版本,需要加上相应的浏览器前缀,

 //兼容完整版

-webkit-transition:all 1s ease 0s;

-moz-transition:all 1s ease 0s;

-o-transition:all 1s ease 0s;

-ms-transition:all 1s ease 0s;

transition:all 1s ease 0s;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值