js+css3 轮播
2016-07-28 00:00
267 查看
摘要: js轮播卡顿明显,纯css无法控制,通过css3 提升动画性能
没有进行封装
1,css3动画性能高于js动画原因
css3的 transform 属性 将使dom单独为一个层,重渲染时只要改变该层,再合并图层
而js的动画可能同时涉及多个层,当页面复杂时,重渲染非常消耗性能
2,关键代码
所有属性改变进行0.5s的延时变化,使用缓出的缓动公式来进行补间动画
3,所有代码
html:
css
js部分
没有进行封装
1,css3动画性能高于js动画原因
css3的 transform 属性 将使dom单独为一个层,重渲染时只要改变该层,再合并图层
而js的动画可能同时涉及多个层,当页面复杂时,重渲染非常消耗性能
2,关键代码
transition: all 0.5s ease-out;
所有属性改变进行0.5s的延时变化,使用缓出的缓动公式来进行补间动画
3,所有代码
html:
<div id="slide" class="page page-5"> <div class="slide-box"> <div class="img-box active"> <img src="images1.jpg"> <div class="right-icon"></div> </div> <div class="img-box"> <div class="left-icon"></div> <img src="images2.jpg"> <div class="right-icon"></div> </div> <div class="img-box"> <div class="left-icon"></div> <img src="images3.jpg"> </div> </div> <div class="slide-option-box"> <div class="active"></div> <div class=""></div> <div class=""></div> </div> </div>
css
.page-5{ position: absolute; top: 400%; overflow: hidden; .slide-box{ width: 400%; transition: all 0.5s ease-out 0s; .img-box{ width: 25%; height: 100%; display: inline-block; img{ width: 101%; height: auto; } } } .left-icon{ position: absolute; top:45%; left:5%; width: 1.3rem; height: 2.4rem; background: url('../images/left-icon.png') no-repeat; background-size: contain; display: none; } .right-icon{ position: absolute; top:45%; right:5%; width: 1.3rem; height: 2.4rem; background: url('../images/right-icon.png') no-repeat; background-size: contain; display: none; } .active{ .left-icon{ display: block; } .right-icon{ display: block; } } .slide-option-box{ position: absolute; top: 90%; left:48%; div{ background: url('../images/no_active.png') no-repeat; background-size: cover; width: 0.8rem; height: 0.8rem; display: inline-block; &.active{ background: url('../images/active.png') no-repeat; background-size: cover; } } } }
js部分
var slide = function(){ var index = 0; var oldIndex = 0; var lastIndex = 0; var width = document.body.clientWidth; var left = 0; var dir = 0; var timeout = 0; var dom = document.getElementsByClassName('slide-box')[0]; var options = document.getElementsByClassName('slide-option-box')[0].getElementsByTagName('div'); var imgLists = document.getElementsByClassName('img-box'); var leftList = document.getElementsByClassName('right-icon'); var rightList = document.getElementsByClassName('left-icon'); for(var i=0;i<leftList.length;i++){ leftList[i].addEventListener('click',function(){ index = lastIndex; oldIndex = lastIndex; slideChange(1,'click'); }); } for(var i=0;i<rightList.length;i++){ rightList[i].addEventListener('click',function(){ index = lastIndex; oldIndex = lastIndex; slideChange(-1,'click'); }); } function slideChange(k, type){ clearTimeout(timeout); options[lastIndex].className = ''; imgLists[lastIndex].className = 'img-box'; index += k; dir = k; if(index>2){ index = 0; left = 0; } options[index].className = 'active'; imgLists[index].className = 'img-box active'; lastIndex = index; slideStep(); } function slideStep(){ left = (index) * width; dom.setAttribute('style','margin-left:-'+left+'px;'); if(dir > 0){ if(left >= width * (index)){ timeout = setTimeout(function(){ slideChange(1); },5000); return; } }else{ if(left <= width * (index)){ timeout = setTimeout(function(){ slideChange(1); },5000); return; } } } slideChange(1); }; slide();
相关文章推荐
- CSS 基础入门语法
- css3-元素属性动画--transition
- css选择器记录大全
- 《Head first HTML与CSS 第二版》读书笔记 第一章 了解HTML
- 《Head first HTML与CSS 第二版》读书笔记 第二章 关于超文本
- 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。
- css 超过长度省略
- css 居中总结
- css样式重置
- css中具有继承性的属性
- CSS3中各标签、id、class等名称须与相应html文件中一一对应
- JS+CSS 实现 悬浮滚动广告
- CSS 学习笔记思维导图版
- HTML+CSS基础课程(一)
- css sprite 优缺点
- 鼠标移入移出,样式修改,显示隐藏提示消息
- CSS文字垂直居中和font-family属性
- css引入外部字体
- css3选择器
- css3开发工具推荐