澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

自动隐藏的Sticky的Header,分享一则JavaScript滚动条

自动隐蔽的Sticky的Header

2015/07/22 · CSS · Header, Sticky

本文由 伯乐在线 - 吴鹏煜 翻译,JustinWu 校稿。未经许可,禁止转发!
波兰语出处:osvaldas.info。应接参加翻译组。

让Sticky Header自动遮蔽是一个一矢双穿的好办法,一来能够在别的页面任什么地方方都可以访问到导航条,二来能够省去页面空间。作者的客商Easy Shine就可怜愿意在和睦的网址上利用那个本事,这些技能况且也在本人的网址上达成了(viewport小于768px时得以见见作用)。

使导航条固定

XHTML

<header class="header" role="banner"> <!-- ... --> </header>

1
2
3
<header class="header" role="banner">
    <!-- ... -->
</header>

CSS

.header { width: 100%; height: 7.5em; position: fixed; z-index: 1000; top: 0; left: 0; }

1
2
3
4
5
6
7
8
9
.header
{
    width: 100%;
    height: 7.5em;
    position: fixed;
    z-index: 1000;
    top: 0;
    left: 0;
}

此处有部分浅显易懂的HTML/CSS代码,无论页面滚动到哪个地方,导航条都会一定在页面最上部。未来,大家什么样让它自动掩饰?

读书材质

<h4>只须求引入贰个id为lanren的div,外加js以及css就可以兑现这种作用,当然,css3的功力,低版本浏览器下不恐怕落实,尽恐怕少的代码,方便使用的html css js,才是我们追求的最棒!

于今我们来回顾运用一下所学知识,来落到实处三个JavaScript日志操作对象的实例,我们须求的是那多少个文本:

那是过大年的时候自身写的js滚动条插件的源码,做出的成效要好并不知足,正因为做的并不乐意所以回头重新加强和深刻学习js,这几个插件有如下多少个不太如意的地点:

机动掩饰导航条

「自动掩盖」意味着当客商在往下滚动页面时导航条将会流失,但当顾客有相当的大只怕须要导航条的时候又能让它出现:客户已经滚动到页面尾部,只怕起先提升滚动时。导航条的隐身至少有三种方式:交互式和轻易式。

鼠标滚轴事件,思量到包容性:

前言: (写在文前的只言片语、意书情殇)长歌破晓穿云过,响彻碧霄振九天.)------JasonZhang
web开拓已现世多年,技术成熟且学习平台湾大学面积,小编针对内部细节从实质上进行解释.力求透顶.

        myLog.js:首要功能是营造myLogger构造函数、加多行、增多节点、css调节。

剧情的过度效果,能够参照他事他说加以考察QQ顾客端最近会话列表里的滚动条,它的轮转非常的坦荡,一句话来讲正是缺少动画过渡效果。

交互式

交互式录像演示

交互式的野趣是,导航条会直接地,或然马上响应页面滚动事件,这种形式大概会由于它操作起来的痛感,从客户体验看来是一个了不起的小细节。不过它也是有倒霉的一方面:这种样式的面目决定了他绝对要借助于JavaScript,咱们不可能运用JS事件节流阀(在钦点的光阴周期内只调用有些函数二次)。基本上那就表示每便滚动事件发生都要发出总括,並且会毫无意义的占用CPU。幸运的是,大大多情景下那只是理论,实际上因为计算量实在太卑不足道而一般不会碰着这种主题素材。

滚动事件时有发生时,JS算法会总结并修改CSS中的top属性。

JavaScript

//... window.addEventListener( 'scroll', function() { //... if( wScrollCurrent <= 0 ) // 滚动到页面顶端; 成分保持在页面顶部element.style.top = '0px'; else if( wScrollDiff > 0 ) // 向上滚动事件; 成分插入页面 element.style.top = ( elTop > 0 ? 0 : elTop ) 'px'; else if( wScrollDiff < 0 ) // 向下滚动事件 { if( wScrollCurrent wHeight >= dHeight - elHeight ) // 滚动到页面尾部; 成分插入页面 element.style.top = ( ( elTop = wScrollCurrent wHeight - dHeight ) < 0 ? elTop : 0 ) 'px'; else // 向下滚动事件; 成分消失 element.style.top = ( Math.abs( elTop ) > elHeight ? -elHeight : elTop ) 'px'; } //... }); //...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//...
window.addEventListener( 'scroll', function()
{
    //...
    if( wScrollCurrent <= 0 ) // 滚动到页面顶部; 元素保持在页面顶部
        element.style.top = '0px';
 
    else if( wScrollDiff > 0 ) // 向上滚动事件; 元素插入页面
        element.style.top = ( elTop > 0 ? 0 : elTop ) 'px';
 
    else if( wScrollDiff < 0 ) // 向下滚动事件
    {
        if( wScrollCurrent wHeight >= dHeight - elHeight )  // 滚动到页面底部; 元素插入页面
            element.style.top = ( ( elTop = wScrollCurrent wHeight - dHeight ) < 0 ? elTop : 0 ) 'px';
 
        else // 向下滚动事件; 元素消失
            element.style.top = ( Math.abs( elTop ) > elHeight ? -elHeight : elTop ) 'px';
    }
    //...
});
//...

firefox

接纳DOMMouseScroll,但该事件须求利用add伊芙ntListener()来绑定;

ff中利用事件目的中的detail属性来博取滚轮滚动的值,向上滚是负值,向下滚是正值;

为了统一同一滚动方向的值的正负一致,施行取反操作;

栗子:

document.addEventListener('DOMMouseScroll',function(e) {

var oEvent = e || event;

alert(e.detail);

},false);

</h4>
<h5>表达:能够在复选框的即兴点击都会出现效果!</h5>
废话十分少说,先上效果.

        LD.js:主要职能是对台本和字符串制订法规、构造命名空间和基于Id、className收取对象。

并不算圆满的包容性,在IE6、7下的style如故有个别缺憾。

简单式

轻便式录像演示

这种样式,取决于JavaScript节流阀的周期设置,也许不会有太多“获得回应”的感到到。不管怎么说,这种样式对CPU会相比较和睦,加之动画是基于CSS来贯彻的,那象征我们的想象力可以尽情公布。

和在此以前交互式分歧的是,这里的JavaScript并不直接改换CSS的属性,而是为因素插入或移除header--hidden这个CSS类

JavaScript

//... window.add伊夫ntListener( 'scroll', throttle( throttleTimeout, function() { //... if( wScrollCurrent <= 0 ) // 滚动到页面顶上部分; 成分保持在页面顶上部分 removeElementClass( element, elClassHidden ); else if( wScrollDiff > 0 && hasElementClass( element, elClassHidden ) ) // 向上滚动事件; 成分插入页面 removeElementClass( element, elClassHidden ); else if( wScrollDiff < 0 ) // 向下滚动事件 { if( wScrollCurrent wHeight >= dHeight && hasElementClass( element, elClassHidden ) ) // 滚动到页面后面部分; 成分插入页面 removeElementClass( element, elClassHidden ); else // 向下滚动事件; 成分消失 addElementClass( element, elClassHidden ); } //... })); //...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//...
window.addEventListener( 'scroll', throttle( throttleTimeout, function()
{
    //...
    if( wScrollCurrent <= 0 ) // 滚动到页面顶部; 元素保持在页面顶部
        removeElementClass( element, elClassHidden );
 
    else if( wScrollDiff > 0 && hasElementClass( element, elClassHidden ) ) // 向上滚动事件; 元素插入页面
        removeElementClass( element, elClassHidden );
 
    else if( wScrollDiff < 0 ) // 向下滚动事件
    {
        if( wScrollCurrent wHeight >= dHeight && hasElementClass( element, elClassHidden ) ) // 滚动到页面底部; 元素插入页面
            removeElementClass( element, elClassHidden );
 
        else // 向下滚动事件; 元素消失
            addElementClass( element, elClassHidden );
    }
    //...
}));
//...

在CSS中我们那样定义:

JavaScript

.header { -webkit-transition-duration: .5s; transition-duration: .5s; -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 ); transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 ); -webkit-transition-property: -webkit-transform; transition-property: transform; } .header--hidden { -webkit-transform: translateY( -100% ); -ms-transform: translateY( -100% ); transform: translateY( -100% ); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.header
{
    -webkit-transition-duration: .5s;
    transition-duration: .5s;
 
    -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
    transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
 
    -webkit-transition-property: -webkit-transform;
    transition-property: transform;
}
 
.header--hidden
{
    -webkit-transform: translateY( -100% );
    -ms-transform: translateY( -100% );
    transform: translateY( -100% );
}

chrome,firefox,safair,ie,opera等

使用mousewheel;

这一个浏览器中运用事件目的的wheelDelta属性来博取滚轮滚动的值,上滚为正,下滚为负;

栗子:

document.onmousewheel = function(e) {

var oEvent = e || event;

console.log(e.wheelDelta);

};

案例--改变元素的尺码

HTML

<div id="box"></div>

CSS

#box {width: 200px;height: 300px; background: orange;}

JS

window.onload=function() {

var oBox =document.getElementById('box');

//判别方向

var down =true;

if(window.navigator.userAgent.toLocaleLowerCase().indexOf('firefox') !== -1) {

/*火狐*/

oBox.addEventListener("DOMMouseScroll",function(e) {

varoEvent = e ||event;

/*合併滚动值,同一方向值要么为正值,要么为负值*/

if(-oEvent.detail<0) {

//向下

down =true;

}else{

//向上

down =false;

}

changeSize(down);

},false)

}else{

oBox.onmousewheel=function(e) {

varoEvent = e ||event;

if(e.wheelDelta<0) {

down =true;

}else{

down =false;

}

changeSize(down);

};

}

function changeSize(down) {

if(down) {

oBox.style.height= oBox.offsetHeight 10 'px';

}

else{

oBox.style.height= oBox.offsetHeight-10 'px';

}

}

};

图片 1

        test.js:主要作用是对窗体增添事件,并测量试验mylog中部分函数的可用性。

体制的不健全,举例鼠标悬浮才显得滚动条,移除后逃匿这种意义都未有写。

导航条的附加的一部分状态

录制演示

稍许时候,非常在主页中时,在页面最上端使用越来越大的导航条有利于获得访谈者的瞩目,我们要求贰个相当的CSS类来决定导航条中度:

CSS

.header--narrow { height: 5em; }

1
2
3
4
.header--narrow
{
    height: 5em;
}

可是那些新定义的CSS类是由JavaScript来支配什么运用的——在页面伊始滚动时拉长,并在滚动到页面最上端时移除。

自动隐藏的Sticky的Header,分享一则JavaScript滚动条插件源码。JavaScript

// ... window.addEventListener( 'scroll', throttle( throttleTimeout, function() { // ... if( wScrollCurrent > elNarrowOffset ) // toggles "narrow" classname { if( !hasElementClass( element, elClassNarrow ) ) addElementClass( element, elClassNarrow ); } else removeElementClass( element, elClassNarrow ); // ... })); // ...

1
2
3
4
5
6
7
8
9
10
11
12
13
// ...
window.addEventListener( 'scroll', throttle( throttleTimeout, function()
{
    // ...
    if( wScrollCurrent > elNarrowOffset ) // toggles "narrow" classname
    {
        if( !hasElementClass( element, elClassNarrow ) )
            addElementClass( element, elClassNarrow );
    }
    else removeElementClass( element, elClassNarrow );
    // ...
}));
// ...

鼠标滚抽滚动事件的包装

/*

* 鼠标滚轴滚动事件封装

* @param target:增加事变的目的

* @param fn: 鼠标滚轴滚动后需求完毕的成效函数

*/

function wheelFn(target,fn) {

/*

* 判别方向

* @param {e} 事件指标

* true: 向下滚动

*/

function direction(e) {

var oEvent = e ||event;

if(e.wheelDelta) {

if(e.wheelDelta<0) {

down =true;

}else{

down =false;

}

}else{

if(- e.detail<0) {

down =true;

}else{

down =false;

}

}

fn(down);

/* 阻止系统的默许事件 */

oEvent.preventDefault&& oEvent.preventDefault();

return false;

}

/*

* 事件绑定

* @param target: 绑定事件的靶子

* @param type: 绑定的平地风波类型

* @param fn

*/

function bandEvent(target,type,fn) {

if(target.attachEvent) {

target.attachEvent('on' type,fn);

}else{

target.addEventListener(type,fn,false);

}

}

/*

* 规定鼠标滚抽滚动的方向

*/

var down =true;

/* 浏览器包容的管理 */

if(window.navigator.userAgent.toLocaleLowerCase().indexOf('firefox') !== -1) {

bandEvent(target,"DOMMouseScroll",direction);

}else{

bandEvent(target,'mousewheel',function(e) {

direction(e);

});

}

}

波浪式动画.gif

        log.html:用于体现日志对象。

内部结构的混杂,要求调治内容结构。

示范

其一德姆o的源代码中归纳了纯JavaScript(兼容IE9 )和信赖于jQuery的三种完毕格局,就算去钻探去行使啊!

Demo地址

1 赞 收藏 评论

包装使用案例--鼠标滚轴事件 自定义滚动条拖拽效果

HTML

<div id="wrap">

<div id="list">

<ul><li><a href="javascript:;"><img src="...jpg"></a></li><li><a href="javascript:;"><img src="...jpg"></a></li></ul>

</div><div id="scroll"><div id="bar"></div></div>

</div>

CSS

div,ul,li,a,img {padding: 0;margin: 0;list-style: none;text-decoration: none;}

#wrap {overflow: hidden;width: 600px;height: 550px;margin: 50px auto;}

#list {position: relative;width: 600px;height: 540px;overflow: hidden;}

#list ul {position: absolute;top: 0;left: 0;overflow: hidden;width: 2100px;height: 540px;}

#list li {float: left;}

#list img {display: inline-block;*display: inline;width: 350px;height: 540px;margin-right: 20px;}

#scroll {position: relative;width: 600px;height:10px;background-color: #ccc;border-radius: 5px;}

#bar {position: absolute;top: 0;left: 0;width: 100px;height: 10px;background: orangered;border-radius: 5px;}

JS

window.onload = function() {

var oWrap = document.getElementById('wrap');

var oUL = document.getElementsByTagName('ul')[0];

var oScroll = document.getElementById('scroll');

var oBar = document.getElementById('bar');

var l = 0;

//用于方向的明确

var down = true;

/* 图片总移动范围 */

var moveAreaImg = oUL.offsetWidth - oWrap.offsetWidth;

/* 滚动条总移动的界定 */

var moveAreaBar = oScroll.offsetWidth - oBar.offsetWidth;

//1.鼠标按下时

oBar.onmousedown = function(e) {

var oEvent = e || event;

//2.获得元素的启幕地方

var x = oEvent.clientX - oBar.offsetLeft;

//3.鼠标按下并活动时,成分随之移动

document.onmousemove = function(ev) {

var oEv = ev || event;

//4.偏移距离

l = oEv.clientX - x;

changePosition(l);

};

//7.鼠标弹起时结束运动

document.onmouseup = function() {

document.onmousemove = null;

document.onmouseup = null;

oBar.releaseCapture && oBar.releaseCapture();

};

//8.阻止暗许事件

oBar.setCapture && oBar.setCapture();

return false;

};

/*

* 移动地点

* @param pos偏移距离

*/

function changePosition(pos) {

//5.限定移动区域

if (l <= 0) {

l = 0;

}

if (l >= (oScroll.offsetWidth - oBar.offsetWidth)) {

l = oScroll.offsetWidth - oBar.offsetWidth;

}

//比例

var scale = l / moveAreaBar;

//6.目标成分的运动

oBar.style.left = l 'px';

//图片列表偏移距离:图片列表总移动范围*运动的百分比

oUL.style.left = -(moveAreaImg*scale) 'px';

}

/*

* 鼠标滚轴滚动事件封装

* @param target:加多风云的靶子

* @param fn: 鼠标滚轴滚动后须要贯彻的效应函数

*

*/

function wheelFn(target,fn) {

/*

* 事件绑定

* @param target: 绑定事件的靶子

* @param type: 绑定的平地风波类型

* @param fn

*/

function bandEvent(target,type,fn) {

if (target.attachEvent) {

target.attachEvent('on' type, fn);

} else {

target.addEventListener(type, fn, false);

}

}

/*

* 判断方向

* @param {e} 事件指标

* true: 向下滚动

*/

function direction(e) {

var oEvent = e || event;

if (oEvent.wheelDelta) {

if (oEvent.wheelDelta < 0) {

//向下滚动

down = true;

} else {

//向上滚动

down = false;

}

} else {

if (-oEvent.detail < 0) {

down = true;

} else {

down = false;

}

}

fn(down);

/* 阻止系统的暗中认可事件 */

oEvent.preventDefault && oEvent.preventDefault();

return false;

}

/* 鼠标滚轴事件的相称写法 */

if (window.navigator.userAgent.toLocaleLowerCase().indexOf('firefox') !== -1) {

bandEvent(target, "DOMMouseScroll", direction);

} else {

bandEvent(target, 'mousewheel', function (e) {

direction(e);

});

}

}

/*

*鼠标滚动时,滚动条也爆发位移

*/

wheelFn(oWrap,function(down) {

if (down) {

//向下滚动的进程

l = 22;

//产生偏移

changePosition(l);

} else {

l -= 22;

changePosition(l);

}

});

};

-

图片 2

滚轴事件案例

第一定义叁个id为lanren的div.
<pre>
<div id="lanren"></div>
</pre>
其次css也特别轻松,自定义八个卡通,详细的情况请继续向下看∨

以下是各类文件代码:

滚动条那多少个图片毕竟不是丹青,本身切图切的真是恶心到爆了...囧

有关小编:吴鹏煜

图片 3

红心、勇气、创新意识和传说。(今日头条博客园:@Nappp) 个人主页 · 我的稿子 · 13

图片 4

包装案例--改换背景颜色

图片 5

鼠标滚轴案例

wheelFn(oBox,changeBg);

var r =parseInt(Math.random()*255),

g =parseInt(Math.random()*255),

b =parseInt(Math.random()*255),

function changeBg(down) {

if(down) {

//oBox.style.height = oBox.offsetHeight 10 'px';

oBox.style.backgroundColor='rgb(' r ',' g ',' b ')';

r ,g ,b ;

if(r <0|| g <0||b <0) {return false;}

}else{

//oBox.style.height = oBox.offsetHeight - 10 'px';

oBox.style.backgroundColor='rgb(' r ',' g ',' b ')';

r--,g--,b--;

}

}

<pre>
.wrapper{ overflow:hidden; margin:0 auto; position:relative;}
.wrapper input{position:absolute}
.wrapper input.grow{-webkit-animation:grow 0.8s cubic-bezier(0.175,0.885,0.32,1.275);-moz-animation:grow 0.8s cubic-bezier(0.175,0.885,0.32,1.275);animation:grow 0.8s cubic-bezier(0.175,0.885,0.32,1.275)}
@-webkit-keyframes grow{
0%{-webkit-transform:scale(1)}
30%{-webkit-transform:scale(2.5)}
100%{-webkit-transform:scale(1)}
}
@-moz-keyframes grow{
0%{-moz-transform:scale(1)}
30%{-moz-transform:scale(2.5)}
100%{-moz-transform:scale(1)}
}
@keyframes grow{
0%{transform:scale(1)}
30%{transform:scale(2.5)}
100%{transform:scale(1)}
}
</pre>
到了最首要的时候了,最大旨的代码,先创制input复选框标签然后增多到div上,..实际情况请往上边看∨
<pre>
<script>
var RES_X = 20;//横向创造input

test.js

完整来讲还是可以够看的,依旧缺少二个动画。在写这么些插件意识到协和的插件用到了有的相比基础的函数,于是想到把那些函数应该封装起来,近来依旧在深深学习js,把手头上那本书看完就应当起先写这些基础函数的插件了,当然,动画引擎不能缺少。话相当少说,源码在此(注意:本插件完整版的是有图片的,请在文末附件中下载完整的插件):

var RES_Y = 20;//竖向创立input
var SIZE = 22;
if (/iphone|ipad|android/ig.test(navigator.userAgent)) {
RES_X = 10;
RES_Y = 10;
SIZE = 25
}
var entities = [];
var wrapper = document.getElementById('lanren');
wrapper.className = 'wrapper';
wrapper.style.width = (RES_X * SIZE) 'px';
wrapper.style.height = (RES_Y * SIZE) 'px';
for (var x = 0; x < RES_X; x ) {
for (var y = 0; y < RES_Y; y ) {
var el = document.createElement('input');
el.setAttribute('type', 'checkbox');
wrapper.appendChild(el);
var entity = {
element: el,
x: x * SIZE,
y: y * SIZE
}
el.style.left = entity.x 'px';
el.style.top = entity.y 'px';
el.addEventListener('change', this.toggle.bind(this, entity));
entities.push(entity)
}
}
function toggle(targetEntity) {
var checked = targetEntity.element.checked;
entities.forEach(function(entity) {
var dx = targetEntity.x - entity.x;
var dy = targetEntity.y - entity.y;
var distance = Math.sqrt(dx * dx dy * dy);
setTimeout(function() {
entity.element.checked = checked;
entity.element.className = '';
entity.element.offsetWidth;
entity.element.className = 'grow'
}, Math.round(distance * 1.8))
})
}
setTimeout(function() {
entities[0].element.checked = true;
toggle(entities[0])
}, 800);
</script>
</pre>
笔没墨了!
欲知详细情形,下节再讲!!!

[javascript] view plaincopyprint?//向window对象里面增多叁个load事件  
LD.addEvent(window,'load',function(){ 
    LD.log.writeRaw('This is raw'); 
 
    LD.log.writeRaw('<strong>This is bold!</strong>'); 
 
    LD.log.header('With a header'); 
 
    LD.log.write('write source:<strong>This is bold!</strong>'); 
     
    for(i in document){ 
            LD.log.write(i); 
        } 
}); 
//向window对象里面增加二个load事件
LD.addEvent(window,'load',function(){
 LD.log.writeRaw('This is raw');

CSS

 LD.log.writeRaw('<strong>This is bold!</strong>');

复制代码 代码如下:

 LD.log.header('With a header');

.lf_Scroll, .lf_Scroll li { padding: 0; margin: 0; list-style: none; font: 14px/24px "Helvetica Neue" ,Helvetica,Arial, 'Microsoft Yahei' ,sans-serif; outline: none; }
.lf_Scroll { cursor: pointer; width: 10px; position: absolute; right: 0; top: 0; filter: alpha(opacity=50); -moz-opacity: 0.5; -khtml-opacity: 0.5; opacity: 0.5; }
.lf_ScrollFocus { filter: alpha(opacity=100); -moz-opacity: 1; -khtml-opacity: 1; opacity: 1; }
.lfs_Top, .lfs_Center, .lfs_Bottom { background: url('ScrollBar.gif'); width: 10px; height: 10px; }
.lfs_Top { background-position: 1px 0px; }
.lfs_Center { background-position: center 0; height: 100px; }
.lfs_Bottom { background-position: -22px 0; }
/*Developers config*/
.rollDiv { height: 100%; width: 100%; overflow: hidden; position: relative; }

 LD.log.write('write source:<strong>This is bold!</strong>');
 
 for(i in document){
         LD.log.write(i);
  }
});myLog.js[javascript] view plaincopyprint?// JavaScript Document  
 
//myLogger的构造函数  
function myLogger(id){ 
    id=id||"ICLogWindow"; 
 
    //日志窗体的援用  
    var logWindow=null; 
    //创立日志窗体  
    var createWindow=function(){ 
            var browserWindowSize = LD.getBrowserWindowSize(); 
            var top=(browserWindowSize.height-200)/2||0; 
            var left=(browserWindowSize.width-200)/2||0; 
 
            //使用UL  
            logWindow=document.createElement("UL"); 
            //在document下增加四个dom对象UL  
 
            //增加ID实行标志        
            logWindow.setAttribute("id",id); 
 
            //对窗体举办css样式调控  
            logWindow.style.position='absolute'; 
            logWindow.style.top=top 'px'; 
            logWindow.style.left=left 'px'; 
     
            logWindow.style.width='200px'; 
            logWindow.style.height='200px'; 
            logWindow.style.overflow='scroll'; 
             
            logWindow.style.padding='0'; 
            logWindow.style.margin='0'; 
            logWindow.style.border='1px solid black'; 
            logWindow.style.backgroundColor='white'; 
            logWindow.style.listStyle='none'; 
            logWindow.style.font='10px/10px Verdana, Tahoma, Sans'; 
 
            //将窗体加多到页面上边  
            document.body.appendChild(logWindow); 
        } 
 
//向日志窗体中增添一行  
    this.writeRaw=function(message){ 
            //假诺初阶窗体是不设有的,则变动日志窗体  
        if(!logWindow){ 
                createWindow(); 
            } 
//创建li的dom节点  
        var li=document.createElement('LI'); 
 
        //对窗体实行css样式调控  
         
        li.style.padding='2px'; 
        li.style.border='0'; 
        li.style.borderBottom='1px dotted black'; 
        li.style.margin='0'; 
        li.style.color='#000'; 
 
        //      验证message信息  
        if(typeof message == 'undefined'){ 
 
                //在li里面添Gavin本节点。  
                li.appendChild(  
                    document.createTextNode('Message is undefined')     
                    ); 
            }else if(typeof li.innerHTML!=undefined){ 
        //这是另一种方式的公布  
                    li.innerHTML=message; 
                }else{ 
                        li.appendChild( 
                            document.createTextNode(message)        
                        ); 
                    } 
                logWindow.appendChild(li); 
                return true; 
        }; 

//对象字面量的方法宣示特权方法  
//向日志窗体中增加一行,向输入的从头到尾的经过张开简劣点理  
myLogger.prototype={ 
     
    write:function(message){ 
        if(typeof message=='string' && message.length==0 ){ 
                return this.writeRaw('未有输入消息'); 
             
        } 
        if(typeof message !='string'){ 
                if(message.toString){ 
                    return this.writeRaw(message.toString()); 
                }else{ 
                    return this.writeRaw(typeof message); 
                } 
            } 
//将超越号小于号进行正则调换来HTML标志  
        message=message.replace(/</g,"<").replace(/>/g,">"); 
        return this.writeRaw(message); 
    }, 
    header:function(message){ 
        message='<span style="color:white;background-color:black;font-weight:bold;padding:0px 5px;">' message '</span>'; 
        return this.writeRaw(message); 
        } 
}; 
window['LD']['log'] = new myLogger(); 
// JavaScript Document

JavaScript

//myLogger的构造函数
function myLogger(id){
 id=id||"ICLogWindow";

复制代码 代码如下:

 //日志窗体的援引
 var logWindow=null;
 //成立日志窗体
 var createWindow=function(){
         var browserWindowSize = LD.getBrowserWindowSize();
   var top=(browserWindowSize.height-200)/2||0;
   var left=(browserWindowSize.width-200)/2||0;

/*
* This plugin is defined on the simulation Webpage scroll bar, please insert after binding for DOM events
*
* Comment version: 1.0.0
* Author:linkfly
* Sina:为你集中半世纪 |  cnblogs: | Email:linkFly6@live.com
* date:2014-02-05 02:38:35
*
*
* Dual licensed under the MIT and GPL licenses:
*
*
*
*/
(function (window, undefined) {
    //配置参数音讯
    var config = {
        auto: true,
        height: 'auto',
        width: 'auto'
    };
    var linkFlyScroll = function (dom, options) {
        /// <summary>
        ///     1: 生成模仿滚动条对象,【请在本对象专门的学业今后再为您钦命的指标绑定事件,不然你事先绑定的风云将不会议及展览开工作】
        ///         1.1 - linkFlyScroll(dom) - 在内定的dom上扭转滚动条对象
        ///         1.2 - linkFlyScroll(dom,options) - 生成滚动条对象,同有时常间提供一名目许多的参数允许你自定义配置该对象的劳作模型
        /// </summary>
        /// <param name="dom" type="String Or element">
        ///     传入js的dom对象,或然为string类型的该指标ID
        /// </param>
        /// <param name="options" type="Json">
        ///     自定义配置该对象的做事模型,有如下选项:
        ///       [可选]auto(Boolean):当内容并未有落成容器的冲天的时候,是或不是自动隐敝滚动条,默以为true(是)
        ///       [可选]height(Int Or String):私下认可单位为px,可感到int和String.值为auto则私下认可使用css的冲天
        ///       [可选]width(Int Or String):暗许单位为px,可感到int和String.值为auto则私下认可使用css的大幅度
        /// </param>
        /// <returns type="linkFlyScroll" />
        if (typeof (dom) === 'string') {
            dom = document.getElementById(dom);
        }
        //未有一点点名dom和未有查找到有效的dom
        //linkFlyScroll("")、 linkFlyScroll(null)、linkFlyScroll(undefined)
        if (!dom || !dom.nodeType)
            return this;
        //创造容器对象
        var scrollObj = document.createElement('div');
        //深度克隆内容对象,并未有包括事件,所以须要等到linkFlyScroll对象工作完毕后才得以为该dom对象绑定事件
        var cloneObj = dom.cloneNode(true);
        scrollObj.className = 'rollDiv';
        scrollObj.appendChild(cloneObj);
        //替换页面上脚下目的
        dom.parentNode.replaceChild(scrollObj, dom);
        return new linkFlyScroll.prototype.init(scrollObj, options ? options : {});
    };
    linkFlyScroll.prototype.init = function (dom, options) {
        /// <summary>
        ///     1: 本对象才是确实意义上干活的靶子,特殊的办事办法是因为大概存在linkFlyScroll的静态调用和实例化调用
        ///         1.1 - init(dom,options) - 在钦命的dom上生成滚动条对象
        /// </summary>
        /// <param name="dom" type="element">
        ///     dom对象
        /// </param>
        /// <param name="options" type="Json">
        ///     自定义配置该指标的办事模型,有如下选项:
        ///       [可选]auto(Boolean):当内容并未有到达容器的中度的时候,是或不是自动隐蔽滚动条,默感到true(是)
        ///       [可选]height(Int Or String):私下认可单位为px,可感到int和String.值为auto则默许使用css的冲天
        ///       [可选]width(Int Or String):暗中同意单位为px,可感到int和String.值为auto则暗中认可使用css的急剧
        /// </param>
        /// <returns type="linkFlyScroll" />
        /*
        * 本指标包涵以下属性:
        * isDrag:是不是正在拖拽滚动条
        * startTop:(职业中)滚动条起头滚动地方
        * endTop:(专业中)滚动条结束滚动地方
        * topLimit:滚动条最上部极限地方
        * bottomLimit:滚动条尾部极限地点
        * context:内容Dom
        * scrollRadix:滚动基数
        * target:容器Dom
        */
        //当前this对象,为幸免this指针在条件中会常常转移(举个例子绑定事件的时候),所以将最近目的保存起来
        var currScroll = this;
        //DOMElement
        if (dom.nodeType) {
            //保存容器和内容DOM
            currScroll.target = dom;
            currScroll.context = dom.firstChild;
            //合併配置参数
            currScroll.options = tool.extend(config, options);
            if (currScroll.options.width !== 'auto') {
                dom.style.width = tool.convertValue(currScroll.options.width);
            }
            if (currScroll.options.height !== 'auto') {
                dom.style.height = tool.convertValue(currScroll.options.height);
            }
            //查找到有效的dom
            while (currScroll.context.nodeType != 1) {
                currScroll.context = currScroll.context.nextSibling;
            }
            //创制滚动条dom
            currScroll.scrollUl = document.createElement('ul');
            currScroll.scrollUl.className = 'lf_Scroll';
            currScroll.scrollUl.appendChild(tool.setClass('li', 'lfs_Top'));
            currScroll.scrollUl.appendChild(tool.setClass('li', 'lfs_Center'));
            currScroll.scrollUl.appendChild(tool.setClass('li', 'lfs_Bottom'));
            currScroll.context.style.position = 'relative';
            //先呈以往页面上才足以读取位置数据
            dom.appendChild(currScroll.scrollUl);
            this.change();
            tool.addScrollEvent(currScroll.context, function (e) {
                //绑定鼠标滚轮事件,3px滚动单位
                if (e.wheel > 0) {//滚轮向上滚动
                    var currTop = currScroll.endTop -= 3;
                    currScroll.scrollEvent.call(currScroll, currTop);
                } else {//滚轮向下滚动
                    var currTop = currScroll.endTop = 3;
                    currScroll.scrollEvent.call(currScroll, currTop);
                }
            });
            //需求管理禁止文字在拖动的时候被选中  TODO
            //鼠标点下事件,须要看清是还是不是是左键点击,近些日子右键也会落实滚动  TODO
            tool.addEvent(currScroll.scrollUl, 'mousedown', function (e) {
                mouseDown.call(currScroll, e);
            });
            //追加事件,为了更加好的客商体验在body上贯彻监听
            tool.addEvent(document.body, 'mousemove', function (e) {
                if (currScroll.isDrag) {
                    //获取当前鼠标地方
                    var position = tool.getMousePos(e);
                    //当前滚动条top地方
                    var currTop = (currScroll.endTop position.y - currScroll.startTop);
                    //call是为了让this指针正确的指向本工作对象
                    currScroll.scrollEvent.call(currScroll, currTop);
                }
                return false;
            });
            //追加鼠标释放事件,为了标准的捕捉到释放事件在body上监听
            tool.addEvent(document.body, 'mouseup', function () {
                mouseUp.call(currScroll, []);
            });
            var mouseDown = function (e) {
                /// <summary>
                ///     1: 鼠标按下事件
                ///         1.1 - mouseDown(e) - 滚动条中鼠标按下滚动条事件
                /// </summary>
                /// <param name="e" type="Event">
                ///     Event对象
                /// </param>
                /// <returns type="linkFlyScroll" />
                currScroll.isDrag = true;
                //获取当前鼠标y地方
                currScroll.startTop = tool.getMousePos(e).y;
                tool.addClass(currScroll.scrollUl, 'lf_ScrollFocus');
                return false;
            };
            var mouseUp = function () {
                /// <summary>
                ///     1: 鼠标释放事件
                ///         1.1 - mouseUp() - 滚动条中鼠标释放滚动条事件
                /// </summary>
                /// <returns type="linkFlyScroll" />
                currScroll.isDrag = false;
                currScroll.endTop = currScroll.scrollUl.style.top ? parseInt(currScroll.scrollUl.style.top) : 0;
                tool.removeClass(currScroll.scrollUl, 'lf_ScrollFocus');
                return false;
            };
            currScroll.scrollEvent = function (currTop) {
                /// <summary>
                ///     1: 滚动事件(大旨),传入供给滚动的坐标就可以(滚动条top)
                ///         1.1 - scroll伊芙nt(currTop) - 大旨滚动事件
                /// </summary>
                /// <param name="currTop" type="Int">
                ///     滚动条顶端距离上一层容器的top值
                /// </param>
                /// <returns type="void" />
                if (currTop <= currScroll.topLimit || currTop < 0) {//顶上部分终端
                    currTop = currScroll.topLimit;
                } else if (currTop >= currScroll.bottomLimit) {//尾部终端
                    currTop = currScroll.bottomLimit;
                }
                //滚动条偏移效果
                currScroll.scrollUl.style.top = currTop 'px';
                var tempTop = parseInt(currScroll.context.style.top ? currScroll.context.style.top : 0);
                //debug code
                //                document.getElementById('postionInfo').innerHTML = 'currTop:' currTop

   //使用UL
   logWindow=document.createElement("UL");
   //在document下加多叁个dom对象UL

  • ' 滚动基数:' currScroll.scrollRadix ' bottomLimit:' currScroll.bottomLimit ' endTop:' currScroll.endTop ' startTop:' currScroll.startTop " Y:" currTop " offsetTop:" currScroll.scrollUl.offsetTop " compute:" (currTop * currScroll.scrollRadix * -1) 'px';
                    //text code
                    //内容滚动:当前滚动条top*基数取负数
                    currScroll.context.style.top = currTop * currScroll.scrollRadix * -1 'px';
                };
                return currScroll;
            };
        };
        linkFlyScroll.prototype.init.prototype.change = function () {
            /// <summary>
            ///     1: 滚动条内容更动函数
            ///         1.1 - change() - 本函数代表刷新本滚动条对象的多寡,在某个意况下,内容的数量是直接在转移的,能够调用本函数对最近滚动条对象刷新数据
            /// </summary>
            /// <returns type="linkFlyScroll" />
            /*
            * linkFlyScroll包括的品质首要在本函数中开始化或再一次定义:
            * isDrag:是还是不是正在拖拽滚动条
            * startTop:(工作中)滚动条起始滚动地方
            * endTop:(职业中)滚动条停止滚动地方
            * topLimit:滚动条顶上部分极限地点
            * bottomLimit:滚动条底部极限地方
            * context:内容Dom
            * scrollRadix:滚动基数
            * target:容器Dom
            */
            //复位或读取一密密麻麻数据
            var currScroll = this;
            currScroll.isDrag = false,
            currScroll.startTop = 0,
            currScroll.endTop = (currScroll.scrollUl.style.top ? parseInt(currScroll.scrollUl.style.top) : 0),
            currScroll.topLimit = currScroll.target.scrollTop,
            currScroll.bottomLimit = currScroll.target.clientHeight,
            currScroll.scrollRadix = 10;
            //得出滚动条的冲天:内容惊人*(容器中度/内容惊人=容器占内容百分比)
            var scrollPx = currScroll.target.clientHeight * (currScroll.target.clientHeight / currScroll.context.offsetHeight);
            //滚动条高度
            currScroll.scrollUl.childNodes[1].style.height = scrollPx 'px';
            if (currScroll.context.clientHeight <= currScroll.target.clientHeight && currScroll.options.auto) {
                currScroll.scrollUl.style.display = 'none';
            } else {
                currScroll.scrollUl.style.display = 'block';
                //当滚动条展现,校订最大职务数据
                currScroll.bottomLimit -= currScroll.scrollUl.offsetHeight;
            }
            //设置滚动条滚动基数(滚动条没滚动1px内容滚动像素):(内容惊人-容器中度[因为眼前容器已经展示了一屏])/滚动条top(滚动条空白可滚动中度)
            currScroll.scrollRadix = (currScroll.context.offsetHeight - currScroll.target.clientHeight) / currScroll.bottomLimit;
            return currScroll;
        };
        linkFlyScroll.prototype.init.prototype.roll = function (value) {
            /// <summary>
            ///     1: 滚动条偏移方法
            ///         1.1 - roll(value) - 滚动条滚动方法
            /// </summary>
            /// <param name="value" type="Int">
            ///     滚动条指标滚动的比重
            /// </param>
            /// <returns type="linkFlyScroll" />
            var currScroll = this;
            if (typeof (value) !== 'number') {
                return currScroll;
            }
            var currTop = (currScroll.bottomLimit - currScroll.topLimit) * value / 100;
            currScroll.scrollEvent(currTop);
            currScroll.endTop = currTop;
            return currScroll;
        };
        /*
        * 工具类
        */
        var tool = {
            setClass: function (element, className) {
                /// <summary>
                ///     1: 设置成分节点的class属性
                ///         1.1 - setClass(element,className) - 设置成分节点的class属性,如未有该节点则开创该节点,并赶回修改后的节点指标
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     传入String则创制该节点,不然修改该节点
                /// </param>
                /// <param name="className" type="String">
                ///     Class Name
                /// </param>
                /// <returns type="Element" />
                if (typeof element === 'string') {
                    element = document.createElement(element);
                }
                element.className = className;
                return element;
            },
            hasClass: function (element, className) {
                /// <summary>
                ///     1: 判定成分是还是不是有class
                ///         1.1 - hasClass(element,className) - 决断成分是不是有class,在作业中非常(基本未有这一场馆包车型大巴发出)和有该class再次回到true,不然重回false
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     节点目的
                /// </param>
                /// <param name="className" type="String">
                ///     Class Name
                /// </param>
                /// <returns type="Element" />
                if (!element || element.nodeType !== 1)//让这些通过,外面不进行管理
                    return true;
                var elementClassName = element.className;
                if (elementClassName.length < 1) {
                    return false;
                }
                if (elementClassName == className || elementClassName.match(new RegExp("(^|\s)" className "(\s|$)"))) {
                    return true;
                }
                return false;
            },
            addClass: function (element, className) {
                /// <summary>
                ///     1: 为元素【追加】class
                ///         1.1 - addClass(element,className) - 为要素【追加】class,并回到修改后的class
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     节点目的
                /// </param>
                /// <param name="className" type="String">
                ///     Class Name
                /// </param>
                /// <returns type="Element" />
                if (!tool.hasClass(element, className)) {
                    if (element.className.length < 1) {
                        element.className = className;
                    } else {
                        element.className = ' ' className;
                    }
                }
                return element;
            },
            removeClass: function (element, className) {
                /// <summary>
                ///     1: 为成分移除class
                ///         1.1 - addClass(element,className) - 为因素移除class,并再次来到修改后的class
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     节点指标
                /// </param>
                /// <param name="className" type="String">
                ///     Class Name
                /// </param>
                /// <returns type="Element" />
                if (tool.hasClass(element, className)) {
                    var reg = new RegExp("(^|\s)" className "(\s|$)");
                    element.className = element.className.replace(reg, '');
                }
                return element;
            },
            css: function (element, key) {
                /// <summary>
                ///     1: 获取成分css钦赐的属性值
                ///         1.1 - css(element,className) - 获取成分css内定的属性值
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     节点指标
                /// </param>
                /// <param name="key" type="String">
                ///     要赢得的css属性
                /// </param>
                /// <returns type="String" />
                return element.currentStyle ? element.currentStyle[key] : document.defaultView.getComputedStyle(element, false)[key];
            },
            addEvent: function (element, type, fn) {
                /// <summary>
                ///     1: 为因素追加事件
                ///         1.1 - css(element, type, fn) - 为因素追加事件,函数中this指向事件源
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     节点目的
                /// </param>
                /// <param name="type" type="String">
                ///     追加的风云名,不含字符on
                /// </param>
                /// <param name="fn" type="Function">
                ///     事件目的
                /// </param>
                /// <returns type="void" />
                if (element.attachEvent) {
                    element['e' type fn] = fn;
                    element[type fn] = function () { element['e' type
  • fn](window.event); }
                    element.attachEvent('on' type, element[type fn]);
                } else if (element.addEventListener) {
                    element.addEventListener(type, fn, false);
                }
            },
            //        removeEvent: function (element, type, fn) {
            //            /// <summary>
            //            ///     1: 为成分删除事件,本函数并未有用到
            //            ///         1.1 - remove伊芙nt(element, type, fn) - 为要素删除事件
            //            /// </summary>
            //            /// <param name="element" type="Element Or String">
            //            ///     节点指标
            //            /// </param>
            //            /// <param name="type" type="String">
            //            ///     删除的平地风波名
            //            /// </param>
            //            /// <param name="key" type="String">
            //            ///     删除的风浪的函数名
            //            /// </param>
            //            /// <returns type="void" />
            //            if (element.detachEvent) {
            //                element.detachEvent('on' type, element[type
  • fn]);
            //                element[type fn] = null;
            //            } else if (element.removeEventListener) {
            //                element.removeEventListener(type, fn, false);
            //            }
            //        },
            addScrollEvent: function (element, fn) {
                /// <summary>
                ///     1: 追加ScrollEvent事件
                ///         1.1 - addScroll伊夫nt(element,fn) - 在要素上平添ScrollEvent事件(特殊事件,在要素上鼠标滚轮滚动事件)
                /// </summary>
                /// <param name="element" type="Element Or String">
                ///     成分节点
                /// </param>
                /// <param name="fn" type="Function">
                ///     事件措施
                /// </param>
                /// <returns type="void" />
                var bindScrollFn = function (e) {
                    e = e || window.event;
                    //剖断滚轮滚动方向:Firefox和别的浏览器差异
                    e.wheel = (e.wheelDelta ? e.wheelDelta : -e.detail) > 0 ? 1 : -1; // 通过事件判定鼠标滚轮反向,1是升高,-1是向下
                    //阻止浏览器暗许行为
                    if (e.preventDefault) { //ff
                        e.preventDefault();
                    } else {
                        e.returnValue = false; //ie
                    }
                    fn.call(element, e);
                }
                if (document.addEventListener) {
                    //ff
                    element.addEventListener('DOMMouseScroll', bindScrollFn, false);
                    //w3c
                    element.addEventListener('mousewheel', bindScrollFn, false);
                } else//ie
                {
                    element.attachEvent('onmousewheel', bindScrollFn);
                }
            },
            getEvent: function () {
                /// <summary>
                ///     1: 获取Event对象
                ///         1.1 - get伊夫nt() - 在无参数的动静下拿到伊夫nt对象,同有时间包容性管理IE和FF
                /// </summary>
                /// <returns type="Event" />
                if (document.all) {
                    return window.event;
                }
                func = getEvent.caller;
                while (func != null) {
                    var arg0 = func.arguments[0];
                    if (arg0) {
                        if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
                            return arg0;
                        }
                    }
                    func = func.caller;
                }
                return null;
            },
            getMousePos: function (ev) {
                /// <summary>
                ///     1: 获取当前鼠标坐标
                ///         1.1 - getMousePos(ev) - 获取当前鼠标坐标,包容性管理,再次回到的对象格式:{ x:鼠标x坐标 , y:鼠标y坐标 }
                /// </summary>
                /// <param name="ev" type="Event">
                ///     Event事件指标
                /// </param>
                /// <returns type="Json" />
                if (!ev) {
                    ev = currScroll.getEvent();
                }
                if (ev.pageX || ev.pageY) {
                    return {
                        x: ev.pageX,
                        y: ev.pageY
                    };
                }
                if (document.documentElement && document.documentElement.scrollTop) {
                    return {
                        x: ev.clientX document.documentElement.scrollLeft
  • document.documentElement.clientLeft,
                        y: ev.clientY document.documentElement.scrollTop - document.documentElement.clientTop
                    };
                }
                else if (document.body) {
                    return {
                        x: ev.clientX document.body.scrollLeft - document.body.clientLeft,
                        y: ev.clientY document.body.scrollTop - document.body.clientTop
                    };
                }
            },
            extend: function (oldObj, newObj) {
                /// <summary>
                ///     1: 将四个目的开展联合
                ///         1.1 - extend(oldObj,newObj) - 将四个对象合併,并赶回合併后的靶子,选择clone的点子完结,所以不会对三个指标发生任何影响
                /// </summary>
                /// <param name="oldObj" type="Object">
                ///     要联合的对象A,该目的作为基础对象,将新目的的同名属性覆盖到基础对象中
                /// </param>
                /// <param name="newObj" type="Object">
                ///     要联合的对象B
                /// </param>
                /// <returns type="Object" />
                var tempObj = tool.clone(oldObj);
                for (var key in newObj) {
                    if (newObj.hasOwnProperty(key) && !tempObj.hasOwnProperty(key)) {
                        tempObj[key] = newObj[key];
                    }
                }
                return tempObj;
            },
            clone: function (obj) {
                /// <summary>
                ///     1: 克隆七个对象
                ///         1.1 - clone(obj) - 克隆叁个目的,并再次来到克隆后的新目的,该目的的原型是被克隆的靶子
                /// </summary>
                /// <param name="obj" type="Object">
                ///     要克隆的目的
                /// </param>
                /// <returns type="Object" />
                function Clone() { }
                Clone.prototype = obj;
                var newObj = new Clone();
                for (var key in newObj) {
                    if (typeof newObj[key] == "object") {
                        newObj[key] = tool.clone(newObj[key]);
                    }
                }
                return newObj;
            },
            convertValue: function (value) {
                /// <summary>
                ///     1: 将数值调换为有效的数值
                ///         1.1 - convertValue(value) - 将Json配置的css数值转变为可行的数值,请确定保证value的值不为"auto"
                /// </summary>
                /// <param name="value" type="Object">
                ///     要转移的数值
                /// </param>
                /// <returns type="Object" />
                var reg = /^d $/g;
                if (typeof (value) === 'number' || reg.test(value)) {
                    return value 'px';
                } else
                    return value;
            }
        };
        //注册到window下
        window.linkFlyScroll = linkFlyScroll;
        //注册到window.so命名空间下
        if (!window.so) {
            window.so = {};
        }
        window.so.scroll = window.linkFlyScroll;
    })(window);

   //加多ID进行标记     
   logWindow.setAttribute("id",id);

代码示例

   //对窗体进行css样式调整
   logWindow.style.position='absolute';
   logWindow.style.top=top 'px';
   logWindow.style.left=left 'px';
 
   logWindow.style.width='200px';
   logWindow.style.height='200px';
   logWindow.style.overflow='scroll';
   
   logWindow.style.padding='0';
   logWindow.style.margin='0';
   logWindow.style.border='1px solid black';
   logWindow.style.backgroundColor='white';
   logWindow.style.listStyle='none';
   logWindow.style.font='10px/10px Verdana, Tahoma, Sans';

复制代码 代码如下:

   //将窗体增加到页面下面
   document.body.appendChild(logWindow);
  }

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
    <title></title>
    <link href="linkFlyScroll/linkFlyRollCss.css" rel="stylesheet" type="text/css" />
    <script src="linkFlyScroll/linkFlyScroll-1.0.0.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function () {
            var config = {
                auto: true, //当内容并未有达标容器的万丈的时候,是或不是自动隐敝滚动条
                height: '100', //滚动条对象专门的学问中度(超过该高度则显示滚动条),auto取对象当前高
                width: 'auto'//滚动条对象专业幅度
            };
            var scrollObj = so.scroll('obj', config);
            //            scrollObj.change();//当滚动条内容改换后,须要刷新滚动条的来得,则调用本办法
            //            scrollObj.roll(value);//把滚动条定位到某一点上,value为绝对于滚动条对象的百分比
        };
    </script>
