最*这水*越来越退步,想写个js组件,但一直担搁,退而求次之,搞个jq插件还是可以滴。没想到,想半天不得其法,没办法,只能参考一个吧。以下看客不要太认真全是抄来的。
原始地址:
1. 众多灵活的参数配置,在灵活的背后牺牲了傻瓜操作可控性, 让一些不懂css的程序员,不懂jq的美工,咬牙切齿,遂有重写一个的想法。
2. jscoll的js代码虽然没有加密混淆,但是2字母式的变量名,让我望其却步,可维护可扩展性,无从谈起。
3. css全是内联style式的,这种虽然必杀效果的同时,也杀了页面可维护性,而且利用css属性选择器的特性,jq的配置参数没必要这么烦琐。
一、jq插件的写法:
1. 第一种是直接挂在$这个工厂函数上的。
add: function(a, b){
return a + b;
}
});
//这是多个扩展的写法,如果是一个的话,则是:
return a - b;
};
//调用时:
2. 第二种是需要应用在jq对象上的,所以是另外一种写法:
color: function(val){
if(val == undefined){
return $(this).css('color');
} else {
return $(this).css('color', val);
}
}
});
//要是只扩展一个的话:
$.fn.color = function(){
//do something
}
//调用时:
默认的滚动条,样式过于单一,又不是动态修改,故而废之,重新来一个:
在写插件之前,必先写html结构样式,大概解释一下:
reset
body{font:12px/2 arial;background:#333;}
例子准备包在最外层容器,以及里边内容的容器,.jkscool-wrap 是写relative 的原因是为了右边滚动条的定位,而.jkscoll-cont写relative的目的是为了内容的滚动。
.jkscroll-wrap{position:relative;padding:0;height:200px;overflow:hidden;}
.jkscroll-cont{position:relative;padding-right:15px;top:0px;z-index:9999;}
里边要滚动内容的样式,没有什么特别之处:
.jkscroll-text p{margin-bottom:10px;}
滚动条的样式,这里边比较讲究,首先来说,.jkscroll-bar 的position:absolute,这个是有来历的,由于外层是position:relative,所以里层是absolute的话,则会以外层的左上角为位移参考对齐。当然外层只写position:relative,不写top,left两值。如果写这两个值又是怎么会事呢?如果写上这两个值,则表示以:以这个元素的本来应该在的位置为布局参照原点。
还有一种情况是,只是一个position:absolute;外层没有position:relative,这时会找寻那个点为参考呢?这时候的原则是:如果某父级元素中有relative者,则以某父级元素为参考原点,如果没有position:relative,则以body为参考原点。如果position:absolute外层没有relative时,这两个布局上是没有区别的。
当然最后一种情况是:外层是:position:absolute;里边是position:relative,那会是什么情况?按着原来的原则,absolute会参考body为布局原点,relative会参考他本来应该在的位置为布局原点,这时候其实就是参考外层左上角为布局原点。
当然该是上个栗子的时候了: