JS和jQuery宽高详解(中篇)

JS实例练习

首先了解一下document.documentElement与document.body之间的小区别,这两一个元素后者是前者的子集,也就是父子关系。

1)可视区域计算

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.5px "Trebuchet MS" }
span.s1 { }

实现原理:div元素到窗口顶部的高度小于窗口的可视高度,则执行对div绑定的函数。

这里获取div元素到窗口顶部的高度使用getBoundingClientRect()方法。

divTop = divId.getBoundingClientRect().top; 这个值随着滚动而变化。

实现的效果,div随着滚动条进入可视区域内,div添加一个动效类fadein_left:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #4663cc }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 }
span.s1 { color: #e48b00 }
span.s2 { color: #060606 }
span.s3 { color: #4663cc }
span.s4 { color: #698906 }
span.s5 { color: #4a8a01 }
span.s6 { color: #289c97 }
span.s7 { color: #000000 }
span.s8 { color: #4f5d66 }
span.s9 { color: #a5b2b9 }
span.Apple-tab-span { white-space: pre }

JS代码:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2b7ec3 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #4663cc }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
span.s1 { color: #4f5d66 }
span.s2 { color: #000000 }
span.s3 { color: #e48b00 }
span.s4 { color: #060606 }
span.s5 { color: #4663cc }
span.s6 { color: #698906 }
span.s7 { color: #4a8a01 }
span.s8 { color: #289c97 }
span.s9 { color: #a5b2b9 }
span.Apple-tab-span { white-space: pre }

<script>

function showDivs(){

var show_div = document.getElementById(‘show_div‘);

//window.innerHeight兼容IE9以上;clients可视区域

var clients = window.innerHeight || document.documentElement.clientHeight||document.body.clientHeight;

var divTop = show_div.getBoundingClientRect().top;//div模块距离窗口上边的高度,这个高度随着滚动在变化

//var divTop = show_div.offsetTop;

if(divTop <= clients){

show_div.classList.add(‘fadein_left‘); // 常用的是图片延迟加载,图片进入可视区域内则进行加载

}

}

window.onscroll = showDivs;

</script>

CSS样式

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2b7ec3 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #698906 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #4a8a01 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #929151 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #d74200 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas }
span.s1 { color: #4f5d66 }
span.s2 { color: #000000 }
span.s3 { color: #060606 }
span.s4 { color: #929151 }
span.s5 { color: #ad42ef }
span.s6 { color: #698906 }
span.s7 { color: #48565d }
span.s8 { color: #4a8a01 }
span.s9 { color: #d16400 }
span.Apple-tab-span { white-space: pre }

<style>

@-webkit-keyframes fadeInLeft{

0%{

opacity: 0;

-webkit-transform:translate3d(-100%,0,0);

transform:translate3d(-100%,0,0);

}

100%{

opacity: 1;

-webkit-transform:none;

transform:none;

}

}

@keyframes fadeInLeft{

0%{

opacity: 0;

-webkit-transform:translate3d(-100%,0,0);

-ms-transform:translate3d(-100%,0,0);

transform:translate3d(-100%,0,0);

}

100%{

opacity: 1;

-webkit-transform:none;

-ms-transform:none;

transform:none;

}

}

#show_div{

width: 500px;

height: 300px;

background: #f00;

margin: 1000px auto 0 auto;

}

.fadein_left{

-webkit-animation: fadeInLeft 2s;

animation: fadeInLeft 2s;

}

</style>

html:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #289c97 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #4f5d66 }
span.s1 { color: #4f5d66 }
span.s2 { color: #2b7ec3 }
span.s3 { color: #d74200 }
span.s4 { color: #48565d }
span.Apple-tab-span { white-space: pre }

<div id="show_div"></div>

2)滚动到顶部,底部的实现

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.5px "Trebuchet MS" }
span.s1 { }

实现原理:滚动条卷起的高度与可视窗口的高度的总和大于或等于文档的总高度则滚动到了底部;如果滚动到上边的高度为0则滚动到顶部。

实际使用:滚动条滚动到底部加载更多

JS代码:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2b7ec3 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #e48b00 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606; min-height: 18.0px }
span.s1 { color: #4f5d66 }
span.s2 { color: #a5b2b9 }
span.s3 { color: #000000 }
span.s4 { color: #4663cc }
span.s5 { color: #060606 }
span.s6 { color: #698906 }
span.s7 { color: #4a8a01 }
span.s8 { color: #289c97 }
span.s9 { color: #ad42ef }
span.Apple-tab-span { white-space: pre }

<script>

function scrollBottomOrTop(){

var scrollDiv = document.getElementById(‘scrolldiv‘);

var scrollTop = document.body.scrollTop;

var wholeHeight = document.body.scrollHeight;

var clients = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

console.log(scrollTop);

console.log(wholeHeight);

if(scrollTop==0){

alert("滚动到顶部了");

}

if(wholeHeight <= scrollTop+clients){

alert(‘滚动到底部了哦~~‘);

}

}

window.onscroll = scrollBottomOrTop;

</script>

CSS样式:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2b7ec3 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #d74200 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #4a8a01 }
span.s1 { color: #4f5d66 }
span.s2 { color: #000000 }
span.s3 { color: #929151 }
span.s4 { color: #4a8a01 }
span.s5 { color: #48565d }
span.s6 { color: #ad42ef }
span.s7 { color: #698906 }
span.s8 { color: #060606 }
span.s9 { color: #d16400 }
span.Apple-tab-span { white-space: pre }

<style>

.scrolldiv{

width: 500px;

height: 400px;

background: #f00;

margin: 1000px auto 0 auto;

}

</style>

html代码:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #289c97 }
span.s1 { color: #4f5d66 }
span.s2 { color: #2b7ec3 }
span.s3 { color: #d74200 }
span.s4 { color: #48565d }

<div class="scrolldiv" id="scrolldiv"></div>

3)滚动条的计算

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.5px "Trebuchet MS" }
span.s1 { }

实现原理:1. div元素offsetWidth的宽度与clientWidth的宽度差;

2. div元素没有滚动条是clientWidth与有滚动条时clientWidth

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2b7ec3 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #e48b00 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #060606 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #289c97 }
span.s1 { color: #4f5d66 }
span.s2 { color: #000000 }
span.s3 { color: #4663cc }
span.s4 { color: #060606 }
span.s5 { color: #698906 }
span.s6 { color: #4a8a01 }
span.s7 { color: #289c97 }
span.Apple-tab-span { white-space: pre }

JS代码:

<script>

//mac版滚动条不占宽度,window下是有宽度的

function getScrollBar(){

var el = document.createElement("p");

var myText = document.createTextNode("这里除了说明计算滚动条的宽度,还说明使用JS创建一个元素,以及向元素中添加内容。");

var styles={

width:"100px",

height:"100px",

overflowY:"scroll"

},i,scrollBarWidth;

for(i in styles){

el.style[i] = styles[i]

}

document.body.appendChild(el);

el.appendChild(myText);

var scrollBarWidth = el.offsetWidth - el.clientWidth;

//console.log(el.offsetWidth);

//console.log(el.clientWidth);

//el.remove();

return scrollBarWidth;

}

console.log(getScrollBar());

</script>

第二种方法就不实现了啦啦啦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

JS相关宽高实例就到此为止,下一篇就是jQuery相关的宽高喽~~~~

时间: 2024-10-24 23:54:00

JS和jQuery宽高详解(中篇)的相关文章

JS和jQuery宽高详解(上篇)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.5px "Trebuchet MS" } li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 12.5px "Trebuchet MS" } span.s1 { } span.s2 { font: 12.0px Helvetica } ol.o

JS和jQuery宽高详解(下篇)

jQuery相关的宽高 和JS相比,jQuery就像亲妈一样,JS就是后妈,哈哈哈哈哈------总之,jQuery对很多有关兼容的问题进行封装,只有极少一部分属性需要考虑兼容,用起来非常滴方便-- 与jQuery相关的宽高: .width()与.height(): .innerWidth()与 .innerHeight(); .outerWidth() 与.outerHeight(); 上边3对是jQuery里宽高相关的属性:下边3对是与宽高相关的属性. .scrollTop() 与.scro

常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)

来自:http://www.xueit.com/js/show-6015-1.aspx 本文列出jquery一些应用小技巧,比如有禁止右键点击.隐藏搜索文本框文字.在新窗口中打开链接.检测浏览器.预加载图片.页面样式切换.所有列等高.动态控制页面字体大小.获得鼠标指针的X值Y值.验证元素是否为空.替换元素.延迟加载.验证元素是否存在于Jquery集合中.使DIV可点击.克隆对象.使元素居中.计算元素个数.使用Google主机上的Jquery类库.禁用Jquery效果.解决Jquery类库与其他J

js对象浅拷贝和深拷贝详解

js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 var

jQuery选择器代码详解(四)——Expr.preFilter

原创文章,转载请注明出处,多谢! Expr.preFilter是tokenize方法中对ATTR.CHILD.PSEUDO三种选择器进行预处理的方法.具体如下: Expr.preFilter : { "ATTR" : function(match) { /* * 完成如下任务: * 1.属性名称解码 * 2.属性值解码 * 3.若判断符为~=,则在属性值两边加上空格 * 4.返回最终的mtach对象 * * match[1]表示属性名称, * match[1].replace(rune

jQuery选择器代码详解(五)——实例说明tokenize的解析过程

原创文章,转载请写明出处,多谢! 以下分析基于jQuery-1.10.2.js版本. 下面将以$("div:not(.class:contain('span')):eq(3)")为例,说明tokenize和preFilter各段代码是如何协调完成解析的.若想了解tokenize方法和preFilter类的每行代码的详细解释,请参看如下两篇文章: jQuery选择器代码详解(三)--tokenize方法 jQuery选择器代码详解(四)--Expr.preFilter 下面是tokeni

jQuery的观察者模式详解 转载

jQuery的观察者模式详解 投稿:hebedich 本文主要是介绍了jQuery中on方法及trigger方法,以及围绕这个方法来体验的观察者模式,是篇非常不错的文章,对我们理解观察者模式很有帮助. undefined undefined ■ on方法绑定内置事件,自然触发 比如,我们给页面的body元素绑定一个click事件,这样写. <head> <meta http-equiv="Content-Type" content="text/html; c

jQuery解析json详解

jQuery解析Json详解:http://www.cnblogs.com/madyina/p/3448518.html JSON简介及用法:http://bbs.html5cn.org/thread-87020-1-1.html 不建议使用eval()函数,因为eval()接受任意的字符串,并当作JavaScript代码来处理,这个机制已经有安全隐患了 var str='{ "name": "John" }'; var obj = eval  ('(' + str

jQuery插件开发及jQuery.extend函数详解和jQuery.fn与jQuery.prototype区别

一.jQuery插件开发分为两种:  1.类级别: 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $.extend({ add:function(a,b){return a+b;} , minus:function(a,b){return a-b;} }); var i = $.add(3,2); var j = $.minus(3,2); 2.对象级别: 对