js限定内容的溢出滚动(offset,style.left)
2016-03-04 14:57
309 查看
1.
2.写了后觉得可以优化下
1.html: <div class="test" style="position: relative;"> <ul id="content" style="position: relative;"> <li>test111111111112222</li> </ul> </div> 2.scss: .test{ overflow: hidden; width: 200px; } ul#content{ list-style-type: none; font-size: 0px; white-space: nowrap; overflow:hidden; padding:0px; li{ display: inline-block; vertical-align: top; font-size: 13px; } } 3.js: <script> $(function() { var width = window.innerWidth - 100; var content = $('#content').html(); //原内容<li>test111111112222222222</li> var content_width = $('#content li').width(); //原宽度 $('#content').html(content + content); var w = $('#content li').length * $('#content li').eq(0).width(); //w 总长度 $('#content').css('width', w); var timer; var el = $('#content')[0]; function toRight() { window.clearInterval(timer); var timer = window.setInterval(function () { var offset = el.offsetLeft+10; //偏移值 每次相对当前位置偏移10px if(offset > 0){ //第一次进来执行一次,以后为-xx 不再执行 //每次 +10 递增 -160,-150,-140,...,0,10 一旦>0,重置为-165 offset = -el.offsetWidth/2; } el.style.left = offset+'px'; },100) } function toLeft() { window.clearInterval(timer); var timer = window.setInterval(function () { var offset = el.offsetLeft - 10; if(offset<= -el.offsetWidth/2){ // 同理 当向左偏移到一半的时候重置回来 offset = 10; } el.style.left = offset+'px'; },100) } //如果容器的宽度够显示内容不进行滚动,不够则进行滚动显示 if($('.test').width() > content_width){ $('#content').html(content); } else{ toLeft(); } }); </script>
2.写了后觉得可以优化下
// js部分: $(function() { var width = window.innerWidth - 100; var content_width = $('#content li').width(); $('.test').width(width); if(width < content_width){ //如果内容长度大于显示长度 var timer; var el = $('#content')[0]; var offset = 0; //内容的初始位置 var content = $('#content').html(); $('#content').append(content); // 将原内容复制为两条,目的:当向左偏移时,内容前部分消失,在内容的尾部后可以看到内容消失的头部 function toLeft(){ window.clearInterval(timer); timer = window.setInterval(function () { offset = el.offsetLeft - 15; //每次偏移的量 if(offset < -content_width-30){ //如果滚动到底了,重置回来 offset = 0; } el.style.left = offset+'px'; //执行偏移 },100); // 每100毫秒移动一遍 } toLeft(); console.log(content_width); } }); //css: ul#content{ list-style-type: none; font-size: 0px; white-space: nowrap; padding:0px; li{ display: inline-block; vertical-align: top; font-size: 13px; padding-left: 20px; } }
相关文章推荐
- js keyup、keypress和keydown事件 详解
- JS代码判断IE6,IE7,IE8,IE9!
- 读javascript高级程序设计16-几条函数小技巧
- 关于动作发生在请求前还是请求后(以点赞为例)
- 在jsp页面判断如果有信息就提示,否则不提示
- javascript 美术馆--改进1
- xml互转Bean,json(dom4j,xpath,Xstream)
- JavaScript方法声明和调用的问题
- vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
- [转]看懂ExtJS的API
- 使用JS获取表单元素里面的内容
- JAVASCRIPT 语言中的 this
- javascript 垃圾回收机制
- 8、JavaScript深入浅出——数据类型
- JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
- MVC中调用Public_Class时,VS2012老提示:当前上下文中不存在名称“Json”的解决方法
- JS入门笔记
- IntelliJ IDEA中js代码报如下警告的解决方法
- javaScript如何监听浏览器关闭事件(区别刷新事件)
- div实现拖拽效果,同时包含iframe