</head>
<body>
    <div id="obj">
        <div>
            当前,集团管理世界刮起一股新的“前卫风”,一些要员集团纷纭为协和“瘦腿”,向更智慧和能屈能伸的职业转型。据精晓,金鼎文软件正越来越多地把顾客的机要敬服开支向咨询顾问和第三方承包商转移。
            “在中夏族民共和国家乡,九成的宋体企务是因而那一个同盟同伴开展的。其它,为了越发入保证证大篆的进项,COO埃里森还购买了仙本那的七个岛屿。” 克雷格 Guarente说道。
            作为全球副主管,Guarente特别清楚陶文的各样计策。Guarente具有16年的办事经验,曾经在左券管理、软件许可证管理、软件审计方面有加上经历。2012年离开陶文后,加入了Palisade公司,该商厦的重卓著的业绩务是赞助草春花户提供软件承包、审计出席和牌照“优化”等事务。
            Guarente代表,Palisade集团事情发展十分高效。作为第三方单位,Palisade帮忙客商得到了名著订单,因为她俩更邻近市肆,能越来越纯粹地掌握客户要求。
            一般的话,咨询集团是赞助客商梳理他的骨子里必要及软件本身能提供哪些价值。Guarente通超过实际际操作做了详尽阐释。比如“你想建设贰个新的数目主导,想要推出三个新的不幸苏醒布置,只怕您想进去云端,第三方商号率先会制订一个规划图,最后实现,达成顾客最后目的。假如把软件布署在繁多服务器的例外职位上,公司会有错过软件的景色。因为商家软件非常少能收获许可证密钥。但Oracle已经变成习于旧贯,每二个大概效用都得以在软件条件下下载。Oracle数据库助理馆员通过自动负载的存款和储蓄库(AW奥迪Q5)报告就能够检查判断数据库难题,那是大范围的事,但必要你有多个Oracle数据库包的许可。”
            近年来,随着软件审计浪潮的兴起,大多合营社正在安装软件资金财产处理工科具来分明他们运用什么软件,能选择多久,贰个合营社多少人在用。但著名管理剖析师Hegedus聊起:“没有其余工具能确切精晓公司法规,尤其是金鼎文的成品选择,须求专门的学业的第三方单位来扶助客商理解软件准则。”
            那么怎么能力为草书的软件应用打补丁呢?小篆化总同盟裁马克•赫德(马克Hurd)下16日意味着:在集团应用之初要把第三方机构定义为劳动援助方,那样有利于集团未来免费获得补丁修复和其他协理,而不只是购买产品知识产权。其它,公司要卓有功效使用咨询顾问,在询问公司应用什么软件,公约应该富含哪些内容时,扶助资金调节的率先步。不要盲目离开软件承包商,根据自个儿预测和预计的流水生产线买卖软件。
        </div>
    </div>
