利用div+jquery自定义滚动条样式的2种方法


Posted in Javascript onJuly 18, 2013

最近做项目中有一个模块是用于实时监控的,左边有个菜单栏用于显示所有的设备,那当然是从数据库中动态获取的了,右边是个iframe用于显示监控画面。本来这个功能并不复杂,左边的菜单项是利用dtree.js来实现的,可时当功能实现完成之后,却发现一个问题,就是左边菜单栏中的设备名有的会很长,会超出了div的长度,准确说是左边iframe的宽度和长度不够。那么,这时就必须要利用滚动条了,可以设置左边菜单项div的overflow-x:auto;overlfow-y:auto;这样就会自动生成了滚动条,但是大家都知道自带的不好看。接下来就是重点了,如何修改滚动条的样式呢?

经过从网上的不断搜索,发现有两种方法:

第一种方法:利用CSS提供的样式,一共是8种属性吧,在这里不做详细介绍,网上很多这方面的资料。

第二种方法:自己写一个新的滚动条,即不用div自带的滚动条。这样想要什么样的效果就有什么样的效果。具体实现,在网上搜了很多,可以发现基本上只有竖向滚动条,而没有横向滚动条,无奈之下,自己利用jquery写另一个滚动条,当然也借鉴了只有竖向滚动条的程序。

说一下具体实现思路:目标div 即需要生成滚动条的div,里面嵌套了3个div,分别是用于显示内容的div_content,显示竖向滚动条的div_H,显示横向滚动条的div_W,具体布局就是按照自带滚动条的div的布局一样,然后显示滚动条的div即div_H和div_W有各自包含了3个div,即左右箭头2个,滚动条1个。具体代码如下:

if($(_self).children(".jscroll-c").height()==null){ 
//添加内容框(div) 
$(_self).wrapInner("<div class='jscroll-c' style='top:0px;z-index:9999;zoom:1;position:relative;'></div>"); 
//添加竖向滚动条 
$(_self).append("<div class='jscroll-e' unselectable='on' style='height:97.5%;top:0px;right:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><div class='jscroll-u' style='position:absolute;top:0px;width:100%;right:0;background:blue;overflow:hidden'></div><div class='jscroll-h' unselectable='on' style='background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></div><div class='jscroll-d' style='position:absolute;bottom:0px;width:100%;left:0;background:blue;overflow:hidden'></div></div>"); 
//添加横向滚动条 
$(_self).append("<div class='jscroll-s' unselectable='on' style='width:180px;bottom:0px;left:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><div class='jscroll-l' style='position:absolute;bottom:0px;height:100%;left:0;background:blue;overflow:hidden'></div><div class='jscroll-g' unselectable='on' style='height:100%;background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></div><div class='jscroll-r' style='position:absolute;bottom:0px;height:100%;right:0;background:blue;overflow:hidden'></div></div>"); 
}

然后无非就是一些判断,div的内容是否超过了div的范围,监听事件的添加。具体代码可见我的下载资源;
Javascript 相关文章推荐
javascript 面向对象编程 function也是类
Sep 17 Javascript
从阶乘函数对比Javascript和C#的异同
May 31 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
微信小程序  生命周期详解
Oct 27 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
Nov 11 Javascript
Node.js操作MongoDB数据库实例分析
Jan 19 Javascript
Vue实现购物车实例代码两则
May 30 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 Javascript
JavaScript 实现继承的几种方式
Feb 19 Javascript
JavaScript实现复制功能各浏览器支持情况实测
Jul 18 #Javascript
GRID拖拽行的实例代码
Jul 18 #Javascript
去掉gridPanel表头全选框的小例子
Jul 18 #Javascript
gridpanel动态加载数据的实例代码
Jul 18 #Javascript
javaScript NameSpace 简单说明介绍
Jul 18 #Javascript
JS获取鼠标坐标的实例方法
Jul 18 #Javascript
非常好用的JsonToString 方法 简单实例
Jul 18 #Javascript
You might like
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue中如何使用ztree
2018/02/06 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python生成日历实例解析
2014/08/21 Python
python编写爬虫小程序
2015/05/14 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python reques接口测试框架实现代码
2020/07/28 Python
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
学雷锋月活动总结
2014/04/25 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js