html div 子元素 过多 卡顿,CSS不定高元素transition动画的解决方案
CSS不定高元素transition动画的解决方案
类别: 技术·CSS
时间:2019-07-27 23:41:35
字数:3297
版权所有,未经允许,请勿转载,谢谢合作~
### 前言
CSS中transition可以方便的实现我们的过渡动画效果,但并不是元素的所有属性都可以过渡,那有哪些元素支持动画呢,这里有个列表:
所有支持transition的属性
这么多属性估计记不住,可以理解成,过渡是只能由元素的值A逐渐变成值B,如果A与B不是一个确切的具体数字,也就无从得知“运动轨迹”,动画则无效。
比如我们不能让A图片过渡变成B图片,因为A图片与B图片一般不是简单的数字变换。
虽然height支持transition,但如果由height: 0;变成height: auto;还是无效的,因为css引擎无法得知auto是多少。
不过我们还是有一些简单的方案可以解决这个问题的。
###场景1 max-height与scaleY展开收起
我们有个二级导航,在点击某一级导航时,需展开其下的二级导航,但我们在纯css中无从得到二级导航的个数,但高度不定,一般transition不会生效。
场景1解决方案:使用max-height。 如果能确定最大高度,则直接设置该值;如果不能,确定一个合适的值(什么叫合适值呢?就是较大又不会过大,视业务而定,如果设一个过大的max-height,会因为运行轨迹问题显有卡顿严重),然后允许有滚动条(如果在移动端的全屏下,滚动条不像pc端这么怪异)
关键代码:
html
```html
- blog
- blog 1
- blog 2
- blog 3
- movie
- movie 1
- movie 2
- movie 3
```
css:
```css
.sub-nav-list {
max-height: 0;
overflow: auto;
transition: max-height 1s ease-out;
}
.show-sub-nav-list .sub-nav-list {
max-height: 150px;
}
```
场景1解决方案2:使用scaleY进行缩放,只适用于一个一级导航的情况,否则下面会出现空白。
关键代码:
```css
.sub-nav-list-2 {
transition: transform 0.4s ease-out;
transform: scaleY(0);
transform-origin: top;
}
.show-sub-nav-list .sub-nav-list-2 {
transform: scaleY(1);
}
```
参考demo: 不定高的导航展开动画demo
###场景2,移动端全屏不定高导航下拉动画
这应该是一种比较常见的场景,因为全屏,可以使用fixed或absolute,高度可以由0%变成100%,再结合场景1的导航列表,比较简单,唯一需要主要的是,该块设置top,需要设置一个一样高度bottom避免下面少了一块,因为这种场景height: 100%情况下增加top会使得其下移。
主要代码:
html
```html
fixed的头部
- blog (点击展开下一级)
- blog 1
- blog 2
- blog 3
- movie
- movie 1
- movie 2
这是页面内容
```
CSS:
```css
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #00d586;
z-index: 5;
}
.nav-wrap {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 0;
top: 40px;
transition: height 0.4s ease-out;
background-color: #fff;
}
.nav-guide {
position: absolute;
top: 0;
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
border-bottom: 1px solid #ccc;
}
.nav-list-wrap {
position: absolute;
top: 40px;
bottom: 40px;
left: 0;
width: 100%;
overflow-y: auto;
}
.show-nav-list {
height: 100%;
}
```
demo(请使用移动端打开): 移动端全屏不定高导航下拉动画demo
###提问
##### 为什么我们的非绝对定位元素height不能由0%至100%呢?
规范中写到,如果包含块的高度没有显式指定(如父元素高度为默认值auto),并且该元素不是绝对定位,则计算值为auto,auto则transition不会生效。
全部留言
我要留言
内容:
网名:
邮箱:
个人网站:
发表
html div 子元素 过多 卡顿,CSS不定高元素transition动画的解决方案相关推荐
- html div 子元素 过多 卡顿,CSS浏览器兼容
如何解决浏览器兼容问题 各浏览器CSS hack兼容表: IE6IE7IE8FirefoxOperaSafari !importantYYYYY _Y *YY *+Y \9YYY \0Y nth-of ...
- 使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿
使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿 1.在index.html引入高德地图链接 https://webapi.amap.com/maps?v=1.4.15& ...
- x5内核在android 4.4卡顿,css,javascript_安卓手机X5内核浏览器下动画超级卡的解决办法?,css,javascript,html5 - phpStudy...
安卓手机X5内核浏览器下动画超级卡的解决办法? 碰到一个问题,我写了一个H5页面,里面有的动画在ios手机上运行十分流畅,一点都不卡,唯独在部分安卓手机下打开十分卡,卡顿到怀疑人生,我进行了一些优化, ...
- c#winform控件过多卡顿问题解决方案
近期在项目中遇到了登录以及切换界面时,界面不停闪烁的问题,经过查阅发现以下方法可以成功解决该问题. 将下面代码添加到窗体代码中即可: protected override CreateParams C ...
- 百度地图-图标过多卡顿解决方案
点聚合 <script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=xxxx& ...
- Qt解决UI界面一次性加载数据过多卡顿的问题
关于Qt如何解决UI界面一次性加载太多数据而卡顿的问题 思路分析: 以QTableWidget电子词典为例,每次模糊查询单词时都会产生几十种,几千甚至上万种不同的结果: 例如我们输入a,对a进 ...
- 伪元素写竖线_[CSS] 用伪元素:after实现分割线和气泡
学习前端网页开发并将其应用于工作中已经两个月了,发现前端包括的内容真的是无比丰富,知识量巨大--漫漫长路远,尚需艰苦努力.作为一只前端开发的菜鸟,写不了特别深刻的关于前端技术性文章,只是想将工作中遇到 ...
- android打开cad卡顿,两万高配置电脑使用CAD非常卡顿怎么办
本帖最后由 18332919183 于 2020-4-21 17:55 编辑 两万块钱买的笔记本,使用CAD任何版本都卡顿,百度方法调设置关闭动态输入关闭区域框选指示等等各种方法,都试了还是不行,任然 ...
- 从零开始的踩坑生活(3):有关cherry mx8.0 机械键盘和Ubuntu系统的不兼容(输入延迟卡顿cpu占用高)
2021/03/05更新: 好像挺多人有一样的问题欸. 放一个链接,如果急得话可以下载,不急的话私信发邮箱,我看到就会回复. 项目场景: 最近被这个Ubuntu折腾的够呛.这里放上来一个很鬼畜的问题 ...
最新文章
- Spring Boot 动态数据源(多数据源自己主动切换)
- MongoDB的NUMA CPU架构问题
- Qt 2D绘图之二:抗锯齿渲染和坐标系统
- 用java模仿钉钉_java接入钉钉机器人(附源码)
- PM你真的很忙吗?如何进行时间管理
- GridView的操作大全
- SAP云平台里的日志系统概述
- labview自动生成html,使用LabVIEW实现网页数据提取及交互.pptx
- Kotlin学习笔记23 协程part3 lambda表达式深入 挂起函数 全局协程
- AjaxControlToolkit工具控件之Accordion错误解决方法
- 2009无线通信五大趋势 3G范围将覆盖全球
- 高并发 多线程批量ping工具 nbping简介和使用
- Maxwell安装与配置
- 雨滴桌面显示html,如何用雨滴桌面设置美观的桌面天气插件
- 电脑图片不显示,电脑不显示图片怎么办
- 黑客攻击入侵服务器的6种常见方式
- 代写品牌故事-品牌故事的结构
- eval函数python原理_Python 中 eval 函数的神奇用法
- Latex——本地编辑器TeXstudio
- YY客网络广播 内测进行中!
热门文章
- 腾讯面试:一条SQL语句执行得很慢的原因有哪些?
- OpenStack网络的下一步原来这么走 | 技术头条
- 云重磅 | 没有硬件,苹果发布多款“云服务”;阿里云发布基于公共云的虚拟GPU服务;中国移动首发5G套餐...
- 表格长度_知道你的成绩单是怎么打印的吗?超长Excel表格1页打印,拯救A4纸
- python在办公上的应用_python自动化办公:玩转word之样式秘笈
- 分布式任务调度平台一站式讲解
- docker nginx:1.21.4
- make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error
- MVC与MVVM的区别
- util中注入service