</body>
</html>

//向日志窗体中增添一行
 this.writeRaw=function(message){
         //假设最初窗体是子虚乌有的,则转移日志窗体
  if(!logWindow){
    createWindow();
   }
//创建li的dom节点
  var li=document.createElement('LI');

上述就是本文的全体内容了,批注的那几个详尽,希望大家能够喜欢。

  //对窗体举办css样式调整
  
  li.style.padding='2px';
  li.style.border='0';
  li.style.borderBottom='1px dotted black';
  li.style.margin='0';
  li.style.color='#000';

你可能感兴趣的稿子:

  • 用javascript实现转移TEXTAREA滚动条和开关的颜色,以及哪些让滚动条变得扁平
  • JavaScript兑现滚动栏效能的方法
  • javascript html5兑现仿flash滚动播放图片的主意
  • JavaScript调控网页平滑滚动到钦点成分地方的不二秘籍
  • javascript落到实处左右说了算无缝滚动
  • Javascript 完成图片无缝滚动
  • 回来最上部按键响应滚动且动态呈现与遮盖
  • jquery左右滚动核心图banner图片鼠标经过展现上下页按键
  • 依照jquery完成点击左右开关图片横向滚动
  • js完结带开关的左右滚动作效果应

  //  验证message信息
  if(typeof message == 'undefined'){

          //在li里面增添文本节点。
    li.appendChild(
     document.createTextNode('Message is undefined')   
     );
   }else if(typeof li.innerHTML!=undefined){
        //那是另一种方法的公布
     li.innerHTML=message;
    }else{
      li.appendChild(
       document.createTextNode(message)   
      );
     }
    logWindow.appendChild(li);
    return true;
  };
}
//对象字面量的章程宣示特权方法
//向日志窗体中增多一行,向输入的剧情开展简要管理
myLogger.prototype={
 
 write:function(message){
  if(typeof message=='string' && message.length==0 ){
          return this.writeRaw('未有输入消息');
   
  }
  if(typeof message !='string'){
    if(message.toString){
     return this.writeRaw(message.toString());
    }else{
     return this.writeRaw(typeof message);
    }
   }
//将高于号小于号举办正则调换来HTML标志
  message=message.replace(/</g,"<").replace(/>/g,">");
  return this.writeRaw(message);
 },
 header:function(message){
  message='<span style="color:white;background-color:black;font-weight:bold;padding:0px 5px;">' message '</span>';
  return this.writeRaw(message);
  }
};
window['LD']['log'] = new myLogger();LD.js[javascript] view plaincopyprint?// JavaScript Document  
if(document.all && !document.getElementById){ 
    document.getElementById=function(id){ 
        return document.all[id]; 
        } 
    } 
 
