好玩多样的css3过渡效果transition

217 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

u=3761904864,2031434823&fm=253&fmt=auto&app=138&f=JPEG.webp

前言

在我们开发过程中,过渡效果必不可少,比如有时我们想通过某个动作实现元素样式的变化,又不希望用JavaScript去控制的时候,css3中的过渡(transition) 效果便可以轻松搞定

属性

我们在使用过渡效果时要考虑两个方面:

1.过渡效果持续时间

2.过渡前后的样式变化

过渡效果主要有以下四个属性:

  • transition-property 应用过渡效果的 CSS 属性名称
  • transition-duration 过渡效果持续的时间
  • transition-timing-function 过渡效果时间曲线,默认是 "ease"
  • transition-delay规定过渡效果何时开始

如果要添加多个样式的变换效果,可以直接用transition一个属性名融合,添加的属性由逗号分隔,例: transition: height, 1s, linear, 1s

扩展: transition-timing-function又包括以下属性:

  1. linear 匀速从开始至结束的过渡效果
  2. ease 以慢速开始,然后速度变快,最后慢速结束的过渡效果
  3. ease-in 以慢速开始的过渡效果
  4. ease-out 以慢速结束的过渡效果
  5. ease-in-out 以慢速开始,以慢速结束的过渡效果
  6. cubic-bezier(n,n,n,n) 在三次贝塞尔函数中定义自己的值

代码实现

一个高100px,宽100px的盒子,鼠标悬停时匀速变为高200px,宽200px的盒子,时间均为1s

<head>
<style> 
    div {
       width: 100px;
       height: 100px;
       background: pink;
       transition: width 1s, height 1s;
     }
 
     div:hover {
       width: 200px;
       height: 200px;
     }
</style>
</head>
<body>
    <div></div>
</body>

兼容性

作为css3新特性之一,transition同样不支持IE10以下浏览器

在IE7-9进行测试时,transition的效果没有过渡效果(transition-timing-function效果),transition-property,transition-duration,transition-timing-function,transition-delay属性都不起作用

下面版本及之后版本的浏览器适用transition属性:

  • 谷歌浏览器:26.04.0 
  • ie浏览器:10.0
  • 搜狐浏览器:16.0 4.0 
  • ios浏览器:6.1 3.1
  • 欧鹏浏览器:12.1 10.5

c32e763ec27600e0e50ba197f51bd3cc-0.png