纯CSS滑动效果
原文地址:Pure CSS Slide Up and Slide Down
示例地址:Pure CSS Slide Demo
原文日期: 2013年08月26日
翻译日期: 2013年08月27日
如果能避免使用JavaScript就实现DOM元素动画效果,那我非常乐于不用JS去实现。
因为更高效,而且不需要JS框架来一步步处理,代码更美观优雅。
用纯CSS来实现很难确定的一个特效是 上下滑动——当向上滑的时候内容渐变隐藏,向下滑动内容渐变显示。
之所以难以实现的原因是你可能不能获得内容的高度。
在经历了多种多样的CSS属性之后,我发现了一种利用纯CSS来实现滑动特效的方法。
HTML部分
演示这个效果只需要一个元素,类似于下面这样的:
<div class="slider">需要滑动(显示隐藏)的内容,内容长度随意,class当然也可以自定义名字啦!</div>
CSS部分
在看到效果之前,让我们设置一些很简单的属性:overflow-y 以及 CSS animation 属性:
.slider {
overflow-y: hidden;
max-height: 500px; /* 预估的最大高度 */
transition-property: all;
transition-duration: .5s;
transition-timing-function: cubic-bezier(0, 1, 0.5, 1);
}
现在事情变得有趣了: 漂亮的效果是使用 max-height属性实现的。我们给元素设置一个合理的缺省值,然后创建另一个class把 max-height 设置为0,然后,元素就实现滑动效果了。
.slider.closed {
max-height: 0;
}
经过一些调试修正,我真的喜欢 cubic-bezier 这个时间轴过渡效果函数,当然也可能存在更好的动画方法。到这一步,我们还需要做的就是在合适的时候切换元素的closed CSS类。
不完美之处
那么问题来了,如果元素的高度是100px,或者10万px呢?这种情况下就很不协调,因为元素不是固定高度。
此时有两种可选思路:第一就是承认失败并使用CSS框架。第二条路是使用JavaScript检测DIV的高度,并注入"max-height"属性到stylesheet,则动画效果也会很完美。
最后请记住: 如果设置 max-height 为100%,将会很不可靠,虽然最大宽度可以这样设置,但高度不可以。
如果你找到更好的解决方案,请一定记得联系我!
纯CSS滑动效果的更多相关文章
- 纯CSS手风琴效果
CSS手风琴效果 主体代码如下: ...
- 纯css抖动效果
HTML: <button class="shake">按钮</button> CSS: .shake{ width: 120px; height: 33p ...
- 发光加载环动画-纯CSS动画效果-如何创建CSS3旋转预加载器(参照https://www.bilibili.com/video/BV1V4411C7z5?from=search&seid=9741275927942612817)
//css部分 body{ margin:; padding:; background: #262626; } .ring{ position: absolute; top:50%; left: 50 ...
- 纯CSS气泡效果
http://www.liaoxuefeng.com/article/0013738937970388b6b6e5e5e2f4e21b65b01807c84ddf6000
- 纯css提示效果 提示层
<!DOCTYPE HTML PUBLIC "-//W3C//DTD xHTML 1.0 Transitional//EN"><HTML> <HEAD ...
- 不可思议的纯 CSS 滚动进度条效果
结论先行,如何使用 CSS 实现下述滚动条效果? 就是顶部黄色的滚动进度条,随着页面的滚动进度而变化长短. 在继续阅读下文之前,你可以先缓一缓.尝试思考一下上面的效果或者动手尝试一下,不借助 JS , ...
- 1.纯 CSS 创作一个按钮文字滑动特效 + 弹幕(残缺)
原文地址:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效 扩展后地址:https://scrimba.com/c/cJkzMfd HTML代码: <html> <head& ...
- 利用animation和text-shadow纯CSS实现loading点点点的效果
经常在网上看到loading状态时的点点点的动态效果,自己也用JS写了一个,思路是使用一个计数参数,然后在需要添加点的元素后面利用setInterval一个一个加点,当计数到3时,把点变为一个--写完 ...
- 纯CSS完成tab实现5种不同切换对应内容效果
很常用的一款特效纯CSS完成tab实现5种不同切换对应内容效果 实例预览 下载地址 实例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
随机推荐
- 获取字符宽度:并非自适应。coretext去计算
获取字符宽度:并非自适应.coretext去计算 UniChar ch = [ns_str characterAtIndex:0]; CGGlyph glyph = 0; CTFontGetGlyph ...
- css3圆角代码
div+css3普通圆角代码示例 <style type="text/css"> #round { width:200px; height:100px; margin: ...
- HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)
题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...
- 显示器 Linux 性能 18 (一个命令行工具传递)
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...
- MFC的消息反射机制
1.消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理. 2.MFC中引入消息反射的原因: ...
- javascript(五)验证
<input id="domo" type="text"> <script> function my_function(){ var ...
- 14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器 当InnoDB 被开发, 内分配齐 提供了与操作系统和运行库往往缺乏 ...
- iOS视图控制器之间delegate传值教程
之前在StackOverFlow上看到一篇讲传值(segue传值和delegate传值)的文章,感觉讲的非常清晰,就将delegate部分翻译了一下.有兴趣能够看看. 原文: http://stack ...
- UVA 1386 - Cellular Automaton(循环矩阵)
UVA 1386 - Cellular Automaton option=com_onlinejudge&Itemid=8&page=show_problem&category ...
- Theano+Keras+CUDA7.5+VS2013+Windows10x64配置
Visual Studio 2013 正常安装,这里只要C++打勾就可以. ANACONDA ANACONDA是封装了Python的科学计算工具,装这个就可以不用额外装Python了.在安装之前建议先 ...