if(!String.repeat){ 
        String.prototype.repeat=function(l){ 
            return new Array(l 1).join(this); 
            } 
    } 
 
if(!String.trim){ 
        String.prototype.trim=function(){ 
                return this.replace(/^s | $/g,''); 
            }  
    } 
 
(function(){ 
    //构造命名空间  
    window['LD']={} ;   
     
    function $(){ 
        var elements=new Array(); 
        //arguments当前函数的参数数组。参数  
        for(var i=0;i<arguments.length;i ){ 
                var element=arguments[i]; 
                 
                if(typeof element=='string'){ 
                        element=document.getElementById(element); 
                    } 
                if(arguments.length==1){ 
                    return element; 
                    } 
                elements.push(element); 
        } 
        return elements; 
    } 
    //注册命名空间  
    window['LD']['$']=$; 
     
    function getElementsByClassName(className,tag){ 
            parent=parent || document; 
            if(!(parent=$(parent))) return false; 
             
             
            //var allTags=document.getElementsByTagName(tag);  
            //对tag实行过滤,把tag的对象全抽出来  
            var allTags=(tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag); 
            var matchingElements=new Array(); 
             
            className=className.replace(/-/g,"\-"); 
            var regex=new  RegExp("(^|\s)" className "(\s|$)"); 
             
            var element; 
            for(var i=0;i<allTags.length;i ){ 
                    element=allTags[i]; 
                    if(regex.test(element.className)){ 
                            matchingElements.push(element); 
                        } 
                } 
                 
                //重回那些数组  
            return matchingElements; 
        } 
        window['LD']['getElementsByClassName']=getElementsByClassName; 
         
        function bindFunction(ojb,func){ 
                return function(){ 
                        func.apply(obj,arguments); 
                    } 
            }; 
        window['LD']['bindFunction']=bindFunction; 
         
    function getBrowserWindowSize(){ 
            var de=document.documentElement; 
            return{ 
                    'width':( 
                        window.innerWidth 
                        || (de && de.clientWidth) 
                        || document.body.clientWidth), 
                    'heigth':( 
                        window.innerHeight 
                        || (de && de.clientHeight) 
                        || de && document.body.clientHeight) 
                } 
        }; 
        //注册才能件  
    window['LD']['getBrowserWindowSize']=getBrowserWindowSize; 
     
     
    function addEvent(node,type,listener){ 
            if(!(node=$(node))) return false; 
             
            if(node.addEventListener){ 
                node.addEventListener(type,listener,false); 
                return true; 
               }else if(node.attachEvent){ 
                    node['e' type listener]=listener; 
                    node[type listener]=function(){node['e' type listener](window.event);} 
                    node.attachEvent('on' type, node[type listener]); 
                    return true; 
                   } 
               return false; 
        }; 
        //注册技巧件  
    window['LD']['addEvent']=addEvent; 
     
})(); 
// JavaScript Document
if(document.all && !document.getElementById){
 document.getElementById=function(id){
  return document.all[id];
  }
 }

