用css3-tranistions实现平滑过渡
来源:Denis Blog 发布时间:2009-12-23 19:24:00
Css tranistions允许元素的属性在单位时间内发生平滑的过渡,在阅读完《CSS Transitions Module Level 3》之后,我已经被其所吸引。尽管目前只有chrome和safari浏览器支持该属性(不过目前还得使用-webkit内核关键字作为前缀),但相信在不久的将来,各主流浏览器会全面支持该属性。
通常情况下,当css属性发生改变时,元素会立刻发生改变。Css transtions提供一种方法使得元素从原始状态平滑的过渡到新的状态。只需要对元素定义要使用transition效果的属性(transition-property)、transition效果的过渡时间(transition-duration)、transition效果的过渡方式(transition-timing-function)以及transition效果何时开始(transition-delay)。在详细了解这些属性之后,我作了一个简单的测试,虽说简单,但总能鼓动人心。
我只是定义一个绝对居中的盒子,在鼠标滑过时将其放大,在chrome中我们会看到平滑的过渡效果。Css规则如下:
.transition{
opacity:0.2;
position:absolute;
left:-65px;
top:-65px;
left:50%;
top:50%;
border:1px solid #000;
background-color:#f00;
padding:30px;
width:100px;
height:100px;
-webkit-transition-property:opacity,width,height,margin-left,margin-top,padding,border-width;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:ease-in-out;
}
.transition:hover{
width:300px;height:300px;border-width:3px;margin-top:-195px;margin-left:-195px;opacity:1;padding:90px; }
在-webkit-transition-property定义了使用过渡效果的属性,-webkit-transition-duration定义过渡持续的时间,这里我定义的1s。W3c的规则中说明,当把-webkit-transition-duration的属性值定义为0时,将不会出现平滑的过渡。-webkit-transition-timing-function定义了过渡的方式,这里是ease-in-out,关于其它方式,可以参看文档说明。有了这样一个属性之后,用户可以得到良好的体验,我们也不必要在为实现这样的平滑的效果而去写大量的js。下面我构建一个Image gallery,来看看该属性所带来的用户体验。
如何排列图片,我不赘述。熟悉css的人都很清楚怎么做,我只介绍实现transition效果的核心css代码。
.imageGallery li{display:block;width:200px;height:136px;margin:15px;float:left;_overflow:hidden;}
.imageGallery li img{
width:200px;
height:136px;
border:1px solid #000;
position:relative;
z-index:1000;
-webkit-transition-property:width,height,margin-left,margin-top,border,left,top,z-index;
-webkit-transition-duration:1s;
-webkit-transition-timing-function:ease-in-out;
}
.imageGallery li a:hover{_background-color:#fff;_z-index:5000;_position:relative;}
.imageGallery li a:hover img{
border:2px solid #000;
width:600px;
height:408px;
margin-left:-301px;
margin-top:-255px;
left:50%;
top:50%;
z-index:5000;
}
上面的.imageGallery li a:hover那行代码以及.imageGallery li的overflow属性,主要修复IE6下的bug。给imageGallery li定义overflow:hidden,可以看到很有趣的效果。
看看最终结果transitions-image-gallery.htm ,可以看到,我们再也不必为这样一个平滑的过渡效果而去写大量的js了,期待css transition能很快得到主流浏览器的支持。


猜你喜欢
- 最近把MySQL升级到了5.6版本,无意中在任务管理器发现MySQL内存占用达到400+M,这是怎么回事呢?以前的版本可没有遇到过这种情况啊
- 如果你是一个pandas初学者,那么不知道你会不会像我一样。在学用列表或者数组创建DataFrame时理不清怎样用数据生成以及想要形状的的D
- 目录1. 关联规则1.1 基本概念1.2 关联规则Apriori算法2. mlxtend实战关联规则2.1 安装2.2 简单的例子3. 总结
- 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示
- 最近因工作需要,要在静态页面上实现分页,想了下,决定用AJAX来实现,所以就捣鼓了下面这么个东西,截图如下:更多关于分页的文章演示地址:ht
- 为什么要引入线程池如果在程序中经常要用到线程,频繁的创建和销毁线程会浪费很多硬件资源,所以需要把线程和任务分离。线程可以反复利用,省去了重复
- 写在前面在一些接口请求的场景中,我们希望携带的数据不希望是以明文的方式提交的,也就是需要对参数做一些混淆或者加密处理,后端拿到数据后再进行解
- Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决:第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事
- 一、简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性。
- 前言 常用地图底图的绘制一般由Basemap或者cartopy模块完成,由于Basemap库是基于python2开发的一个模块,目前已经不开
- 如何做一个看他爱不爱你的小测验?<%CurQ = Request.Form("CurQ")An
- selenium3.0之后的版本的就不支持直接打开火狐浏览器,启动火狐浏览器报错,如下图,要想运行就需要我们单独装上驱动。3.0之前的版本,
- 1.isinstance函数:除了以一个类型作为参数,还可以以一个类型元组作为参数。isinstance(obj,basestring)==
- <?php $monthoneday=date("Ym")."01"; $oneweekday
- 环境安装安装Anaconda,官网链接Anaconda使用conda创建py3.6的虚拟环境,并激活使用conda create -n py
- 本文实例讲述了PHP实现逐行删除文件右侧空格的方法。分享给大家供大家参考,具体如下:在编辑整理代码的过程中发现网上的一些代码经常会有不少的右
- 1 装饰器背景知识1.1 基本概念装饰器(Decorator)是 Python 中一种函数或类,用来修饰其他函数或类。装饰器可以改变被装饰函
- 本文实例讲述了PHP面向对象的特性。分享给大家供大家参考,具体如下:Demo1.php<?php header('
- 在我的博客上,以前我经常谈到SQL Serverl里的书签查找,还有它们带来的很多问题。在今天的文章里,我想从性能角度进一步谈下书签查找,还
- Python爬虫:一些常用的爬虫技巧总结爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。1、基本抓取网页get方法imp