css transition 实现滑入滑出
transition是css最简单的动画。 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!!
但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办? transition可以做到。
第一问:哪些属性值变化会触发这个transition呢?
一般常见的有:width, height, opacity, color, z-index, visibility等等很多,这里是所有的:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties
第二问:transition的具体用法?
transition是这四个的简写:
{
transition-property // 触发transition的属性值,默认all
transition-duration // transition执行时间
transition-timing-function // 时间变化函数
transition-delay // 执行transition之前的时间
}
其中第三个transition-timing-function比较复杂,提供了几个默认的:
- linear,匀速变化。
- ease,逐渐变慢,默认值就是这个。
- ease-in,加速变化。
- ease-out,减速变化。
- ease-in-out,先加速再减速。
- cubic-bezier,自定义变化函数。
使用transition简写示例:
{
transition: margin-right 2s;
transition: margin-right 2s .5s;
transition: margin-right 2s ease-in-out;
transition: margin-right 2s ease-in-out .5s;
transition: margin-right 2s, color 1s;
transition: all 1s ease-out;
transition: background 0.5s ease-in 1s,color 0.3s ease-out 1s;
}
使用技巧,实现滑入滑出
实现一个元素出现或者消失,有几种方案:display:none 和opacity:0
使用display的话,不会触发transition,只能实现“快入快出”
而opacity和visibility可以触发transition。
到这里大眼一看似乎是可以通过opacity和visibility配合transition实现。具体如何实现呢?
- 首先这个要滑入滑出的div,刚开始并不在页面上。因此需要初始化:
div{
-webkit-transition: 0.6s;
-moz-transition: 0.6s;
-ms-transition: 0.6s;
-o-transition: 0.6s;
transition: 0.6s;
visibility:;
opacity:;
width: 0; // 由于是滑入,因此需要这个div的宽度从0慢慢变大,变到300px,效果就是从侧边滑进来了。
}
- 当需要这个div滑入的时候,需要使用js动态给这个div添加一个class:"active"
.active {
opacity:;
visibility:;
width: 300px;
}
一定要记住,是width等这些属性变化时,才会触发,因此需要设置一个初始的状态,再设置一个最终的状态,我在这里是通过js动态添加class实现设置最终状态的。你也可以给hover设置不同状态。
我的完整css代码:
.detail_wrap{ // 这是初始状态
transition: width 0.4s ease-out, opacity 0.2s ease-in, visibility 0.2s ease-in;
width:;
height: '80%';
visibility:;
opacity:; } .active { // 这是滑入状态
opacity:;
visibility:;
width: 300px;
}
啊,或许你会问,这不是滑入吗?怎么没有滑出呢?
当当当当~ 奥妙在与我使用了一个flag来动态判断要不要加上active 这个class。这样的话,active 添加或者消失,都可以触发这个transition的。
参考文章:http://litianyi.cc/technology/2014/08/27/css-transition/ ease-in 和ease-out 了解更多请移步 https://css-tricks.com/ease-out-in-ease-in-out/
css transition 实现滑入滑出的更多相关文章
- 【jquery隐藏、显示事件and提示callback】【淡入淡出fadeToggle】【滑入滑出slideToggle】【动画animate】【停止动画stop】
1.jquery隐藏and显示事件 $("p").hide(); //隐藏事件$("p").hide(1000); //1秒内缓慢隐藏$(" ...
- 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果
查看本章节 查看作业目录 需求说明: 在 jQuery 中使用滑入滑出动画效果,实现二级下拉导航菜单的显示与隐藏效果 用户将光标移动到"最新动态页"或"帮助查询" ...
- 伴随ListView、RecyclerView、ScrollView滚动滑入滑出小图标--第三方开源--FloatingActionButton
FloatingActionButton在github上的项目主页是:https://github.com/makovkastar/FloatingActionButton 它的依赖包NineOldA ...
- WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果
原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统, ...
- jQuary总结7:动画操作,显示与隐藏 淡入淡出, 滑入滑出
1 jquery提供了三组基本动画,这些动画都是标准的.有规律的效果,jquery还提供了自定义动画的功能. 2 显示与隐藏: show([speed],[easing],[callback]) 显示 ...
- JQuery动画之滑入滑出动画
1. 滑入动画(类似于商店的卷帘门) $(selector).slideDown(speed, 回调函数); 解释: 此语句实现的功能为, 在XX时间内, 下拉动画, 显现元素. 当 slideDow ...
- div层的滑入滑出实例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat=&quo ...
- js窗口边缘滑入滑出效果-初级代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ios 页面滑入滑出
从左边滑进 CGRect r1,r2; r1 = app.testview.view.frame; r2 = self.view.frame; [app.testview.view setFrame: ...
随机推荐
- 我的IT学习资源宝典
1.关于idea的详细学习博客知识网站:https://blog.csdn.net/column/details/15222.html?&page=1 2.关于Web的详细学习博客知识网站:h ...
- 安卓开发学习笔记(七):仿写腾讯QQ登录注册界面
这段代码的关键主要是在我们的相对布局以及线性布局上面,我们首先在总体布局里设置为线性布局,然后再在里面设置为相对布局,这是一个十分常见的XML布局模式. 废话不多说,直接上代码:一.activity. ...
- Android 音视频开发(七): 音视频录制流程总结
在前面我们学习和使用了AudioRecord.AudioTrack.Camera.MediaExtractor.MediaMuxer API.MediaCodec. 学习和使用了上述的API之后,相信 ...
- [Swift]LeetCode546. 移除盒子 | Remove Boxes
Given several boxes with different colors represented by different positive numbers. You may experie ...
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays
Given an array A of non-negative integers, return the maximum sum of elements in two non-overlapping ...
- 如何为自己的pip包打造可以执行的系统命令
1.我们在打包我们自己的Python Package的时候.我们不仅可以在代码中使用我们的package,而且可以添加一些可执行命令来执行自己的函数. 2 .我们应该怎么办呢? 1.首先新建目录以及文 ...
- Java集合类常见的问题
本篇文章将尝试回答一些Java集合类常见的问题,以作知识梳理之用. ArrayList和LinkList以及Vector的区别 就实现方式而言: ArrayList是以数组的方式实现的列表. Link ...
- navicat for mysql 链接时报错:1251-Client does not support authentication protocol requested by serve
navicat for mysql 链接时报错:1251-Client does not support authentication protocol requested by serve 解决方法 ...
- 最近要租房子,用Python看一下房源吧..
前言:最近我的朋友想要租房子,为了装个b,决定运用技术去帮助他. 这个网站是什么我也不知道 反正是一个房子交易网站 http://www.ljia.net/ 设置请求头 headers = {'Ac ...
- 封装cookie设置和获取的简易方法
(function() { var tool = { expires: "expires", // 过期时间expires path: "path", // 路 ...