if(!String.repeat){
  String.prototype.repeat=function(l){
   return new Array(l 1).join(this);
   }
 }

if(!String.trim){
  String.prototype.trim=function(){
    return this.replace(/^s | $/g,'');
   }
 }

(function(){
 //构造命名空间
 window['LD']={} ; 
 
 function $(){
  var elements=new Array();
  //arguments当前函数的参数数组。参数
  for(var i=0;i<arguments.length;i ){
    var element=arguments[i];
    
    if(typeof element=='string'){
      element=document.getElementById(element);
     }
    if(arguments.length==1){
     return element;
     }
    elements.push(element);
  }
  return elements;
 }
 //注册命名空间
 window['LD']['$']=$;
 
 function getElementsByClassName(className,tag){
   parent=parent || document;
   if(!(parent=$(parent))) return false;
   
   
   //var allTags=document.getElementsByTagName(tag);
   //对tag举办过滤,把tag的目标全抽取来
   var allTags=(tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);
   var matchingElements=new Array();
   
   className=className.replace(/-/g,"\-");
   var regex=new  RegExp("(^|\s)" className "(\s|$)");
   
   var element;
   for(var i=0;i<allTags.length;i ){
     element=allTags[i];
     if(regex.test(element.className)){
       matchingElements.push(element);
      }
    }
    
    //再次来到这一个数组
   return matchingElements;
  }
  window['LD']['getElementsByClassName']=getElementsByClassName;
  
  function bindFunction(ojb,func){
    return function(){
      func.apply(obj,arguments);
     }
   };
  window['LD']['bindFunction']=bindFunction;
  
 function getBrowserWindowSize(){
   var de=document.documentElement;
   return{
     'width':(
      window.innerWidth
      || (de && de.clientWidth)
      || document.body.clientWidth),
     'heigth':(
      window.innerHeight
      || (de && de.clientHeight)
      || de && document.body.clientHeight)
    }
  };
  //注册技艺件
 window['LD']['getBrowserWindowSize']=getBrowserWindowSize;
 
 
 function addEvent(node,type,listener){
   if(!(node=$(node))) return false;
   
   if(node.addEventListener){
       node.addEventListener(type,listener,false);
    return true;
      }else if(node.attachEvent){
        node['e' type listener]=listener;
     node[type listener]=function(){node['e' type listener](window.event);}
     node.attachEvent('on' type, node[type listener]);
     return true;
       }
      return false;
  };
  //注册技巧件
 window['LD']['addEvent']=addEvent;
 
})();运营结果:

 

图片 6

总结

        这么些小例子,基本上把以前所学内容,包含基础支撑、面向对象、原型、对象字面量、this、成效域链等知识点全体席卷,算是对JavaScript学习的二个总括。学的越多,越要找到所学内容之间的联系,学习JS,不只是唯有学习JS,更要联系从前所学的面向对象、C#、CSS等文化,让知识像路同样通行无阻,才具“书越读越薄”。今后能做的,正是三番两次营造作者的知识网。

 作者:lidaasky  

myLog.js:重要效能是创设myLogger构造...

本文由澳门新浦京娱乐场网站发布于新浦京娱乐场官网,转载请注明出处:自动隐藏的Sticky的Header,分享一则JavaScript滚动条